diff options
| author | 2024-01-30 21:32:26 +0000 | |
|---|---|---|
| committer | 2024-01-30 21:32:26 +0000 | |
| commit | 3e45c4be69ef3e2034cf0c920af65888cc1bfdd6 (patch) | |
| tree | ed4af355f56b201cc3e8b1ad9343ae53e2620084 | |
| parent | 246766048e8195f670fc82e8086a038146edcf59 (diff) | |
| parent | 0324a22ab401166ae8e36a20756ba8907fb3768b (diff) | |
Merge "Fill in policies for default zen rules." into main
| -rw-r--r-- | services/core/java/com/android/server/notification/ZenModeHelper.java | 18 | ||||
| -rw-r--r-- | services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java | 19 |
2 files changed, 37 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java index fb95632e4893..41ff4150eb23 100644 --- a/services/core/java/com/android/server/notification/ZenModeHelper.java +++ b/services/core/java/com/android/server/notification/ZenModeHelper.java @@ -210,6 +210,9 @@ public class ZenModeHelper { mDefaultConfig = readDefaultConfig(mContext.getResources()); updateDefaultAutomaticRuleNames(); + if (Flags.modesApi()) { + updateDefaultAutomaticRulePolicies(); + } mConfig = mDefaultConfig.copy(); synchronized (mConfigsArrayLock) { mConfigs.put(UserHandle.USER_SYSTEM, mConfig); @@ -1966,6 +1969,21 @@ public class ZenModeHelper { } } + // Updates the policies in the default automatic rules (provided via default XML config) to + // be fully filled in default values. + private void updateDefaultAutomaticRulePolicies() { + if (!Flags.modesApi()) { + // Should be checked before calling, but just in case. + return; + } + ZenPolicy defaultPolicy = mDefaultConfig.toZenPolicy(); + for (ZenRule rule : mDefaultConfig.automaticRules.values()) { + if (ZenModeConfig.DEFAULT_RULE_IDS.contains(rule.id) && rule.zenPolicy == null) { + rule.zenPolicy = defaultPolicy.copy(); + } + } + } + @VisibleForTesting protected void applyRestrictions() { final boolean zenOn = mZenMode != Global.ZEN_MODE_OFF; diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java index 87e822c4149f..5d114f4bb702 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java @@ -2123,6 +2123,25 @@ public class ZenModeHelperTest extends UiServiceTestCase { } @Test + @EnableFlags(Flags.FLAG_MODES_API) + public void testDefaultRulesFromConfig_modesApi_getPolicies() { + // After mZenModeHelper was created, set some things in the policy so it's changed from + // default. + setupZenConfig(); + + // Find default rules; check they have non-null policies; check that they match the default + // and not whatever has been set up in setupZenConfig. + ArrayMap<String, ZenModeConfig.ZenRule> rules = mZenModeHelper.mConfig.automaticRules; + for (String defaultId : ZenModeConfig.DEFAULT_RULE_IDS) { + assertThat(rules).containsKey(defaultId); + ZenRule rule = rules.get(defaultId); + assertThat(rule.zenPolicy).isNotNull(); + + assertThat(rule.zenPolicy).isEqualTo(mZenModeHelper.getDefaultZenPolicy()); + } + } + + @Test public void testAddAutomaticZenRule_beyondSystemLimit() { for (int i = 0; i < RULE_LIMIT_PER_PACKAGE; i++) { ScheduleInfo si = new ScheduleInfo(); |