Prevent apps from creating blocked channel groups

setBlocked is a hidden API, so apps should not be calling
the method, but fix up the data in case they do

Test: PreferencesHelperTest; manual with ApiDemos FGS
Bug: 209966086
Change-Id: I8a27853c7ed05d9dfd38a3142fbbe185946c3992
This commit is contained in:
Julia Reynolds
2022-01-12 15:08:29 -05:00
parent 265aab1329
commit 074a7f4ccd
2 changed files with 17 additions and 1 deletions

View File

@@ -848,6 +848,9 @@ public class PreferencesHelper implements RankingConfig {
if (r == null) {
throw new IllegalArgumentException("Invalid package");
}
if (fromTargetApp) {
group.setBlocked(false);
}
final NotificationChannelGroup oldGroup = r.groups.get(group.getId());
if (oldGroup != null) {
group.setChannels(oldGroup.getChannels());

View File

@@ -3173,6 +3173,19 @@ public class PreferencesHelperTest extends UiServiceTestCase {
assertTrue(mHelper.isGroupBlocked(PKG_N_MR1, UID_N_MR1, group.getId()));
}
@Test
public void testIsGroupBlocked_appCannotCreateAsBlocked() throws Exception {
NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
group.setBlocked(true);
mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, group, true);
assertFalse(mHelper.isGroupBlocked(PKG_N_MR1, UID_N_MR1, group.getId()));
NotificationChannelGroup group3 = group.clone();
group3.setBlocked(false);
mHelper.createNotificationChannelGroup(PKG_N_MR1, UID_N_MR1, group3, true);
assertFalse(mHelper.isGroupBlocked(PKG_N_MR1, UID_N_MR1, group.getId()));
}
@Test
public void testIsGroup_appCannotResetBlock() throws Exception {
NotificationChannelGroup group = new NotificationChannelGroup("id", "name");
@@ -4706,7 +4719,7 @@ public class PreferencesHelperTest extends UiServiceTestCase {
public void testGetConversations_noDisabledGroups() {
NotificationChannelGroup group = new NotificationChannelGroup("a", "a");
group.setBlocked(true);
mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, true);
mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, false);
NotificationChannel parent = new NotificationChannel("parent", "p", 1);
mHelper.createNotificationChannel(PKG_O, UID_O, parent, true, false);