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