Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d1aca0f authored by Matías Hernández's avatar Matías Hernández
Browse files

Check channel group limit when creating from a NotificationListener

Fixes: 268038726
Test: atest PreferencesHelperTest
Change-Id: I048e221d5ebc14e856cd6e762ce80760ded3be20
parent 6cab17b4
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -862,11 +862,11 @@ public class PreferencesHelper implements RankingConfig {
            if (r == null) {
                throw new IllegalArgumentException("Invalid package");
            }
            if (fromTargetApp) {
                group.setBlocked(false);
            if (r.groups.size() >= NOTIFICATION_CHANNEL_GROUP_COUNT_LIMIT) {
                throw new IllegalStateException("Limit exceed; cannot create more groups");
            }
            if (fromTargetApp) {
                group.setBlocked(false);
            }
            final NotificationChannelGroup oldGroup = r.groups.get(group.getId());
            if (oldGroup != null) {
+12 −3
Original line number Diff line number Diff line
@@ -4131,17 +4131,26 @@ public class PreferencesHelperTest extends UiServiceTestCase {
    }

    @Test
    public void testTooManyGroups() {
    public void testTooManyGroups_fromTargetApp() {
        testTooManyGroups(/* fromTargetApp= */ true);
    }

    @Test
    public void testTooManyGroups_fromListener() {
        testTooManyGroups(/* fromTargetApp= */ false);
    }

    private void testTooManyGroups(boolean fromTargetApp) {
        for (int i = 0; i < NOTIFICATION_CHANNEL_GROUP_COUNT_LIMIT; i++) {
            NotificationChannelGroup group = new NotificationChannelGroup(String.valueOf(i),
                    String.valueOf(i));
            mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, true);
            mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, fromTargetApp);
        }
        try {
            NotificationChannelGroup group = new NotificationChannelGroup(
                    String.valueOf(NOTIFICATION_CHANNEL_GROUP_COUNT_LIMIT),
                    String.valueOf(NOTIFICATION_CHANNEL_GROUP_COUNT_LIMIT));
            mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, true);
            mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, fromTargetApp);
            fail("Allowed to create too many notification channel groups");
        } catch (IllegalStateException e) {
            // great