Add support for rules with filter=ALL in ZenModesBackend
This is represented as an extra, special value for the AllowChannels field in ZenPolicy, with special treatment. Bug: 327419222 Bug: 331267485 Test: atest ZenModeTest Flag: android.app.modes_ui Change-Id: I44440e40e729d295150b36beda824ddbfa1f170d
This commit is contained in:
@@ -61,7 +61,7 @@ public class ZenModeTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getZenPolicy_interruptionFilterPriority_returnsZenPolicy() {
|
||||
public void getPolicy_interruptionFilterPriority_returnsZenPolicy() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
|
||||
.setZenPolicy(ZEN_POLICY)
|
||||
@@ -71,18 +71,19 @@ public class ZenModeTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getZenPolicy_interruptionFilterAll_returnsPolicyAllowingAll() {
|
||||
public void getPolicy_interruptionFilterAll_returnsPolicyAllowingAll() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_ALL)
|
||||
.setZenPolicy(ZEN_POLICY) // should be ignored
|
||||
.build(), false);
|
||||
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(
|
||||
new ZenPolicy.Builder().allowAllSounds().showAllVisualEffects().build());
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
|
||||
.allowAllSounds().showAllVisualEffects().build());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getZenPolicy_interruptionFilterAlarms_returnsPolicyAllowingAlarms() {
|
||||
public void getPolicy_interruptionFilterAlarms_returnsPolicyAllowingAlarms() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
|
||||
.setZenPolicy(ZEN_POLICY) // should be ignored
|
||||
@@ -98,7 +99,7 @@ public class ZenModeTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getZenPolicy_interruptionFilterNone_returnsPolicyAllowingNothing() {
|
||||
public void getPolicy_interruptionFilterNone_returnsPolicyAllowingNothing() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_NONE)
|
||||
.setZenPolicy(ZEN_POLICY) // should be ignored
|
||||
@@ -111,4 +112,83 @@ public class ZenModeTest {
|
||||
.allowPriorityChannels(false)
|
||||
.build());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPolicy_setsInterruptionFilterPriority() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
|
||||
.build(), false);
|
||||
|
||||
zenMode.setPolicy(ZEN_POLICY);
|
||||
|
||||
assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
|
||||
INTERRUPTION_FILTER_PRIORITY);
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(ZEN_POLICY);
|
||||
assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(ZEN_POLICY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPolicy_withAllChannelsAllowed_setsInterruptionFilterAll() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
|
||||
.setZenPolicy(ZEN_POLICY)
|
||||
.build(), false);
|
||||
|
||||
zenMode.setPolicy(
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL).build());
|
||||
|
||||
assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(INTERRUPTION_FILTER_ALL);
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
|
||||
.allowAllSounds().showAllVisualEffects().build());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPolicy_priorityToAllChannelsAndBack_restoresOldPolicy() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_PRIORITY)
|
||||
.setZenPolicy(ZEN_POLICY)
|
||||
.build(), false);
|
||||
|
||||
zenMode.setPolicy(
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL).build());
|
||||
assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(INTERRUPTION_FILTER_ALL);
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
|
||||
.allowAllSounds().showAllVisualEffects().build());
|
||||
|
||||
zenMode.setPolicy(
|
||||
new ZenPolicy.Builder().allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY).build());
|
||||
|
||||
assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
|
||||
INTERRUPTION_FILTER_PRIORITY);
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(ZEN_POLICY);
|
||||
assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(ZEN_POLICY);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setPolicy_alarmsOnlyToAllChannelsAndBack_restoresPolicySimilarToAlarmsOnly() {
|
||||
ZenMode zenMode = new ZenMode("id", new AutomaticZenRule.Builder("Rule", Uri.EMPTY)
|
||||
.setInterruptionFilter(INTERRUPTION_FILTER_ALARMS)
|
||||
.build(), false);
|
||||
|
||||
zenMode.setPolicy(
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL).build());
|
||||
assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(INTERRUPTION_FILTER_ALL);
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(
|
||||
new ZenPolicy.Builder().allowChannels(ZenMode.CHANNEL_POLICY_ALL)
|
||||
.allowAllSounds().showAllVisualEffects().build());
|
||||
|
||||
zenMode.setPolicy(
|
||||
new ZenPolicy.Builder().allowChannels(ZenPolicy.CHANNEL_POLICY_PRIORITY).build());
|
||||
|
||||
// We don't go back to ALARMS, but the policy must be the one the user was seeing before.
|
||||
ZenPolicy alarmsOnlyLikePolicy = new ZenPolicy.Builder().disallowAllSounds()
|
||||
.allowAlarms(true).allowMedia(true).allowPriorityChannels(false)
|
||||
.build();
|
||||
assertThat(zenMode.getRule().getInterruptionFilter()).isEqualTo(
|
||||
INTERRUPTION_FILTER_PRIORITY);
|
||||
assertThat(zenMode.getPolicy()).isEqualTo(alarmsOnlyLikePolicy);
|
||||
assertThat(zenMode.getRule().getZenPolicy()).isEqualTo(alarmsOnlyLikePolicy);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user