Loading services/core/java/com/android/server/notification/PreferencesHelper.java +44 −26 Original line number Diff line number Diff line Loading @@ -312,8 +312,8 @@ public class PreferencesHelper implements RankingConfig { } else if (TAG_PACKAGE.equals(tag)) { String name = parser.getAttributeValue(null, ATT_NAME); if (!TextUtils.isEmpty(name)) { restorePackage(parser, forRestore, userId, name, upgradeForBubbles, migrateToPermission); restorePackageLocked(parser, forRestore, userId, name, upgradeForBubbles, migrateToPermission); } } } Loading @@ -321,8 +321,8 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mPackagePreferences") private void restorePackage(TypedXmlPullParser parser, boolean forRestore, @GuardedBy("mLock") private void restorePackageLocked(TypedXmlPullParser parser, boolean forRestore, @UserIdInt int userId, String name, boolean upgradeForBubbles, boolean migrateToPermission) { try { Loading Loading @@ -450,7 +450,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private void restoreChannel(TypedXmlPullParser parser, boolean forRestore, PackagePreferences r) { try { Loading Loading @@ -483,7 +483,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private boolean hasUserConfiguredSettings(PackagePreferences p){ boolean hasChangedChannel = false; for (NotificationChannel channel : p.channels.values()) { Loading Loading @@ -515,11 +515,13 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private PackagePreferences getPackagePreferencesLocked(String pkg, int uid) { final String key = packagePreferencesKey(pkg, uid); return mPackagePreferences.get(key); } @GuardedBy("mLock") private PackagePreferences getOrCreatePackagePreferencesLocked(String pkg, int uid) { // TODO (b/194833441): use permissionhelper instead of DEFAULT_IMPORTANCE Loading Loading @@ -590,6 +592,7 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private boolean deleteDefaultChannelIfNeededLocked(PackagePreferences r) throws PackageManager.NameNotFoundException { if (!r.channels.containsKey(DEFAULT_CHANNEL_ID)) { Loading @@ -608,6 +611,7 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private boolean createDefaultChannelIfNeededLocked(PackagePreferences r) throws PackageManager.NameNotFoundException { if (r.uid == UNKNOWN_UID) { Loading Loading @@ -647,6 +651,7 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private NotificationChannel addReservedChannelLocked(PackagePreferences p, String channelId) { String label = ""; switch (channelId) { Loading Loading @@ -716,7 +721,8 @@ public class PreferencesHelper implements RankingConfig { out.endTag(null, TAG_RANKING); } public void writePackageXml(PackagePreferences r, TypedXmlSerializer out, @GuardedBy("mLock") private void writePackageXml(PackagePreferences r, TypedXmlSerializer out, ArrayMap<Pair<Integer, String>, Pair<Boolean, Boolean>> notifPermissions, boolean forBackup) throws IOException { Loading Loading @@ -1218,6 +1224,8 @@ public class PreferencesHelper implements RankingConfig { return needsPolicyFileChange; } @GuardedBy("mLock") @VisibleForTesting void clearLockedFieldsLocked(NotificationChannel channel) { channel.unlockFields(channel.getUserLockedFields()); } Loading Loading @@ -1322,7 +1330,7 @@ public class PreferencesHelper implements RankingConfig { * Updates conversation channels after user changes to their parent channel. See * {@link #maybeUpdateChildConversationChannel}. */ @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private void updateChildrenConversationChannels(@NonNull PackagePreferences packagePreferences, @NonNull NotificationChannel oldParent, @NonNull NotificationChannel updatedParent) { if (oldParent.equals(updatedParent)) { Loading Loading @@ -1350,7 +1358,7 @@ public class PreferencesHelper implements RankingConfig { * * <p>This will also log the change as if it was {@code fromUser=true}. */ @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private void maybeUpdateChildConversationChannel(String pkg, int uid, @NonNull NotificationChannel conversation, @NonNull NotificationChannel oldParent, @NonNull NotificationChannel updatedParent) { Loading Loading @@ -1438,6 +1446,7 @@ public class PreferencesHelper implements RankingConfig { return null; } Objects.requireNonNull(pkg); synchronized (mLock) { PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid); if (r == null) { return null; Loading @@ -1448,6 +1457,7 @@ public class PreferencesHelper implements RankingConfig { } return addReservedChannelLocked(r, channelId); } } @Override public NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, Loading Loading @@ -1543,6 +1553,7 @@ public class PreferencesHelper implements RankingConfig { return deletedChannel; } @GuardedBy("mLock") private boolean deleteNotificationChannelLocked(NotificationChannel channel, String pkg, int uid) { if (!channel.isDeleted()) { Loading Loading @@ -1964,12 +1975,14 @@ public class PreferencesHelper implements RankingConfig { // without creating package preferences. For testing only, specifically to confirm the // notification channels of a removed/deleted package. protected List<NotificationChannel> getRemovedPkgNotificationChannels(String pkg, int uid) { synchronized (mLock) { PackagePreferences r = getPackagePreferencesLocked(pkg, uid); if (r == null || r.channels == null) { return new ArrayList<>(); } return new ArrayList<>(r.channels.values()); } } /** * Gets all notification channels associated with the given pkg and uid that can bypass dnd Loading Loading @@ -2177,6 +2190,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mLock") private boolean channelIsLiveLocked(PackagePreferences pkgPref, NotificationChannel channel) { // Channel is in a group that's blocked if (isGroupBlocked(pkgPref.pkg, pkgPref.uid, channel.getGroup())) { Loading Loading @@ -2300,6 +2314,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mLock") private void lockFieldsForUpdateLocked(NotificationChannel original, NotificationChannel update) { if (original.canBypassDnd() != update.canBypassDnd()) { Loading Loading @@ -2455,6 +2470,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mLock") private void dumpPackagePreferencesLocked(ProtoOutputStream proto, long fieldId, @NonNull NotificationManagerService.DumpFilter filter, ArrayMap<String, PackagePreferences> packagePreferences, Loading Loading @@ -3055,12 +3071,14 @@ public class PreferencesHelper implements RankingConfig { } // Package upgrade try { synchronized (mLock) { PackagePreferences fullPackagePreferences = getPackagePreferencesLocked(pkg, mPm.getPackageUidAsUser(pkg, changeUserId)); if (fullPackagePreferences != null) { updated |= createDefaultChannelIfNeededLocked(fullPackagePreferences); updated |= deleteDefaultChannelIfNeededLocked(fullPackagePreferences); } } } catch (PackageManager.NameNotFoundException e) { } } Loading Loading
services/core/java/com/android/server/notification/PreferencesHelper.java +44 −26 Original line number Diff line number Diff line Loading @@ -312,8 +312,8 @@ public class PreferencesHelper implements RankingConfig { } else if (TAG_PACKAGE.equals(tag)) { String name = parser.getAttributeValue(null, ATT_NAME); if (!TextUtils.isEmpty(name)) { restorePackage(parser, forRestore, userId, name, upgradeForBubbles, migrateToPermission); restorePackageLocked(parser, forRestore, userId, name, upgradeForBubbles, migrateToPermission); } } } Loading @@ -321,8 +321,8 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mPackagePreferences") private void restorePackage(TypedXmlPullParser parser, boolean forRestore, @GuardedBy("mLock") private void restorePackageLocked(TypedXmlPullParser parser, boolean forRestore, @UserIdInt int userId, String name, boolean upgradeForBubbles, boolean migrateToPermission) { try { Loading Loading @@ -450,7 +450,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private void restoreChannel(TypedXmlPullParser parser, boolean forRestore, PackagePreferences r) { try { Loading Loading @@ -483,7 +483,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private boolean hasUserConfiguredSettings(PackagePreferences p){ boolean hasChangedChannel = false; for (NotificationChannel channel : p.channels.values()) { Loading Loading @@ -515,11 +515,13 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private PackagePreferences getPackagePreferencesLocked(String pkg, int uid) { final String key = packagePreferencesKey(pkg, uid); return mPackagePreferences.get(key); } @GuardedBy("mLock") private PackagePreferences getOrCreatePackagePreferencesLocked(String pkg, int uid) { // TODO (b/194833441): use permissionhelper instead of DEFAULT_IMPORTANCE Loading Loading @@ -590,6 +592,7 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private boolean deleteDefaultChannelIfNeededLocked(PackagePreferences r) throws PackageManager.NameNotFoundException { if (!r.channels.containsKey(DEFAULT_CHANNEL_ID)) { Loading @@ -608,6 +611,7 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private boolean createDefaultChannelIfNeededLocked(PackagePreferences r) throws PackageManager.NameNotFoundException { if (r.uid == UNKNOWN_UID) { Loading Loading @@ -647,6 +651,7 @@ public class PreferencesHelper implements RankingConfig { return true; } @GuardedBy("mLock") private NotificationChannel addReservedChannelLocked(PackagePreferences p, String channelId) { String label = ""; switch (channelId) { Loading Loading @@ -716,7 +721,8 @@ public class PreferencesHelper implements RankingConfig { out.endTag(null, TAG_RANKING); } public void writePackageXml(PackagePreferences r, TypedXmlSerializer out, @GuardedBy("mLock") private void writePackageXml(PackagePreferences r, TypedXmlSerializer out, ArrayMap<Pair<Integer, String>, Pair<Boolean, Boolean>> notifPermissions, boolean forBackup) throws IOException { Loading Loading @@ -1218,6 +1224,8 @@ public class PreferencesHelper implements RankingConfig { return needsPolicyFileChange; } @GuardedBy("mLock") @VisibleForTesting void clearLockedFieldsLocked(NotificationChannel channel) { channel.unlockFields(channel.getUserLockedFields()); } Loading Loading @@ -1322,7 +1330,7 @@ public class PreferencesHelper implements RankingConfig { * Updates conversation channels after user changes to their parent channel. See * {@link #maybeUpdateChildConversationChannel}. */ @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private void updateChildrenConversationChannels(@NonNull PackagePreferences packagePreferences, @NonNull NotificationChannel oldParent, @NonNull NotificationChannel updatedParent) { if (oldParent.equals(updatedParent)) { Loading Loading @@ -1350,7 +1358,7 @@ public class PreferencesHelper implements RankingConfig { * * <p>This will also log the change as if it was {@code fromUser=true}. */ @GuardedBy("mPackagePreferences") @GuardedBy("mLock") private void maybeUpdateChildConversationChannel(String pkg, int uid, @NonNull NotificationChannel conversation, @NonNull NotificationChannel oldParent, @NonNull NotificationChannel updatedParent) { Loading Loading @@ -1438,6 +1446,7 @@ public class PreferencesHelper implements RankingConfig { return null; } Objects.requireNonNull(pkg); synchronized (mLock) { PackagePreferences r = getOrCreatePackagePreferencesLocked(pkg, uid); if (r == null) { return null; Loading @@ -1448,6 +1457,7 @@ public class PreferencesHelper implements RankingConfig { } return addReservedChannelLocked(r, channelId); } } @Override public NotificationChannel getNotificationChannel(String pkg, int uid, String channelId, Loading Loading @@ -1543,6 +1553,7 @@ public class PreferencesHelper implements RankingConfig { return deletedChannel; } @GuardedBy("mLock") private boolean deleteNotificationChannelLocked(NotificationChannel channel, String pkg, int uid) { if (!channel.isDeleted()) { Loading Loading @@ -1964,12 +1975,14 @@ public class PreferencesHelper implements RankingConfig { // without creating package preferences. For testing only, specifically to confirm the // notification channels of a removed/deleted package. protected List<NotificationChannel> getRemovedPkgNotificationChannels(String pkg, int uid) { synchronized (mLock) { PackagePreferences r = getPackagePreferencesLocked(pkg, uid); if (r == null || r.channels == null) { return new ArrayList<>(); } return new ArrayList<>(r.channels.values()); } } /** * Gets all notification channels associated with the given pkg and uid that can bypass dnd Loading Loading @@ -2177,6 +2190,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mLock") private boolean channelIsLiveLocked(PackagePreferences pkgPref, NotificationChannel channel) { // Channel is in a group that's blocked if (isGroupBlocked(pkgPref.pkg, pkgPref.uid, channel.getGroup())) { Loading Loading @@ -2300,6 +2314,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mLock") private void lockFieldsForUpdateLocked(NotificationChannel original, NotificationChannel update) { if (original.canBypassDnd() != update.canBypassDnd()) { Loading Loading @@ -2455,6 +2470,7 @@ public class PreferencesHelper implements RankingConfig { } } @GuardedBy("mLock") private void dumpPackagePreferencesLocked(ProtoOutputStream proto, long fieldId, @NonNull NotificationManagerService.DumpFilter filter, ArrayMap<String, PackagePreferences> packagePreferences, Loading Loading @@ -3055,12 +3071,14 @@ public class PreferencesHelper implements RankingConfig { } // Package upgrade try { synchronized (mLock) { PackagePreferences fullPackagePreferences = getPackagePreferencesLocked(pkg, mPm.getPackageUidAsUser(pkg, changeUserId)); if (fullPackagePreferences != null) { updated |= createDefaultChannelIfNeededLocked(fullPackagePreferences); updated |= deleteDefaultChannelIfNeededLocked(fullPackagePreferences); } } } catch (PackageManager.NameNotFoundException e) { } } Loading