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

Commit 32c97ef3 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Blocked packages can't create channels.

Test: runtest systemui-notification
Change-Id: I3f0560a71adc33d9881021f920ce2824b96ddc14
parent f57de46d
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.server.notification;

import static android.app.NotificationManager.IMPORTANCE_NONE;

import com.android.internal.R;

import android.app.Notification;
@@ -450,6 +452,9 @@ public class RankingHelper implements RankingConfig {
    @Override
    public void createNotificationChannel(String pkg, int uid, NotificationChannel channel) {
        Record r = getOrCreateRecord(pkg, uid);
        if (IMPORTANCE_NONE == r.importance) {
            throw new IllegalArgumentException("Package blocked");
        }
        if (r.channels.containsKey(channel.getId()) || channel.getName().equals(
                mContext.getString(R.string.default_notification_channel_label))) {
            throw new IllegalArgumentException("Channel already exists");
+15 −0
Original line number Diff line number Diff line
@@ -15,6 +15,8 @@
 */
package com.android.server.notification;

import static junit.framework.Assert.fail;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -347,6 +349,19 @@ public class RankingHelperTest {
        assertEquals(NotificationChannel.USER_LOCKED_VISIBILITY, updated2.getUserLockedFields());
    }

    @Test
    public void testCreateChannel_blocked() throws Exception {
        mHelper.setImportance(pkg, uid, NotificationManager.IMPORTANCE_NONE);

        try {
            mHelper.createNotificationChannel(pkg, uid,
                    new NotificationChannel(pkg, "", NotificationManager.IMPORTANCE_LOW));
            fail("Channel creation should fail");
        } catch (IllegalArgumentException e) {
            // pass
        }
    }

    @Test
    public void testUpdate_userLockedImportance() throws Exception {
        // all fields locked by user