Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 12114820 authored by Behnam Heydarshahi's avatar Behnam Heydarshahi Committed by Android (Google) Code Review
Browse files

Merge "Revert "Modes Tile: load default drawable in mapper"" into main

parents 9d215ab7 e7ef1867
Loading
Loading
Loading
Loading
+8 −9
Original line number Diff line number Diff line
@@ -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()
    }
+16 −30
Original line number Diff line number Diff line
@@ -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)
    }
}
+3 −8
Original line number Diff line number Diff line
@@ -22,19 +22,14 @@ 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)
        }
        }
        is Icon.Resource -> {
            QSTileImpl.ResourceIcon.get(this.res)
        }
+1 −1
Original line number Diff line number Diff line
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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)
        }
    }

Loading