diff options
5 files changed, 39 insertions, 29 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/FakeZenModeRepository.kt b/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/FakeZenModeRepository.kt index 23be7baa6496..496c3e6c74cc 100644 --- a/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/FakeZenModeRepository.kt +++ b/packages/SettingsLib/src/com/android/settingslib/notification/data/repository/FakeZenModeRepository.kt @@ -74,10 +74,6 @@ class FakeZenModeRepository : ZenModeRepository { mutableModesFlow.value = mutableModesFlow.value.filter { it.id != id } } - fun replaceMode(modeId: String, mode: ZenMode) { - mutableModesFlow.value = (mutableModesFlow.value.filter { it.id != modeId }) + mode - } - fun clearModes() { mutableModesFlow.value = listOf() } diff --git a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java index 6842d0a949af..abc163867248 100644 --- a/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java +++ b/packages/SettingsLib/src/com/android/settingslib/notification/modes/TestModeBuilder.java @@ -41,32 +41,24 @@ public class TestModeBuilder { private String mId; private AutomaticZenRule mRule; private ZenModeConfig.ZenRule mConfigZenRule; + private boolean mIsManualDnd; public static final ZenMode EXAMPLE = new TestModeBuilder().build(); - public static final ZenMode MANUAL_DND_ACTIVE = manualDnd(Uri.EMPTY, + public static final ZenMode MANUAL_DND_ACTIVE = manualDnd( INTERRUPTION_FILTER_PRIORITY, true); - public static final ZenMode MANUAL_DND_INACTIVE = manualDnd(Uri.EMPTY, + public static final ZenMode MANUAL_DND_INACTIVE = manualDnd( INTERRUPTION_FILTER_PRIORITY, false); @NonNull public static ZenMode manualDnd(@NotificationManager.InterruptionFilter int filter, boolean isActive) { - return manualDnd(Uri.EMPTY, filter, isActive); - } - - private static ZenMode manualDnd(Uri conditionId, - @NotificationManager.InterruptionFilter int filter, boolean isActive) { - return ZenMode.manualDndMode( - new AutomaticZenRule.Builder("Do Not Disturb", conditionId) - .setInterruptionFilter(filter) - .setType(AutomaticZenRule.TYPE_OTHER) - .setManualInvocationAllowed(true) - .setPackage(SystemZenRules.PACKAGE_ANDROID) - .setZenPolicy(new ZenPolicy.Builder().disallowAllSounds().build()) - .build(), - isActive); + return new TestModeBuilder() + .makeManualDnd() + .setInterruptionFilter(filter) + .setActive(isActive) + .build(); } public TestModeBuilder() { @@ -91,6 +83,10 @@ public class TestModeBuilder { mConfigZenRule.enabled = previous.getRule().isEnabled(); mConfigZenRule.pkg = previous.getRule().getPackageName(); setActive(previous.isActive()); + + if (previous.isManualDnd()) { + makeManualDnd(); + } } public TestModeBuilder setId(String id) { @@ -222,7 +218,25 @@ public class TestModeBuilder { return this; } + public TestModeBuilder makeManualDnd() { + mIsManualDnd = true; + // Set the "fixed" properties of a DND mode. Other things, such as policy/filter may be set + // separately or copied from a preexisting DND, so they are not overwritten here. + setId(ZenMode.MANUAL_DND_MODE_ID); + setName("Do Not Disturb"); + setType(AutomaticZenRule.TYPE_OTHER); + setManualInvocationAllowed(true); + setPackage(SystemZenRules.PACKAGE_ANDROID); + setConditionId(Uri.EMPTY); + return this; + } + public ZenMode build() { - return new ZenMode(mId, mRule, mConfigZenRule); + if (mIsManualDnd) { + return ZenMode.manualDndMode(mRule, mConfigZenRule.condition != null + && mConfigZenRule.condition.state == Condition.STATE_TRUE); + } else { + return new ZenMode(mId, mRule, mConfigZenRule); + } } } diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt index fcf4662be145..50ac26196978 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/data/quickaffordance/DoNotDisturbQuickAffordanceConfigTest.kt @@ -405,7 +405,8 @@ class DoNotDisturbQuickAffordanceConfigTest : SysuiTestCase() { testScope.runTest { val lockScreenState by collectLastValue(underTest.lockScreenState) - zenModeRepository.addMode(TestModeBuilder.MANUAL_DND_INACTIVE) + val manualDnd = TestModeBuilder.MANUAL_DND_INACTIVE + zenModeRepository.addMode(manualDnd) runCurrent() assertThat(lockScreenState) @@ -419,8 +420,7 @@ class DoNotDisturbQuickAffordanceConfigTest : SysuiTestCase() { ) ) - zenModeRepository.removeMode(TestModeBuilder.MANUAL_DND_INACTIVE.id) - zenModeRepository.addMode(TestModeBuilder.MANUAL_DND_ACTIVE) + zenModeRepository.activateMode(manualDnd) runCurrent() assertThat(lockScreenState) diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt index 74d4178891b9..4e33a5958a1a 100644 --- a/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt +++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/statusbar/policy/domain/interactor/ZenModeInteractorTest.kt @@ -378,8 +378,7 @@ class ZenModeInteractorTest : SysuiTestCase() { assertThat(dndMode!!.isActive).isFalse() - zenModeRepository.removeMode(TestModeBuilder.MANUAL_DND_INACTIVE.id) - zenModeRepository.addMode(TestModeBuilder.MANUAL_DND_ACTIVE) + zenModeRepository.activateMode(TestModeBuilder.MANUAL_DND_INACTIVE.id) runCurrent() assertThat(dndMode!!.isActive).isTrue() diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt index 2aa6e7b18154..ae9454498089 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/ClockEventControllerTest.kt @@ -24,7 +24,6 @@ import android.view.ViewTreeObserver import android.widget.FrameLayout import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest -import com.android.settingslib.notification.modes.TestModeBuilder.MANUAL_DND_ACTIVE import com.android.settingslib.notification.modes.TestModeBuilder.MANUAL_DND_INACTIVE import com.android.systemui.Flags as AConfigFlags import com.android.systemui.SysuiTestCase @@ -107,6 +106,7 @@ class ClockEventControllerTest : SysuiTestCase() { private lateinit var repository: FakeKeyguardRepository private val clockBuffers = ClockMessageBuffers(LogcatOnlyMessageBuffer(LogLevel.DEBUG)) private lateinit var underTest: ClockEventController + private lateinit var dndModeId: String @Mock private lateinit var broadcastDispatcher: BroadcastDispatcher @Mock private lateinit var batteryController: BatteryController @@ -156,6 +156,7 @@ class ClockEventControllerTest : SysuiTestCase() { whenever(largeClockController.theme).thenReturn(ThemeConfig(true, null)) whenever(userTracker.userId).thenReturn(1) + dndModeId = MANUAL_DND_INACTIVE.id zenModeRepository.addMode(MANUAL_DND_INACTIVE) repository = FakeKeyguardRepository() @@ -528,7 +529,7 @@ class ClockEventControllerTest : SysuiTestCase() { testScope.runTest { underTest.listenForDnd(testScope.backgroundScope) - zenModeRepository.replaceMode(MANUAL_DND_INACTIVE.id, MANUAL_DND_ACTIVE) + zenModeRepository.activateMode(dndModeId) runCurrent() verify(events) @@ -536,7 +537,7 @@ class ClockEventControllerTest : SysuiTestCase() { eq(ZenData(ZenMode.IMPORTANT_INTERRUPTIONS, R.string::dnd_is_on.name)) ) - zenModeRepository.replaceMode(MANUAL_DND_ACTIVE.id, MANUAL_DND_INACTIVE) + zenModeRepository.deactivateMode(dndModeId) runCurrent() verify(events).onZenDataChanged(eq(ZenData(ZenMode.OFF, R.string::dnd_is_off.name))) |