Get rid of unnecessary policy file saves

The policy file was being saved twice per mPackageIntentReceiver
and most of the time no permanent settings are changed in response
to this broadcast.

Test: monitor logs after changing app timers for an app
Bug: 133131877
Change-Id: I0c89e785aa2421fa499e488fc583ab5db71d6010
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) {