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

am: 39d59de13d

Change-Id: I4e4ae9df92ff90b957881bb139819a966011552f
This commit is contained in:
Julia Reynolds
2019-04-22 09:15:40 -07:00
committed by android-build-merger
3 changed files with 50 additions and 2 deletions

View File

@@ -2863,8 +2863,7 @@ public class NotificationManagerService extends SystemService {
// Reset notification preferences
if (!fromApp) {
mPreferencesHelper.onPackagesChanged(
true, UserHandle.getCallingUserId(), packages, uids);
mPreferencesHelper.clearData(packageName, uid);
}
handleSavePolicyFile();

View File

@@ -1717,6 +1717,23 @@ public class PreferencesHelper implements RankingConfig {
}
}
public void clearData(String pkg, int uid) {
synchronized (mPackagePreferences) {
PackagePreferences p = getPackagePreferencesLocked(pkg, uid);
if (p != null) {
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

View File

@@ -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,