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

Commit b641913f authored by Matías Hernández's avatar Matías Hernández
Browse files

Show expected end of DND on tile subtitle, if available

Bug: 401217520
Test: atest & manual
Flag: android.app.modes_ui_dnd_tile
Change-Id: I8f8c9ae18105ade997237d9e63db5e6418309dea
parent 90445668
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -114,14 +114,19 @@ class FakeZenModeRepository : ZenModeRepository {
        activeModesDurations.remove(id)
    }

    // Update the active state while maintaining the mode's position in the list
    /** Updates a [ZenMode]'s active state, preserving its position in the list. */
    private fun updateModeActiveState(id: String, isActive: Boolean) {
        updateMode(id) { TestModeBuilder(it).setActive(isActive).build() }
    }

    /** Updates a [ZenMode], preserving its position in the list. */
    fun updateMode(id: String, update: (original: ZenMode) -> ZenMode) {
        val modes = mutableModesFlow.value.toMutableList()
        val index = modes.indexOfFirst { it.id == id }
        if (index < 0) {
            throw IllegalArgumentException("mode $id not found")
        }
        modes[index] = TestModeBuilder(modes[index]).setActive(isActive).build()
        modes[index] = update(modes[index])
        mutableModesFlow.value = modes
    }
}
+3 −3
Original line number Diff line number Diff line
@@ -184,12 +184,12 @@ class ModesDndTileTest : SysuiTestCase() {
                    state = Tile.STATE_INACTIVE
                    secondaryLabel = "Old secondary label"
                }
            val model = ModesDndTileModel(isActivated = true)
            val model = ModesDndTileModel(isActivated = true, extraStatus = "Until 14:30")

            underTest.handleUpdateState(tileState, model)

            assertThat(tileState.state).isEqualTo(Tile.STATE_ACTIVE)
            assertThat(tileState.secondaryLabel).isEqualTo("On")
            assertThat(tileState.secondaryLabel).isEqualTo("Until 14:30")
        }

    @Test
@@ -206,6 +206,6 @@ class ModesDndTileTest : SysuiTestCase() {
            underTest.handleUpdateState(tileState, null)

            assertThat(tileState.state).isEqualTo(Tile.STATE_ACTIVE)
            assertThat(tileState.secondaryLabel).isEqualTo("On")
            assertThat(tileState.secondaryLabel).isEqualTo(null) // Tile will use default On text
        }
}
+4 −4
Original line number Diff line number Diff line
@@ -79,7 +79,7 @@ class ModesDndTileUserActionInteractorTest : SysuiTestCase() {
            zenModeRepository.activateMode(MANUAL_DND)
            assertThat(dndMode?.isActive).isTrue()

            underTest.handleInput(QSTileInputTestKtx.click(data = ModesDndTileModel(true)))
            underTest.handleInput(QSTileInputTestKtx.click(data = ModesDndTileModel(true, null)))

            assertThat(dndMode?.isActive).isFalse()
        }
@@ -90,7 +90,7 @@ class ModesDndTileUserActionInteractorTest : SysuiTestCase() {
            val dndMode by collectLastValue(zenModeInteractor.dndMode)
            assertThat(dndMode?.isActive).isFalse()

            underTest.handleInput(QSTileInputTestKtx.click(data = ModesDndTileModel(false)))
            underTest.handleInput(QSTileInputTestKtx.click(data = ModesDndTileModel(false, null)))

            assertThat(dndMode?.isActive).isTrue()
        }
@@ -101,7 +101,7 @@ class ModesDndTileUserActionInteractorTest : SysuiTestCase() {
            zenModeRepository.activateMode(MANUAL_DND)
            runCurrent()

            underTest.handleInput(QSTileInputTestKtx.longClick(ModesDndTileModel(true)))
            underTest.handleInput(QSTileInputTestKtx.longClick(ModesDndTileModel(true, null)))

            QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
                assertThat(it.intent.`package`).isEqualTo(SETTINGS_PACKAGE)
@@ -118,7 +118,7 @@ class ModesDndTileUserActionInteractorTest : SysuiTestCase() {
            zenModeRepository.deactivateMode(MANUAL_DND)
            runCurrent()

            underTest.handleInput(QSTileInputTestKtx.longClick(ModesDndTileModel(false)))
            underTest.handleInput(QSTileInputTestKtx.longClick(ModesDndTileModel(false, null)))

            QSTileIntentUserInputHandlerSubject.assertThat(inputHandler).handledOneIntentInput {
                assertThat(it.intent.`package`).isEqualTo(SETTINGS_PACKAGE)
+17 −4
Original line number Diff line number Diff line
@@ -58,23 +58,36 @@ class ModesDndTileMapperTest : SysuiTestCase() {

    @Test
    fun map_inactiveState() {
        val model = ModesDndTileModel(isActivated = false)
        val model = ModesDndTileModel(isActivated = false, extraStatus = null)

        val state = underTest.map(config, model)

        assertThat(state.activationState).isEqualTo(QSTileState.ActivationState.INACTIVE)
        assertThat((state.icon as Icon.Loaded).res).isEqualTo(R.drawable.qs_dnd_icon_off)
        assertThat(state.secondaryLabel).isEqualTo("Off")
        assertThat(state.secondaryLabel).isNull() // Will use default label for activationState
    }

    @Test
    fun map_activeState() {
        val model = ModesDndTileModel(isActivated = true)
        val model = ModesDndTileModel(isActivated = true, extraStatus = null)

        val state = underTest.map(config, model)

        assertThat(state.activationState).isEqualTo(QSTileState.ActivationState.ACTIVE)
        assertThat((state.icon as Icon.Loaded).res).isEqualTo(R.drawable.qs_dnd_icon_on)
        assertThat(state.secondaryLabel).isEqualTo("On")
        assertThat(state.secondaryLabel).isNull() // Will use default label for activationState
    }

    @Test
    fun map_activeStateWithExtraStatus() {
        val model = ModesDndTileModel(isActivated = true, extraStatus = "Until 14:00")

        val state = underTest.map(config, model)

        assertThat(state.activationState).isEqualTo(QSTileState.ActivationState.ACTIVE)
        assertThat((state.icon as Icon.Loaded).res).isEqualTo(R.drawable.qs_dnd_icon_on)
        assertThat(state.secondaryLabel).isEqualTo("Until 14:00")
        assertThat(state.contentDescription).isEqualTo("Do Not Disturb")
        assertThat(state.stateDescription).isEqualTo("Until 14:00")
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -121,6 +121,7 @@ constructor(
            label = tileLabel
            secondaryLabel = tileState.secondaryLabel
            contentDescription = tileState.contentDescription
            stateDescription = tileState.stateDescription
            expandedAccessibilityClassName = tileState.expandedAccessibilityClassName
        }
    }
Loading