diff options
| -rw-r--r-- | services/core/java/com/android/server/notification/ZenModeHelper.java | 12 | ||||
| -rw-r--r-- | services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java | 14 |
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(); |