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

Commit 996c7c13 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

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
parent 00be757b
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -1281,7 +1281,6 @@ public class NotificationManagerService extends SystemService {
                }

                mHandler.scheduleOnPackageChanged(removingPackage, changeUserId, pkgList, uidList);
                handleSavePolicyFile();
            }
        }
    };
@@ -6264,13 +6263,16 @@ public class NotificationManagerService extends SystemService {

    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);
        if (preferencesChanged) {
            handleSavePolicyFile();
        }
    }

    protected class WorkerHandler extends Handler
    {
+15 −10
Original line number Diff line number Diff line
@@ -334,33 +334,35 @@ public class PreferencesHelper implements RankingConfig {
        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 @@ public class PreferencesHelper implements RankingConfig {
            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 class PreferencesHelper implements RankingConfig {
        }
    }

    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 @@ public class PreferencesHelper implements RankingConfig {
                        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 @@ public class PreferencesHelper implements RankingConfig {
        if (updated) {
            updateConfig();
        }
        return updated;
    }

    public void clearData(String pkg, int uid) {