summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/core/java/com/android/server/notification/ZenModeHelper.java12
-rw-r--r--services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java14
2 files changed, 25 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 81dc38a02191..dc173b124884 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -1941,7 +1941,17 @@ public class ZenModeHelper {
@Nullable
public Policy getNotificationPolicy(UserHandle user) {
synchronized (mConfigLock) {
- return getNotificationPolicy(getConfigLocked(user));
+ if (Flags.modesMultiuser()) {
+ // Return a fallback (default) policy for users without a zen config.
+ // Note that zen updates (setPolicy, setFilter) won't be applied, so this is mostly
+ // about preventing NPEs for careless callers.
+ ZenModeConfig config = getConfigLocked(user);
+ return config != null
+ ? getNotificationPolicy(config)
+ : getNotificationPolicy(mDefaultConfig);
+ } else {
+ return getNotificationPolicy(getConfigLocked(user));
+ }
}
}
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 bf61d06a80a7..09da0156eb82 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
@@ -7363,6 +7363,20 @@ public class ZenModeHelperTest extends UiServiceTestCase {
verify(callback, never()).onZenModeChanged();
}
+ @Test
+ @EnableFlags(FLAG_MODES_MULTIUSER)
+ public void getNotificationPolicy_fromUserWithoutZenConfig_returnsDefaultPolicy() {
+ // Set a custom policy for the current user to double check we return a default one below.
+ mZenModeHelper.setNotificationPolicy(UserHandle.CURRENT, new Policy(0, 0, 0), ORIGIN_SYSTEM,
+ SYSTEM_UID);
+
+ Policy ghostPolicy = mZenModeHelper.getNotificationPolicy(UserHandle.of(5552368));
+
+ assertThat(ghostPolicy).isNotNull();
+ assertThat(ZenAdapters.notificationPolicyToZenPolicy(ghostPolicy))
+ .isEqualTo(mZenModeHelper.getDefaultZenPolicy());
+ }
+
private static void addZenRule(ZenModeConfig config, String id, String ownerPkg, int zenMode,
@Nullable ZenPolicy zenPolicy) {
ZenRule rule = new ZenRule();