Merge "Get rid of unnecessary policy file saves" into qt-dev
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 7c01d63..1160e33 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -1281,7 +1281,6 @@
}
mHandler.scheduleOnPackageChanged(removingPackage, changeUserId, pkgList, uidList);
- handleSavePolicyFile();
}
}
};
@@ -6264,12 +6263,15 @@
private void handleOnPackageChanged(boolean removingPackage, int changeUserId,
String[] pkgList, int[] uidList) {
+ boolean preferencesChanged = removingPackage;
mListeners.onPackagesChanged(removingPackage, pkgList, uidList);
mAssistants.onPackagesChanged(removingPackage, pkgList, uidList);
mConditionProviders.onPackagesChanged(removingPackage, pkgList, uidList);
- mPreferencesHelper.onPackagesChanged(
+ preferencesChanged |= mPreferencesHelper.onPackagesChanged(
removingPackage, changeUserId, pkgList, uidList);
- handleSavePolicyFile();
+ if (preferencesChanged) {
+ handleSavePolicyFile();
+ }
}
protected class WorkerHandler extends Handler
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index 0804a73..9886d0a 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -334,33 +334,35 @@
return true;
}
- private void deleteDefaultChannelIfNeededLocked(PackagePreferences r) throws
+ private boolean deleteDefaultChannelIfNeededLocked(PackagePreferences r) throws
PackageManager.NameNotFoundException {
if (!r.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) {
// Not present
- return;
+ return false;
}
if (shouldHaveDefaultChannel(r)) {
// Keep the default channel until upgraded.
- return;
+ return false;
}
// Remove Default Channel.
r.channels.remove(NotificationChannel.DEFAULT_CHANNEL_ID);
+
+ return true;
}
- private void createDefaultChannelIfNeededLocked(PackagePreferences r) throws
+ private boolean createDefaultChannelIfNeededLocked(PackagePreferences r) throws
PackageManager.NameNotFoundException {
if (r.channels.containsKey(NotificationChannel.DEFAULT_CHANNEL_ID)) {
r.channels.get(NotificationChannel.DEFAULT_CHANNEL_ID).setName(mContext.getString(
com.android.internal.R.string.default_notification_channel_label));
- return;
+ return false;
}
if (!shouldHaveDefaultChannel(r)) {
// Keep the default channel until upgraded.
- return;
+ return false;
}
// Create Default Channel
@@ -381,6 +383,8 @@
channel.lockFields(NotificationChannel.USER_LOCKED_VISIBILITY);
}
r.channels.put(channel.getId(), channel);
+
+ return true;
}
public void writeXml(XmlSerializer out, boolean forBackup, int userId) throws IOException {
@@ -1687,10 +1691,10 @@
}
}
- public void onPackagesChanged(boolean removingPackage, int changeUserId, String[] pkgList,
+ public boolean onPackagesChanged(boolean removingPackage, int changeUserId, String[] pkgList,
int[] uidList) {
if (pkgList == null || pkgList.length == 0) {
- return; // nothing to do
+ return false; // nothing to do
}
boolean updated = false;
if (removingPackage) {
@@ -1727,8 +1731,8 @@
PackagePreferences fullPackagePreferences = getPackagePreferencesLocked(pkg,
mPm.getPackageUidAsUser(pkg, changeUserId));
if (fullPackagePreferences != null) {
- createDefaultChannelIfNeededLocked(fullPackagePreferences);
- deleteDefaultChannelIfNeededLocked(fullPackagePreferences);
+ updated |= createDefaultChannelIfNeededLocked(fullPackagePreferences);
+ updated |= deleteDefaultChannelIfNeededLocked(fullPackagePreferences);
}
}
} catch (PackageManager.NameNotFoundException e) {
@@ -1739,6 +1743,7 @@
if (updated) {
updateConfig();
}
+ return updated;
}
public void clearData(String pkg, int uid) {