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

Commit f7ec124b authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Allow users to block notification channels

On "fixed on" packages, if the app developer said that the
given channel can be blocked.

Test: PreferencesHelperTest, manually block a 'this app is
drawing over other apps' notification
Fixes: 230200565

Change-Id: I9598ce9ef438c3b237f1061f0fd0ab5680507304
parent 1cc6eceb
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1116,7 +1116,8 @@ public class PreferencesHelper implements RankingConfig {
            }

            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 {
+39 −0
Original line number Diff line number Diff line
@@ -4015,6 +4015,45 @@ public class PreferencesHelperTest extends UiServiceTestCase {
                mHelper.getNotificationChannel(PKG_O, UID_O, a.getId(), false).canBubble());
    }

    @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);