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

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

Prevent whitelisted apps from blocking and silencing

Change-Id: I34cb5c2c59d56b68ed1500c8c79cd65676c0af25
Fixes: 35841524
Test: manual
parent 6c2f9fe6
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -218,7 +218,7 @@ public class AppNotificationSettings extends NotificationSettingsBase {
    }

    private void setupBlock() {
        if (mAppRow.systemApp) {
        if (mAppRow.systemApp && !mAppRow.banned) {
            setVisible(mBlock, false);
        } else {
            mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
@@ -243,6 +243,9 @@ public class AppNotificationSettings extends NotificationSettingsBase {
            setVisible(category, !banned);
        }
        setVisible(mBadge, !banned);
        if (mAppRow.systemApp && !mAppRow.banned) {
            setVisible(mBlock, false);
        }
    }

    private Comparator<NotificationChannel> mChannelComparator =
+40 −29
Original line number Diff line number Diff line
@@ -134,7 +134,9 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
        }
        mLights.setDisabledByAdmin(mSuspendedAppsAdmin);
        mVibrate.setDisabledByAdmin(mSuspendedAppsAdmin);
        if (mImportance.isEnabled()) {
            mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
        }
        mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
        mVisibilityOverride.setDisabledByAdmin(mSuspendedAppsAdmin);
    }
@@ -185,6 +187,10 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
    }

    protected void setupBlockAndImportance() {
        if (mAppRow.systemApp && mChannel.getImportance() != NotificationManager.IMPORTANCE_NONE) {
            setVisible(mBlock, false);
        } else {
            mBlock.setEnabled(mAppRow.systemApp);
            mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
            mBlock.setChecked(mChannel.getImportance() == NotificationManager.IMPORTANCE_NONE);
            mBlock.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@@ -200,6 +206,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
                    return true;
                }
            });
        }
        mBadge.setDisabledByAdmin(mSuspendedAppsAdmin);
        mBadge.setEnabled(mAppRow.showBadge);
        mBadge.setChecked(mChannel.canShowBadge());
@@ -217,7 +224,8 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
        mImportance.setDisabledByAdmin(mSuspendedAppsAdmin);
        final int numImportances = IMPORTANCE_HIGH - IMPORTANCE_MIN + 1;
        List<String> summaries = new ArrayList<>();
        List<String> values = new ArrayList<>();;
        List<String> values = new ArrayList<>();
        ;
        for (int i = 0; i < numImportances; i++) {
            int importance = i + 1;
            summaries.add(getImportanceSummary(importance));
@@ -232,7 +240,9 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
        mImportance.setEntries(summaries.toArray(new String[0]));
        mImportance.setValue(String.valueOf(mChannel.getImportance()));
        mImportance.setSummary("%s");

        if (mAppRow.lockedImportance) {
            mImportance.setEnabled(false);
        } else {
            mImportance.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
                @Override
                public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -245,6 +255,7 @@ public class ChannelNotificationSettings extends NotificationSettingsBase {
                }
            });
        }
    }

    protected void setupPriorityPref(boolean priority) {
        mPriority.setDisabledByAdmin(mSuspendedAppsAdmin);
+2 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ public class NotificationBackend {
            int N = nonBlockablePkgs.length;
            for (int i = 0; i < N; i++) {
                if (app.packageName.equals(nonBlockablePkgs[i])) {
                    row.systemApp = true;
                    row.systemApp = row.lockedImportance = true;
                }
            }
        }
@@ -152,6 +152,7 @@ public class NotificationBackend {
        public boolean banned;
        public boolean first;  // first app in section
        public boolean systemApp;
        public boolean lockedImportance;
        public boolean showBadge;
        public int userId;
    }
+3 −1
Original line number Diff line number Diff line
@@ -148,7 +148,9 @@ abstract public class NotificationSettingsBase extends SettingsPreferenceFragmen
        }
        mSuspendedAppsAdmin = RestrictedLockUtils.checkIfApplicationIsSuspended(
                mContext, mPkg, mUserId);
        if (mBlock.isEnabled()) {
            mBlock.setDisabledByAdmin(mSuspendedAppsAdmin);
        }
        mBadge.setDisabledByAdmin(mSuspendedAppsAdmin);
    }