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

Commit a2620b9c authored by Julia Reynolds's avatar Julia Reynolds Committed by Android (Google) Code Review
Browse files

Merge "Update clearData flow for notification settings" into qt-dev

parents 8fb611c6 224ef137
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -2864,8 +2864,7 @@ public class NotificationManagerService extends SystemService {

            // Reset notification preferences
            if (!fromApp) {
                mPreferencesHelper.onPackagesChanged(
                        true, UserHandle.getCallingUserId(), packages, uids);
                mPreferencesHelper.clearData(packageName, uid);
            }

            handleSavePolicyFile();
+16 −0
Original line number Diff line number Diff line
@@ -1717,6 +1717,22 @@ public class PreferencesHelper implements RankingConfig {
        }
    }

    public void clearData(String pkg, int uid) {
        synchronized (mPackagePreferences) {
            PackagePreferences p = getPackagePreferencesLocked(pkg, uid);
            p.channels = new ArrayMap<>();
            p.groups = new ArrayMap<>();
            p.delegate = null;
            p.lockedAppFields = DEFAULT_LOCKED_APP_FIELDS;
            p.allowBubble = DEFAULT_ALLOW_BUBBLE;
            p.importance = DEFAULT_IMPORTANCE;
            p.priority = DEFAULT_PRIORITY;
            p.visibility = DEFAULT_VISIBILITY;
            p.showBadge = DEFAULT_SHOW_BADGE;

        }
    }

    private LogMaker getChannelLog(NotificationChannel channel, String pkg) {
        return new LogMaker(
                com.android.internal.logging.nano.MetricsProto.MetricsEvent
+32 −0
Original line number Diff line number Diff line
@@ -1643,6 +1643,38 @@ public class PreferencesHelperTest extends UiServiceTestCase {
                PKG_O, UID_O, NotificationChannel.DEFAULT_CHANNEL_ID, false));
    }

    @Test
    public void testClearData() {
        ArraySet<String> pkg = new ArraySet<>();
        pkg.add(PKG_O);
        mHelper.createNotificationChannel(PKG_O, UID_O, getChannel(), true, false);
        mHelper.createNotificationChannelGroup(
                PKG_O, UID_O, new NotificationChannelGroup("1", "bye"), true);
        mHelper.lockChannelsForOEM(pkg.toArray(new String[]{}));
        mHelper.updateDefaultApps(UserHandle.getUserId(UID_O), null, pkg);
        mHelper.setNotificationDelegate(PKG_O, UID_O, "", 1);
        mHelper.setImportance(PKG_O, UID_O, IMPORTANCE_NONE);
        mHelper.setBubblesAllowed(PKG_O, UID_O, false);
        mHelper.setShowBadge(PKG_O, UID_O, false);
        mHelper.setAppImportanceLocked(PKG_O, UID_O);

        mHelper.clearData(PKG_O, UID_O);

        assertEquals(IMPORTANCE_UNSPECIFIED, mHelper.getImportance(PKG_O, UID_O));
        assertTrue(mHelper.areBubblesAllowed(PKG_O, UID_O));
        assertTrue(mHelper.canShowBadge(PKG_O, UID_O));
        assertNull(mHelper.getNotificationDelegate(PKG_O, UID_O));
        assertEquals(0, mHelper.getAppLockedFields(PKG_O, UID_O));
        assertEquals(0, mHelper.getNotificationChannels(PKG_O, UID_O, true).getList().size());
        assertEquals(0, mHelper.getNotificationChannelGroups(PKG_O, UID_O).size());

        NotificationChannel channel = getChannel();
        mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);

        assertTrue(channel.isImportanceLockedByCriticalDeviceFunction());
        assertTrue(channel.isImportanceLockedByOEM());
    }

    @Test
    public void testRecordDefaults() throws Exception {
        assertEquals(NotificationManager.IMPORTANCE_UNSPECIFIED, mHelper.getImportance(PKG_N_MR1,