Use isGroupBlocked to check for blocked notifGroup
Avoids null pointer exception
Test: atest PreferencesHelperTest
Change-Id: Ic94b6f1f8768d4cb4afcdef8ec03165e6523188e
Fixes: 119798101
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index fd65ebe..eb46d53 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -1015,10 +1015,8 @@
private boolean channelIsLive(PackagePreferences pkgPref, NotificationChannel channel) {
// Channel is in a group that's blocked
- if (!TextUtils.isEmpty(channel.getGroup())) {
- if (pkgPref.groups.get(channel.getGroup()).isBlocked()) {
- return false;
- }
+ if (isGroupBlocked(pkgPref.pkg, pkgPref.uid, channel.getGroup())) {
+ return false;
}
// Channel is deleted or is blocked
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index 1a218b2..b027935 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -1090,6 +1090,24 @@
}
@Test
+ public void testUpdateChannelsBypassingDnd_onUserSwitch_onUserUnlocked() throws Exception {
+ int user = USER.getIdentifier();
+ NotificationChannelGroup ncg = new NotificationChannelGroup("group1", "name1");
+ NotificationChannel channel1 = new NotificationChannel("id1", "name1",
+ NotificationManager.IMPORTANCE_MAX);
+ channel1.setBypassDnd(true);
+ channel1.setGroup(ncg.getId());
+
+ // channel is associated with a group, then group is deleted
+ mHelper.createNotificationChannelGroup(PKG_N_MR1, user, ncg, /* fromTargetApp */ true);
+ mHelper.createNotificationChannel(PKG_N_MR1, user, channel1, true, /*has DND access*/ true);
+ mHelper.deleteNotificationChannelGroup(PKG_N_MR1, user, ncg.getId());
+
+ mHelper.onUserSwitched(user);
+ mHelper.onUserUnlocked(user);
+ }
+
+ @Test
public void testGetChannelsBypassingDndCount_noChannelsBypassing() throws Exception {
assertEquals(0, mHelper.getNotificationChannelsBypassingDnd(PKG_N_MR1,
USER.getIdentifier()).getList().size());