diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index 9886d0aa6a1c1..5956c65defef8 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -481,11 +481,16 @@ public class PreferencesHelper implements RankingConfig { * @param allowed whether bubbles are allowed. */ public void setBubblesAllowed(String pkg, int uid, boolean allowed) { + boolean changed = false; synchronized (mPackagePreferences) { PackagePreferences p = getOrCreatePackagePreferencesLocked(pkg, uid); + changed = p.allowBubble != allowed; p.allowBubble = allowed; p.lockedAppFields = p.lockedAppFields | LockableAppFields.USER_LOCKED_BUBBLE; } + if (changed) { + updateConfig(); + } } /** 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 e22f8271cae74..a0660c4936051 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -2676,4 +2676,11 @@ public class PreferencesHelperTest extends UiServiceTestCase { assertTrue(mHelper.getNotificationChannel(PKG_O, UID_O, channel1.getId(), false) .isImportanceLockedByCriticalDeviceFunction()); } + + @Test + public void testSetBubblesAllowed_false() { + mHelper.setBubblesAllowed(PKG_O, UID_O, false); + assertFalse(mHelper.areBubblesAllowed(PKG_O, UID_O)); + verify(mHandler, times(1)).requestSort(); + } }