Allow the creation of IMPORTANCE_NONE channels

- Users will still be notified of foreground services
by the system even if the app posts their fg service
notification to a blocked channel so this restriction isn't needed
- This allows apps to cleanly port over their pre-channels notification
settings

Fixes: 62028083
Test: runtest systemui-notification

(cherry picked from commit 3f25f4d6fe24f3782d6e156f9969d98ab3c8b4bf)

Change-Id: I1cd8cfaf31f00088e267bd3fb1bd7912f4397c69
This commit is contained in:
Julia Reynolds
2017-05-24 16:33:32 -04:00
parent afea5e8ca4
commit 3e50bf6f97
2 changed files with 23 additions and 4 deletions

View File

@@ -564,7 +564,7 @@ public class RankingHelper implements RankingConfig {
updateConfig();
return;
}
if (channel.getImportance() < NotificationManager.IMPORTANCE_MIN
if (channel.getImportance() < NotificationManager.IMPORTANCE_NONE
|| channel.getImportance() > NotificationManager.IMPORTANCE_MAX) {
throw new IllegalArgumentException("Invalid importance level");
}

View File

@@ -18,6 +18,7 @@ package com.android.server.notification;
import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
import static android.app.NotificationManager.IMPORTANCE_HIGH;
import static android.app.NotificationManager.IMPORTANCE_LOW;
import static android.app.NotificationManager.IMPORTANCE_MAX;
import static android.app.NotificationManager.IMPORTANCE_NONE;
import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
@@ -512,14 +513,32 @@ public class RankingHelperTest extends NotificationTestCase {
}
@Test
public void testCreateChannel_ImportanceNone() throws Exception {
public void testCreateChannel_badImportance() throws Exception {
try {
mHelper.createNotificationChannel(PKG, UID,
new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE), true);
fail("Was allowed to create a blocked channel");
new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE - 1), true);
fail("Was allowed to create a channel with invalid importance");
} catch (IllegalArgumentException e) {
// yay
}
try {
mHelper.createNotificationChannel(PKG, UID,
new NotificationChannel("bananas", "bananas", IMPORTANCE_UNSPECIFIED), true);
fail("Was allowed to create a channel with invalid importance");
} catch (IllegalArgumentException e) {
// yay
}
try {
mHelper.createNotificationChannel(PKG, UID,
new NotificationChannel("bananas", "bananas", IMPORTANCE_MAX + 1), true);
fail("Was allowed to create a channel with invalid importance");
} catch (IllegalArgumentException e) {
// yay
}
mHelper.createNotificationChannel(PKG, UID,
new NotificationChannel("bananas", "bananas", IMPORTANCE_NONE), true);
mHelper.createNotificationChannel(PKG, UID,
new NotificationChannel("bananas", "bananas", IMPORTANCE_MAX), true);
}