diff options
7 files changed, 43 insertions, 78 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt index 1d80826d0b45..de3dc5730421 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt @@ -28,7 +28,6 @@ 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 @@ -145,13 +144,13 @@ class ModesTileDataInteractorTest : SysuiTestCase() { // Tile starts with the generic Modes icon. runCurrent() - assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) + assertThat(tileData?.icon).isEqualTo(MODES_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_RESOURCE_ICON) + assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) // Add an active mode with a default icon: icon should be the mode icon, and the @@ -159,7 +158,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) @@ -190,7 +189,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_RESOURCE_ICON) + assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } @@ -205,18 +204,18 @@ class ModesTileDataInteractorTest : SysuiTestCase() { ) runCurrent() - assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) + assertThat(tileData?.icon).isEqualTo(MODES_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_RESOURCE_ICON) + assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) zenModeRepository.deactivateMode(id = "Mode") runCurrent() - assertThat(tileData?.icon).isEqualTo(MODES_RESOURCE_ICON) + assertThat(tileData?.icon).isEqualTo(MODES_ICON) assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } @@ -264,7 +263,7 @@ class ModesTileDataInteractorTest : SysuiTestCase() { val BEDTIME_DRAWABLE = TestStubDrawable("bedtime") val CUSTOM_DRAWABLE = TestStubDrawable("custom") - val MODES_RESOURCE_ICON = Icon.Resource(MODES_DRAWABLE_ID, null) + val MODES_ICON = MODES_DRAWABLE.asIcon() val BEDTIME_ICON = BEDTIME_DRAWABLE.asIcon() val CUSTOM_ICON = CUSTOM_DRAWABLE.asIcon() } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapperTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapperTest.kt index a58cb9ce25b3..c3d45dbbd09a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapperTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapperTest.kt @@ -22,9 +22,7 @@ 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 @@ -53,11 +51,6 @@ 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, @@ -66,7 +59,12 @@ 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) @@ -78,7 +76,12 @@ 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) @@ -105,36 +108,19 @@ class ModesTileMapperTest : SysuiTestCase() { } @Test - fun resourceIconModel_whenResIdsIdentical_mapsToLoadedIconWithInputResId() { - val icon = Icon.Resource(123, null) - val model = - ModesTileModel( - isActivated = false, - activeModes = emptyList(), - icon = icon, - iconResId = 123, - ) - - val state = underTest.map(config, model) - - assertThat(state.icon()).isEqualTo(TestStubDrawable("123").asIcon()) - assertThat(state.iconRes).isEqualTo(123) - } - - @Test - fun resourceIconModel_whenResIdsNonIdentical_mapsToLoadedIconWithIconResourceId() { - val icon = Icon.Resource(123, null) + fun state_modelHasIconResId_includesIconResId() { + val icon = TestStubDrawable("res123").asIcon() val model = ModesTileModel( isActivated = false, activeModes = emptyList(), icon = icon, - iconResId = 321, // Note: NOT 123. This will be ignored. + iconResId = 123 ) val state = underTest.map(config, model) - assertThat(state.icon()).isEqualTo(TestStubDrawable("123").asIcon()) + assertThat(state.icon()).isEqualTo(icon) assertThat(state.iconRes).isEqualTo(123) } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileIcon.kt b/packages/SystemUI/src/com/android/systemui/qs/QSTileIcon.kt index 62694ceffda8..ef7e7eb59898 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSTileIcon.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileIcon.kt @@ -22,18 +22,13 @@ import com.android.systemui.qs.tileimpl.QSTileImpl /** * Creates a [QSTile.Icon] from an [Icon]. - * * [Icon.Loaded] && [resId] null -> [QSTileImpl.DrawableIcon] - * * [Icon.Loaded] && [resId] available -> [QSTileImpl.DrawableIconWithRes] + * * [Icon.Loaded] -> [QSTileImpl.DrawableIcon] * * [Icon.Resource] -> [QSTileImpl.ResourceIcon] */ -fun Icon.asQSTileIcon(resId: Int?): QSTile.Icon { +fun Icon.asQSTileIcon(): QSTile.Icon { return when (this) { is Icon.Loaded -> { - if (resId != null) { - QSTileImpl.DrawableIconWithRes(this.drawable, resId) - } else { - QSTileImpl.DrawableIcon(this.drawable) - } + QSTileImpl.DrawableIcon(this.drawable) } is Icon.Resource -> { QSTileImpl.ResourceIcon.get(this.res) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt index 3bbe624595d9..cf2db6c66ce7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ModesTile.kt @@ -121,7 +121,7 @@ constructor( state?.apply { this.state = tileState.activationState.legacyState val tileStateIcon = tileState.icon() - icon = tileStateIcon?.asQSTileIcon(tileState.iconRes) ?: ResourceIcon.get(ICON_RES_ID) + icon = tileStateIcon?.asQSTileIcon() ?: ResourceIcon.get(ICON_RES_ID) label = tileLabel secondaryLabel = tileState.secondaryLabel contentDescription = tileState.contentDescription diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt index cc14e71986f5..3e44258229f9 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractor.kt @@ -78,14 +78,14 @@ constructor( } else { return ModesTileModel( isActivated = activeModes.isAnyActive(), - icon = Icon.Resource(ModesTile.ICON_RES_ID, null), + icon = context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), iconResId = ModesTile.ICON_RES_ID, activeModes = activeModes.modeNames, ) } } - private data class TileIcon(val icon: Icon, val resId: Int?) + private data class TileIcon(val icon: Icon.Loaded, val resId: Int?) private fun getTileIcon(activeMode: ZenModeInfo?): TileIcon { return if (activeMode != null) { @@ -96,7 +96,7 @@ constructor( TileIcon(activeMode.icon.drawable.asIcon(), null) } } else { - TileIcon(Icon.Resource(ModesTile.ICON_RES_ID, null), ModesTile.ICON_RES_ID) + TileIcon(context.getDrawable(ModesTile.ICON_RES_ID)!!.asIcon(), ModesTile.ICON_RES_ID) } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/model/ModesTileModel.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/model/ModesTileModel.kt index 9c31e322dfd2..db4812342050 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/model/ModesTileModel.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/domain/model/ModesTileModel.kt @@ -21,12 +21,12 @@ import com.android.systemui.common.shared.model.Icon data class ModesTileModel( val isActivated: Boolean, val activeModes: List<String>, - val icon: Icon, + val icon: Icon.Loaded, /** * Resource id corresponding to [icon]. Will only be present if it's know to correspond to a * resource with a known id in SystemUI (such as resources from `android.R`, * `com.android.internal.R`, or `com.android.systemui.res` itself). */ - val iconResId: Int? = null, + val iconResId: Int? = null ) diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapper.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapper.kt index 537b56bccae8..69da3134314b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapper.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/impl/modes/ui/ModesTileMapper.kt @@ -18,9 +18,7 @@ package com.android.systemui.qs.tiles.impl.modes.ui import android.content.res.Resources import android.icu.text.MessageFormat -import android.util.Log import android.widget.Button -import com.android.systemui.common.shared.model.Icon import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.qs.tiles.base.interactor.QSTileDataToStateMapper import com.android.systemui.qs.tiles.impl.modes.domain.model.ModesTileModel @@ -32,30 +30,14 @@ import javax.inject.Inject class ModesTileMapper @Inject -constructor(@Main private val resources: Resources, val theme: Resources.Theme) : - QSTileDataToStateMapper<ModesTileModel> { +constructor( + @Main private val resources: Resources, + val theme: Resources.Theme, +) : QSTileDataToStateMapper<ModesTileModel> { override fun map(config: QSTileConfig, data: ModesTileModel): QSTileState = QSTileState.build(resources, theme, config.uiConfig) { - val loadedIcon: Icon.Loaded = - when (val dataIcon = data.icon) { - is Icon.Resource -> { - if (data.iconResId != dataIcon.res) { - Log.wtf( - "ModesTileMapper", - "Icon.Resource.res & iconResId are not identical", - ) - } - iconRes = dataIcon.res - Icon.Loaded(resources.getDrawable(dataIcon.res, theme), null) - } - is Icon.Loaded -> { - iconRes = data.iconResId - dataIcon - } - } - - icon = { loadedIcon } - + iconRes = data.iconResId + icon = { data.icon } activationState = if (data.isActivated) { QSTileState.ActivationState.ACTIVE @@ -65,7 +47,10 @@ constructor(@Main private val resources: Resources, val theme: Resources.Theme) secondaryLabel = getModesStatus(data, resources) contentDescription = "$label. $secondaryLabel" supportedActions = - setOf(QSTileState.UserAction.CLICK, QSTileState.UserAction.LONG_CLICK) + setOf( + QSTileState.UserAction.CLICK, + QSTileState.UserAction.LONG_CLICK, + ) sideViewIcon = QSTileState.SideViewIcon.Chevron expandedAccessibilityClass = Button::class } |