Loading services/core/java/com/android/server/notification/ZenModeHelper.java +4 −1 Original line number Diff line number Diff line Loading @@ -1104,8 +1104,11 @@ public class ZenModeHelper { .allowAlarms(true) .allowMedia(true) .build()); } else { } else if (rule.zenPolicy != null) { policy.apply(rule.zenPolicy); } else { // active rule with no specified policy inherits the default settings policy.apply(mConfig.toZenPolicy()); } } Loading services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +137 −0 Original line number Diff line number Diff line Loading @@ -2439,6 +2439,143 @@ public class ZenModeHelperTest extends UiServiceTestCase { assertEquals(12345, mZenModeEventLogger.getPackageUid(4)); } @Test public void testUpdateConsolidatedPolicy_defaultRulesOnly() { setupZenConfig(); // When there's one automatic rule active and it doesn't specify a policy, test that the // resulting consolidated policy is one that matches the default rule settings. AutomaticZenRule zenRule = new AutomaticZenRule("name", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), null, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule, "test", Process.SYSTEM_UID, true); // enable the rule mZenModeHelper.setAutomaticZenRuleState(id, new Condition(zenRule.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // inspect the consolidated policy. Based on setupZenConfig() values. assertFalse(mZenModeHelper.mConsolidatedPolicy.allowAlarms()); assertFalse(mZenModeHelper.mConsolidatedPolicy.allowMedia()); assertFalse(mZenModeHelper.mConsolidatedPolicy.allowSystem()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowReminders()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowCalls()); assertEquals(PRIORITY_SENDERS_STARRED, mZenModeHelper.mConsolidatedPolicy.allowCallsFrom()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMessages()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowConversations()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowRepeatCallers()); assertFalse(mZenModeHelper.mConsolidatedPolicy.showBadges()); } @Test public void testUpdateConsolidatedPolicy_customPolicyOnly() { setupZenConfig(); // when there's only one automatic rule active and it has a custom policy, make sure that's // what the consolidated policy reflects whether or not it's stricter than what the default // would specify. ZenPolicy customPolicy = new ZenPolicy.Builder() .allowAlarms(true) // more lenient than default .allowMedia(true) // more lenient than default .allowRepeatCallers(false) // more restrictive than default .allowCalls(ZenPolicy.PEOPLE_TYPE_NONE) // more restrictive than default .showBadges(true) // more lenient .showPeeking(false) // more restrictive .build(); AutomaticZenRule zenRule = new AutomaticZenRule("name", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), customPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule, "test", Process.SYSTEM_UID, true); // enable the rule; this will update the consolidated policy mZenModeHelper.setAutomaticZenRuleState(id, new Condition(zenRule.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // since this is the only active rule, the consolidated policy should match the custom // policy for every field specified, and take default values for unspecified things assertTrue(mZenModeHelper.mConsolidatedPolicy.allowAlarms()); // custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMedia()); // custom assertFalse(mZenModeHelper.mConsolidatedPolicy.allowSystem()); // default assertTrue(mZenModeHelper.mConsolidatedPolicy.allowReminders()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowCalls()); // custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMessages()); // default assertTrue(mZenModeHelper.mConsolidatedPolicy.allowConversations()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowRepeatCallers()); // custom assertTrue(mZenModeHelper.mConsolidatedPolicy.showBadges()); // custom assertFalse(mZenModeHelper.mConsolidatedPolicy.showPeeking()); // custom } @Test public void testUpdateConsolidatedPolicy_defaultAndCustomActive() { setupZenConfig(); // when there are two rules active, one inheriting the default policy and one setting its // own custom policy, they should be merged to form the most restrictive combination. // rule 1: no custom policy AutomaticZenRule zenRule = new AutomaticZenRule("name", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), null, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule, "test", Process.SYSTEM_UID, true); // enable rule 1 mZenModeHelper.setAutomaticZenRuleState(id, new Condition(zenRule.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // custom policy for rule 2 ZenPolicy customPolicy = new ZenPolicy.Builder() .allowAlarms(true) // more lenient than default .allowMedia(true) // more lenient than default .allowRepeatCallers(false) // more restrictive than default .allowCalls(ZenPolicy.PEOPLE_TYPE_NONE) // more restrictive than default .showBadges(true) // more lenient .showPeeking(false) // more restrictive .build(); AutomaticZenRule zenRule2 = new AutomaticZenRule("name2", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), customPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id2 = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule2, "test", Process.SYSTEM_UID, true); // enable rule 2; this will update the consolidated policy mZenModeHelper.setAutomaticZenRuleState(id2, new Condition(zenRule2.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // now both rules should be on, and the consolidated policy should reflect the most // restrictive option of each of the two assertFalse(mZenModeHelper.mConsolidatedPolicy.allowAlarms()); // default stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.allowMedia()); // default stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.allowSystem()); // default, unset in custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowReminders()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowCalls()); // custom stricter assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMessages()); // default, unset in custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowConversations()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowRepeatCallers()); // custom stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.showBadges()); // default stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.showPeeking()); // custom stricter } private void setupZenConfig() { mZenModeHelper.mZenMode = Global.ZEN_MODE_OFF; mZenModeHelper.mConfig.allowAlarms = false; Loading Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +4 −1 Original line number Diff line number Diff line Loading @@ -1104,8 +1104,11 @@ public class ZenModeHelper { .allowAlarms(true) .allowMedia(true) .build()); } else { } else if (rule.zenPolicy != null) { policy.apply(rule.zenPolicy); } else { // active rule with no specified policy inherits the default settings policy.apply(mConfig.toZenPolicy()); } } Loading
services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +137 −0 Original line number Diff line number Diff line Loading @@ -2439,6 +2439,143 @@ public class ZenModeHelperTest extends UiServiceTestCase { assertEquals(12345, mZenModeEventLogger.getPackageUid(4)); } @Test public void testUpdateConsolidatedPolicy_defaultRulesOnly() { setupZenConfig(); // When there's one automatic rule active and it doesn't specify a policy, test that the // resulting consolidated policy is one that matches the default rule settings. AutomaticZenRule zenRule = new AutomaticZenRule("name", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), null, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule, "test", Process.SYSTEM_UID, true); // enable the rule mZenModeHelper.setAutomaticZenRuleState(id, new Condition(zenRule.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // inspect the consolidated policy. Based on setupZenConfig() values. assertFalse(mZenModeHelper.mConsolidatedPolicy.allowAlarms()); assertFalse(mZenModeHelper.mConsolidatedPolicy.allowMedia()); assertFalse(mZenModeHelper.mConsolidatedPolicy.allowSystem()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowReminders()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowCalls()); assertEquals(PRIORITY_SENDERS_STARRED, mZenModeHelper.mConsolidatedPolicy.allowCallsFrom()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMessages()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowConversations()); assertTrue(mZenModeHelper.mConsolidatedPolicy.allowRepeatCallers()); assertFalse(mZenModeHelper.mConsolidatedPolicy.showBadges()); } @Test public void testUpdateConsolidatedPolicy_customPolicyOnly() { setupZenConfig(); // when there's only one automatic rule active and it has a custom policy, make sure that's // what the consolidated policy reflects whether or not it's stricter than what the default // would specify. ZenPolicy customPolicy = new ZenPolicy.Builder() .allowAlarms(true) // more lenient than default .allowMedia(true) // more lenient than default .allowRepeatCallers(false) // more restrictive than default .allowCalls(ZenPolicy.PEOPLE_TYPE_NONE) // more restrictive than default .showBadges(true) // more lenient .showPeeking(false) // more restrictive .build(); AutomaticZenRule zenRule = new AutomaticZenRule("name", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), customPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule, "test", Process.SYSTEM_UID, true); // enable the rule; this will update the consolidated policy mZenModeHelper.setAutomaticZenRuleState(id, new Condition(zenRule.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // since this is the only active rule, the consolidated policy should match the custom // policy for every field specified, and take default values for unspecified things assertTrue(mZenModeHelper.mConsolidatedPolicy.allowAlarms()); // custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMedia()); // custom assertFalse(mZenModeHelper.mConsolidatedPolicy.allowSystem()); // default assertTrue(mZenModeHelper.mConsolidatedPolicy.allowReminders()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowCalls()); // custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMessages()); // default assertTrue(mZenModeHelper.mConsolidatedPolicy.allowConversations()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowRepeatCallers()); // custom assertTrue(mZenModeHelper.mConsolidatedPolicy.showBadges()); // custom assertFalse(mZenModeHelper.mConsolidatedPolicy.showPeeking()); // custom } @Test public void testUpdateConsolidatedPolicy_defaultAndCustomActive() { setupZenConfig(); // when there are two rules active, one inheriting the default policy and one setting its // own custom policy, they should be merged to form the most restrictive combination. // rule 1: no custom policy AutomaticZenRule zenRule = new AutomaticZenRule("name", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), null, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule, "test", Process.SYSTEM_UID, true); // enable rule 1 mZenModeHelper.setAutomaticZenRuleState(id, new Condition(zenRule.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // custom policy for rule 2 ZenPolicy customPolicy = new ZenPolicy.Builder() .allowAlarms(true) // more lenient than default .allowMedia(true) // more lenient than default .allowRepeatCallers(false) // more restrictive than default .allowCalls(ZenPolicy.PEOPLE_TYPE_NONE) // more restrictive than default .showBadges(true) // more lenient .showPeeking(false) // more restrictive .build(); AutomaticZenRule zenRule2 = new AutomaticZenRule("name2", null, new ComponentName(CUSTOM_PKG_NAME, "ScheduleConditionProvider"), ZenModeConfig.toScheduleConditionId(new ScheduleInfo()), customPolicy, NotificationManager.INTERRUPTION_FILTER_PRIORITY, true); String id2 = mZenModeHelper.addAutomaticZenRule(mContext.getPackageName(), zenRule2, "test", Process.SYSTEM_UID, true); // enable rule 2; this will update the consolidated policy mZenModeHelper.setAutomaticZenRuleState(id2, new Condition(zenRule2.getConditionId(), "", STATE_TRUE), Process.SYSTEM_UID, true); // now both rules should be on, and the consolidated policy should reflect the most // restrictive option of each of the two assertFalse(mZenModeHelper.mConsolidatedPolicy.allowAlarms()); // default stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.allowMedia()); // default stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.allowSystem()); // default, unset in custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowReminders()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowCalls()); // custom stricter assertTrue(mZenModeHelper.mConsolidatedPolicy.allowMessages()); // default, unset in custom assertTrue(mZenModeHelper.mConsolidatedPolicy.allowConversations()); // default assertFalse(mZenModeHelper.mConsolidatedPolicy.allowRepeatCallers()); // custom stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.showBadges()); // default stricter assertFalse(mZenModeHelper.mConsolidatedPolicy.showPeeking()); // custom stricter } private void setupZenConfig() { mZenModeHelper.mZenMode = Global.ZEN_MODE_OFF; mZenModeHelper.mConfig.allowAlarms = false; Loading