Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt +9 −8 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.internal.R import com.android.settingslib.notification.modes.TestModeBuilder import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestableContext import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.asIcon import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues Loading Loading @@ -144,13 +145,13 @@ class ModesTileDataInteractorTest : SysuiTestCase() { // Tile starts with the generic Modes icon. runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Add an inactive mode -> Still modes icon zenModeRepository.addMode(id = "Mode", active = false) runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Add an active mode with a default icon: icon should be the mode icon, and the Loading @@ -158,7 +159,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { zenModeRepository.addMode( id = "Bedtime with default icon", type = AutomaticZenRule.TYPE_BEDTIME, active = true active = true, ) runCurrent() assertThat(tileData?.icon).isEqualTo(BEDTIME_ICON) Loading Loading @@ -189,7 +190,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { // Deactivate remaining mode: back to the default modes icon zenModeRepository.deactivateMode("Driving with custom icon") runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } Loading @@ -204,18 +205,18 @@ class ModesTileDataInteractorTest : SysuiTestCase() { ) runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Activate a Mode -> Icon doesn't change. zenModeRepository.addMode(id = "Mode", active = true) runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) zenModeRepository.deactivateMode(id = "Mode") runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } Loading Loading @@ -263,7 +264,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { val BEDTIME_DRAWABLE = TestStubDrawable("bedtime") val CUSTOM_DRAWABLE = TestStubDrawable("custom") val MODES_ICON = MODES_DRAWABLE.asIcon() val MODES_RESOURCE_ICON = Icon.Resource(MODES_DRAWABLE_ID, null) val BEDTIME_ICON = BEDTIME_DRAWABLE.asIcon() val CUSTOM_ICON = CUSTOM_DRAWABLE.asIcon() } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapperTest.kt +30 −16 Original line number Diff line number Diff line Loading @@ -22,7 +22,9 @@ import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.asIcon import com.android.systemui.qs.tiles.ModesTile import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesTileModel import com.android.systemui.qs.tiles.viewmodel.QSTileConfigTestBuilder import com.android.systemui.qs.tiles.viewmodel.QSTileState Loading Loading @@ -51,6 +53,11 @@ class ModesTileMapperTest : SysuiTestCase() { .apply { addOverride(R.drawable.qs_dnd_icon_on, TestStubDrawable()) addOverride(R.drawable.qs_dnd_icon_off, TestStubDrawable()) addOverride( ModesTile.ICON_RES_ID, TestStubDrawable(ModesTile.ICON_RES_ID.toString()), ) addOverride(123, TestStubDrawable("123")) } .resources, context.theme, Loading @@ -59,12 +66,7 @@ class ModesTileMapperTest : SysuiTestCase() { @Test fun inactiveState() { val icon = TestStubDrawable("res123").asIcon() val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, ) val model = ModesTileModel(isActivated = false, activeModes = emptyList(), icon = icon) val state = underTest.map(config, model) Loading @@ -76,12 +78,7 @@ class ModesTileMapperTest : SysuiTestCase() { @Test fun activeState_oneMode() { val icon = TestStubDrawable("res123").asIcon() val model = ModesTileModel( isActivated = true, activeModes = listOf("DND"), icon = icon, ) val model = ModesTileModel(isActivated = true, activeModes = listOf("DND"), icon = icon) val state = underTest.map(config, model) Loading @@ -108,19 +105,36 @@ class ModesTileMapperTest : SysuiTestCase() { } @Test fun state_modelHasIconResId_includesIconResId() { val icon = TestStubDrawable("res123").asIcon() fun resourceIconModel_whenResIdsIdentical_mapsToLoadedIconWithInputResId() { val icon = Icon.Resource(123, null) val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, iconResId = 123 iconResId = 123, ) val state = underTest.map(config, model) assertThat(state.icon()).isEqualTo(icon) assertThat(state.icon()).isEqualTo(TestStubDrawable("123").asIcon()) assertThat(state.iconRes).isEqualTo(123) } @Test fun resourceIconModel_whenResIdsNonIdentical_mapsToLoadedIconWithIconResourceId() { val icon = Icon.Resource(123, null) val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, iconResId = 321, // Note: NOT 123. This will be ignored. ) val state = underTest.map(config, model) assertThat(state.icon()).isEqualTo(TestStubDrawable("123").asIcon()) assertThat(state.iconRes).isEqualTo(123) } } packages/SystemUI/src/com/android/systemui/qs/QSTileIcon.kt +8 −3 Original line number Diff line number Diff line Loading @@ -22,14 +22,19 @@ import com.android.systemui.qs.tileimpl.QSTileImpl /** * Creates a [QSTile.Icon] from an [Icon]. * * [Icon.Loaded] -> [QSTileImpl.DrawableIcon] * * [Icon.Loaded] && [resId] null -> [QSTileImpl.DrawableIcon] * * [Icon.Loaded] && [resId] available -> [QSTileImpl.DrawableIconWithRes] * * [Icon.Resource] -> [QSTileImpl.ResourceIcon] */ fun Icon.asQSTileIcon(): QSTile.Icon { fun Icon.asQSTileIcon(resId: Int?): QSTile.Icon { return when (this) { is Icon.Loaded -> { if (resId != null) { QSTileImpl.DrawableIconWithRes(this.drawable, resId) } else { QSTileImpl.DrawableIcon(this.drawable) } } is Icon.Resource -> { QSTileImpl.ResourceIcon.get(this.res) } Loading packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt +1 −1 Original line number Diff line number Diff line Loading @@ -121,7 +121,7 @@ constructor( state?.apply { this.state = tileState.activationState.legacyState val tileStateIcon = tileState.icon() icon = tileStateIcon?.asQSTileIcon() ?: ResourceIcon.get(ICON_RES_ID) icon = tileStateIcon?.asQSTileIcon(tileState.iconRes) ?: ResourceIcon.get(ICON_RES_ID) label = tileLabel secondaryLabel = tileState.secondaryLabel contentDescription = tileState.contentDescription Loading packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt +3 −3 Original line number Diff line number Diff line Loading @@ -76,14 +76,14 @@ constructor( } else { return ModesTileModel( isActivated = activeModes.isAnyActive(), icon = context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), icon = Icon.Resource(ModesTile.ICON_RES_ID, null), iconResId = ModesTile.ICON_RES_ID, activeModes = activeModes.modeNames, ) } } private data class TileIcon(val icon: Icon.Loaded, val resId: Int?) private data class TileIcon(val icon: Icon, val resId: Int?) private fun getTileIcon(activeMode: ZenModeInfo?): TileIcon { return if (activeMode != null) { Loading @@ -94,7 +94,7 @@ constructor( TileIcon(activeMode.icon.drawable.asIcon(), null) } } else { TileIcon(context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), ModesTile.ICON_RES_ID) TileIcon(Icon.Resource(ModesTile.ICON_RES_ID, null), ModesTile.ICON_RES_ID) } } Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt +9 −8 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.internal.R import com.android.settingslib.notification.modes.TestModeBuilder import com.android.systemui.SysuiTestCase import com.android.systemui.SysuiTestableContext import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.asIcon import com.android.systemui.coroutines.collectLastValue import com.android.systemui.coroutines.collectValues Loading Loading @@ -144,13 +145,13 @@ class ModesTileDataInteractorTest : SysuiTestCase() { // Tile starts with the generic Modes icon. runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Add an inactive mode -> Still modes icon zenModeRepository.addMode(id = "Mode", active = false) runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Add an active mode with a default icon: icon should be the mode icon, and the Loading @@ -158,7 +159,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { zenModeRepository.addMode( id = "Bedtime with default icon", type = AutomaticZenRule.TYPE_BEDTIME, active = true active = true, ) runCurrent() assertThat(tileData?.icon).isEqualTo(BEDTIME_ICON) Loading Loading @@ -189,7 +190,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { // Deactivate remaining mode: back to the default modes icon zenModeRepository.deactivateMode("Driving with custom icon") runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } Loading @@ -204,18 +205,18 @@ class ModesTileDataInteractorTest : SysuiTestCase() { ) runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Activate a Mode -> Icon doesn't change. zenModeRepository.addMode(id = "Mode", active = true) runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) zenModeRepository.deactivateMode(id = "Mode") runCurrent() assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } Loading Loading @@ -263,7 +264,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { val BEDTIME_DRAWABLE = TestStubDrawable("bedtime") val CUSTOM_DRAWABLE = TestStubDrawable("custom") val MODES_ICON = MODES_DRAWABLE.asIcon() val MODES_RESOURCE_ICON = Icon.Resource(MODES_DRAWABLE_ID, null) val BEDTIME_ICON = BEDTIME_DRAWABLE.asIcon() val CUSTOM_ICON = CUSTOM_DRAWABLE.asIcon() } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapperTest.kt +30 −16 Original line number Diff line number Diff line Loading @@ -22,7 +22,9 @@ import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.common.shared.model.Icon import com.android.systemui.common.shared.model.asIcon import com.android.systemui.qs.tiles.ModesTile import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesTileModel import com.android.systemui.qs.tiles.viewmodel.QSTileConfigTestBuilder import com.android.systemui.qs.tiles.viewmodel.QSTileState Loading Loading @@ -51,6 +53,11 @@ class ModesTileMapperTest : SysuiTestCase() { .apply { addOverride(R.drawable.qs_dnd_icon_on, TestStubDrawable()) addOverride(R.drawable.qs_dnd_icon_off, TestStubDrawable()) addOverride( ModesTile.ICON_RES_ID, TestStubDrawable(ModesTile.ICON_RES_ID.toString()), ) addOverride(123, TestStubDrawable("123")) } .resources, context.theme, Loading @@ -59,12 +66,7 @@ class ModesTileMapperTest : SysuiTestCase() { @Test fun inactiveState() { val icon = TestStubDrawable("res123").asIcon() val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, ) val model = ModesTileModel(isActivated = false, activeModes = emptyList(), icon = icon) val state = underTest.map(config, model) Loading @@ -76,12 +78,7 @@ class ModesTileMapperTest : SysuiTestCase() { @Test fun activeState_oneMode() { val icon = TestStubDrawable("res123").asIcon() val model = ModesTileModel( isActivated = true, activeModes = listOf("DND"), icon = icon, ) val model = ModesTileModel(isActivated = true, activeModes = listOf("DND"), icon = icon) val state = underTest.map(config, model) Loading @@ -108,19 +105,36 @@ class ModesTileMapperTest : SysuiTestCase() { } @Test fun state_modelHasIconResId_includesIconResId() { val icon = TestStubDrawable("res123").asIcon() fun resourceIconModel_whenResIdsIdentical_mapsToLoadedIconWithInputResId() { val icon = Icon.Resource(123, null) val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, iconResId = 123 iconResId = 123, ) val state = underTest.map(config, model) assertThat(state.icon()).isEqualTo(icon) assertThat(state.icon()).isEqualTo(TestStubDrawable("123").asIcon()) assertThat(state.iconRes).isEqualTo(123) } @Test fun resourceIconModel_whenResIdsNonIdentical_mapsToLoadedIconWithIconResourceId() { val icon = Icon.Resource(123, null) val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, iconResId = 321, // Note: NOT 123. This will be ignored. ) val state = underTest.map(config, model) assertThat(state.icon()).isEqualTo(TestStubDrawable("123").asIcon()) assertThat(state.iconRes).isEqualTo(123) } }
packages/SystemUI/src/com/android/systemui/qs/QSTileIcon.kt +8 −3 Original line number Diff line number Diff line Loading @@ -22,14 +22,19 @@ import com.android.systemui.qs.tileimpl.QSTileImpl /** * Creates a [QSTile.Icon] from an [Icon]. * * [Icon.Loaded] -> [QSTileImpl.DrawableIcon] * * [Icon.Loaded] && [resId] null -> [QSTileImpl.DrawableIcon] * * [Icon.Loaded] && [resId] available -> [QSTileImpl.DrawableIconWithRes] * * [Icon.Resource] -> [QSTileImpl.ResourceIcon] */ fun Icon.asQSTileIcon(): QSTile.Icon { fun Icon.asQSTileIcon(resId: Int?): QSTile.Icon { return when (this) { is Icon.Loaded -> { if (resId != null) { QSTileImpl.DrawableIconWithRes(this.drawable, resId) } else { QSTileImpl.DrawableIcon(this.drawable) } } is Icon.Resource -> { QSTileImpl.ResourceIcon.get(this.res) } Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt +1 −1 Original line number Diff line number Diff line Loading @@ -121,7 +121,7 @@ constructor( state?.apply { this.state = tileState.activationState.legacyState val tileStateIcon = tileState.icon() icon = tileStateIcon?.asQSTileIcon() ?: ResourceIcon.get(ICON_RES_ID) icon = tileStateIcon?.asQSTileIcon(tileState.iconRes) ?: ResourceIcon.get(ICON_RES_ID) label = tileLabel secondaryLabel = tileState.secondaryLabel contentDescription = tileState.contentDescription Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt +3 −3 Original line number Diff line number Diff line Loading @@ -76,14 +76,14 @@ constructor( } else { return ModesTileModel( isActivated = activeModes.isAnyActive(), icon = context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), icon = Icon.Resource(ModesTile.ICON_RES_ID, null), iconResId = ModesTile.ICON_RES_ID, activeModes = activeModes.modeNames, ) } } private data class TileIcon(val icon: Icon.Loaded, val resId: Int?) private data class TileIcon(val icon: Icon, val resId: Int?) private fun getTileIcon(activeMode: ZenModeInfo?): TileIcon { return if (activeMode != null) { Loading @@ -94,7 +94,7 @@ constructor( TileIcon(activeMode.icon.drawable.asIcon(), null) } } else { TileIcon(context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), ModesTile.ICON_RES_ID) TileIcon(Icon.Resource(ModesTile.ICON_RES_ID, null), ModesTile.ICON_RES_ID) } } Loading