Allow updates to importance of default apps
As long as it's not IMPORTANCE_NONE
Test: manual
1. Messages app > Settings > Notifications
2. Change behavior from Prioritized to Gentle
3. Back
4. Click on Notifications again
5. Observe: setting was changed to Gentle
Test: atest PreferencesHelperTest
Fixes: 131893709
Change-Id: I1710435e9dfa741b14a8de3da07bff1d17e884b8
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 3f1a248..0804a73 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -736,7 +736,8 @@
}
updatedChannel.setImportanceLockedByCriticalDeviceFunction(
r.defaultAppLockedImportance);
- if (updatedChannel.isImportanceLockedByCriticalDeviceFunction()) {
+ if (updatedChannel.isImportanceLockedByCriticalDeviceFunction()
+ && updatedChannel.getImportance() == IMPORTANCE_NONE) {
updatedChannel.setImportance(channel.getImportance());
}
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 d1a3550..e22f827 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -66,6 +66,9 @@
import android.util.Pair;
import android.util.Xml;
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
import com.android.internal.util.FastXmlSerializer;
import com.android.server.UiServiceTestCase;
@@ -90,9 +93,6 @@
import java.util.Objects;
import java.util.concurrent.ThreadLocalRandom;
-import androidx.test.InstrumentationRegistry;
-import androidx.test.runner.AndroidJUnit4;
-
@SmallTest
@RunWith(AndroidJUnit4.class)
public class PreferencesHelperTest extends UiServiceTestCase {
@@ -2520,7 +2520,6 @@
toAdd.add(new Pair(PKG_O, UID_O));
mHelper.updateDefaultApps(UserHandle.getUserId(UID_O), null, toAdd);
-
assertTrue(mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false)
.isImportanceLockedByCriticalDeviceFunction());
assertFalse(mHelper.getNotificationChannel(PKG_N_MR1, UID_N_MR1, b.getId(), false)
@@ -2623,16 +2622,20 @@
update.setAllowBubbles(false);
mHelper.updateNotificationChannel(PKG_O, UID_O, update, true);
-
assertEquals(IMPORTANCE_HIGH,
mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).getImportance());
assertEquals(false,
mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).canBubble());
mHelper.updateNotificationChannel(PKG_O, UID_O, update, false);
-
assertEquals(IMPORTANCE_HIGH,
mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).getImportance());
+
+ NotificationChannel updateImportanceLow = new NotificationChannel("a", "a",
+ IMPORTANCE_LOW);
+ mHelper.updateNotificationChannel(PKG_O, UID_O, updateImportanceLow, true);
+ assertEquals(IMPORTANCE_LOW,
+ mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).getImportance());
}
@Test