Loading packages/SettingsLib/src/com/android/settingslib/notification/data/repository/FakeZenModeRepository.kt +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ class FakeZenModeRepository : ZenModeRepository { override val modes: Flow<List<ZenMode>> get() = mutableModesFlow.asStateFlow() override fun getModes(): List<ZenMode> = mutableModesFlow.value private val activeModesDurations = mutableMapOf<String, Duration?>() init { Loading packages/SettingsLib/src/com/android/settingslib/notification/data/repository/ZenModeRepository.kt +11 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ interface ZenModeRepository { /** A list of all existing priority modes. */ val modes: Flow<List<ZenMode>> fun getModes(): List<ZenMode> fun activateMode(zenMode: ZenMode, duration: Duration? = null) fun deactivateMode(zenMode: ZenMode) Loading Loading @@ -184,6 +186,15 @@ class ZenModeRepositoryImpl( } } /** * Gets the current list of [ZenMode] instances according to the backend. * * This is necessary, and cannot be supplanted by making [modes] a StateFlow, because it will be * called whenever we know or suspect that [modes] may not have caught up to the latest data * (such as right after a user switch). */ override fun getModes(): List<ZenMode> = backend.modes override fun activateMode(zenMode: ZenMode, duration: Duration?) { backend.activateMode(zenMode, duration) } Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/data/repository/ZenModeRepositoryTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -199,6 +199,15 @@ class ZenModeRepositoryTest { } } @EnableFlags(android.app.Flags.FLAG_MODES_UI) @Test fun getModes_returnsModes() { val modesList = listOf(TestModeBuilder().setId("One").build()) `when`(zenModesBackend.modes).thenReturn(modesList) assertThat(underTest.getModes()).isEqualTo(modesList) } private fun triggerIntent(action: String, extras: Map<String, Parcelable>? = null) { verify(context).registerReceiver(receiverCaptor.capture(), any(), any(), any()) val intent = Intent(action) Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt +33 −0 Original line number Diff line number Diff line Loading @@ -206,6 +206,39 @@ class ModesTileDataInteractorTest : SysuiTestCase() { assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } @EnableFlags(Flags.FLAG_MODES_UI) @Test fun getCurrentTileModel_returnsActiveModes() = runTest { var tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isFalse() assertThat(tileData.activeModes).isEmpty() // Add active mode zenModeRepository.addMode(id = "One", active = true) tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isTrue() assertThat(tileData.activeModes).containsExactly("Mode One") // Add an inactive mode: state hasn't changed zenModeRepository.addMode(id = "Two", active = false) tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isTrue() assertThat(tileData.activeModes).containsExactly("Mode One") // Add another active mode zenModeRepository.addMode(id = "Three", active = true) tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isTrue() assertThat(tileData.activeModes).containsExactly("Mode One", "Mode Three").inOrder() // Remove a mode and deactivate the other zenModeRepository.removeMode("One") zenModeRepository.deactivateMode("Three") tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isFalse() assertThat(tileData.activeModes).isEmpty() } private companion object { val TEST_USER = UserHandle.of(1)!! Loading packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt +30 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,36 @@ class ZenModeInteractorTest : SysuiTestCase() { assertThat(activeModes?.mainMode).isNull() } @Test fun getActiveModes_computesMainActiveMode() = runTest { zenModeRepository.addMode(id = "Bedtime", type = AutomaticZenRule.TYPE_BEDTIME) zenModeRepository.addMode(id = "Other", type = AutomaticZenRule.TYPE_OTHER) var activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).hasSize(0) assertThat(activeModes.mainMode).isNull() zenModeRepository.activateMode("Other") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).containsExactly("Mode Other") assertThat(activeModes.mainMode?.name).isEqualTo("Mode Other") zenModeRepository.activateMode("Bedtime") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).containsExactly("Mode Bedtime", "Mode Other").inOrder() assertThat(activeModes.mainMode?.name).isEqualTo("Mode Bedtime") zenModeRepository.deactivateMode("Other") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).containsExactly("Mode Bedtime") assertThat(activeModes.mainMode?.name).isEqualTo("Mode Bedtime") zenModeRepository.deactivateMode("Bedtime") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).hasSize(0) assertThat(activeModes.mainMode).isNull() } @Test fun mainActiveMode_flows() = testScope.runTest { Loading Loading
packages/SettingsLib/src/com/android/settingslib/notification/data/repository/FakeZenModeRepository.kt +2 −0 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ class FakeZenModeRepository : ZenModeRepository { override val modes: Flow<List<ZenMode>> get() = mutableModesFlow.asStateFlow() override fun getModes(): List<ZenMode> = mutableModesFlow.value private val activeModesDurations = mutableMapOf<String, Duration?>() init { Loading
packages/SettingsLib/src/com/android/settingslib/notification/data/repository/ZenModeRepository.kt +11 −0 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ interface ZenModeRepository { /** A list of all existing priority modes. */ val modes: Flow<List<ZenMode>> fun getModes(): List<ZenMode> fun activateMode(zenMode: ZenMode, duration: Duration? = null) fun deactivateMode(zenMode: ZenMode) Loading Loading @@ -184,6 +186,15 @@ class ZenModeRepositoryImpl( } } /** * Gets the current list of [ZenMode] instances according to the backend. * * This is necessary, and cannot be supplanted by making [modes] a StateFlow, because it will be * called whenever we know or suspect that [modes] may not have caught up to the latest data * (such as right after a user switch). */ override fun getModes(): List<ZenMode> = backend.modes override fun activateMode(zenMode: ZenMode, duration: Duration?) { backend.activateMode(zenMode, duration) } Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/notification/data/repository/ZenModeRepositoryTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -199,6 +199,15 @@ class ZenModeRepositoryTest { } } @EnableFlags(android.app.Flags.FLAG_MODES_UI) @Test fun getModes_returnsModes() { val modesList = listOf(TestModeBuilder().setId("One").build()) `when`(zenModesBackend.modes).thenReturn(modesList) assertThat(underTest.getModes()).isEqualTo(modesList) } private fun triggerIntent(action: String, extras: Map<String, Parcelable>? = null) { verify(context).registerReceiver(receiverCaptor.capture(), any(), any(), any()) val intent = Intent(action) Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/modes/domain/interactor/ModesTileDataInteractorTest.kt +33 −0 Original line number Diff line number Diff line Loading @@ -206,6 +206,39 @@ class ModesTileDataInteractorTest : SysuiTestCase() { assertThat(tileData?.iconResId).isEqualTo(MODES_DRAWABLE_ID) } @EnableFlags(Flags.FLAG_MODES_UI) @Test fun getCurrentTileModel_returnsActiveModes() = runTest { var tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isFalse() assertThat(tileData.activeModes).isEmpty() // Add active mode zenModeRepository.addMode(id = "One", active = true) tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isTrue() assertThat(tileData.activeModes).containsExactly("Mode One") // Add an inactive mode: state hasn't changed zenModeRepository.addMode(id = "Two", active = false) tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isTrue() assertThat(tileData.activeModes).containsExactly("Mode One") // Add another active mode zenModeRepository.addMode(id = "Three", active = true) tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isTrue() assertThat(tileData.activeModes).containsExactly("Mode One", "Mode Three").inOrder() // Remove a mode and deactivate the other zenModeRepository.removeMode("One") zenModeRepository.deactivateMode("Three") tileData = underTest.getCurrentTileModel() assertThat(tileData.isActivated).isFalse() assertThat(tileData.activeModes).isEmpty() } private companion object { val TEST_USER = UserHandle.of(1)!! Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt +30 −0 Original line number Diff line number Diff line Loading @@ -256,6 +256,36 @@ class ZenModeInteractorTest : SysuiTestCase() { assertThat(activeModes?.mainMode).isNull() } @Test fun getActiveModes_computesMainActiveMode() = runTest { zenModeRepository.addMode(id = "Bedtime", type = AutomaticZenRule.TYPE_BEDTIME) zenModeRepository.addMode(id = "Other", type = AutomaticZenRule.TYPE_OTHER) var activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).hasSize(0) assertThat(activeModes.mainMode).isNull() zenModeRepository.activateMode("Other") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).containsExactly("Mode Other") assertThat(activeModes.mainMode?.name).isEqualTo("Mode Other") zenModeRepository.activateMode("Bedtime") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).containsExactly("Mode Bedtime", "Mode Other").inOrder() assertThat(activeModes.mainMode?.name).isEqualTo("Mode Bedtime") zenModeRepository.deactivateMode("Other") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).containsExactly("Mode Bedtime") assertThat(activeModes.mainMode?.name).isEqualTo("Mode Bedtime") zenModeRepository.deactivateMode("Bedtime") activeModes = underTest.getActiveModes() assertThat(activeModes.modeNames).hasSize(0) assertThat(activeModes.mainMode).isNull() } @Test fun mainActiveMode_flows() = testScope.runTest { Loading