Merge "Allow users to block notification channels" into tm-dev
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 75d7a1f..ebd092cd 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -1116,7 +1116,8 @@
}
if (mPermissionHelper.isMigrationEnabled()) {
- if (mPermissionHelper.isPermissionFixed(r.pkg, UserHandle.getUserId(r.uid))) {
+ if (mPermissionHelper.isPermissionFixed(r.pkg, UserHandle.getUserId(r.uid))
+ && !(channel.isBlockable() || channel.getImportance() == IMPORTANCE_NONE)) {
updatedChannel.setImportance(channel.getImportance());
}
} else {
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 7d5a0d0..63d7453 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -4016,6 +4016,45 @@
}
@Test
+ public void testUpdateNotificationChannel_fixedPermission_butUserPreviouslyBlockedIt() {
+ when(mPermissionHelper.isMigrationEnabled()).thenReturn(true);
+ when(mPermissionHelper.isPermissionFixed(PKG_O, 0)).thenReturn(true);
+
+ NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_NONE);
+ mHelper.createNotificationChannel(PKG_O, UID_O, a, false, false);
+
+ NotificationChannel update = new NotificationChannel("a", "a", IMPORTANCE_HIGH);
+ 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());
+ }
+
+ @Test
+ public void testUpdateNotificationChannel_fixedPermission_butAppAllowsIt() {
+ when(mPermissionHelper.isMigrationEnabled()).thenReturn(true);
+ when(mPermissionHelper.isPermissionFixed(PKG_O, 0)).thenReturn(true);
+
+ NotificationChannel a = new NotificationChannel("a", "a", IMPORTANCE_HIGH);
+ a.setBlockable(true);
+ mHelper.createNotificationChannel(PKG_O, UID_O, a, true, false);
+
+ NotificationChannel update = new NotificationChannel("a", "a", IMPORTANCE_NONE);
+ update.setAllowBubbles(false);
+
+ mHelper.updateNotificationChannel(PKG_O, UID_O, update, true);
+
+ assertEquals(IMPORTANCE_NONE,
+ mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).getImportance());
+ assertEquals(false,
+ mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).canBubble());
+ }
+
+ @Test
public void testUpdateNotificationChannel_notFixedPermission() {
when(mPermissionHelper.isMigrationEnabled()).thenReturn(true);
when(mPermissionHelper.isPermissionFixed(PKG_O, 0)).thenReturn(false);