diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index fd65ebe102acd..eb46d53b51576 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 @@ public class PreferencesHelper implements RankingConfig { 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 1a218b23368de..b0279357d372a 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -1089,6 +1089,24 @@ public class PreferencesHelperTest extends UiServiceTestCase { assertEquals(0, mHelper.getBlockedChannelCount("pkg2", UID_O)); } + @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,