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

Commit a5553b16 authored by Patrick Baumann's avatar Patrick Baumann Committed by Automerger Merge Worker
Browse files

Merge "Fixes ordering on AppsFilter#removePackage" into rvc-dev am: 910575c1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/11973246

Change-Id: I50e8a611bfdf25790f53392b615441aa45509731
parents 2302ed04 910575c1
Loading
Loading
Loading
Loading
+16 −15
Original line number Diff line number Diff line
@@ -796,7 +796,6 @@ public class AppsFilter {
     * @param setting the setting of the package being removed.
     */
    public void removePackage(PackageSetting setting) {
        removeAppIdFromVisibilityCache(setting.appId);
        mStateProvider.runWithState((settings, users) -> {
            final int userCount = users.length;
            for (int u = 0; u < userCount; u++) {
@@ -819,17 +818,7 @@ public class AppsFilter {
                mQueriesViaPackage.remove(mQueriesViaPackage.keyAt(i), setting.appId);
            }

            // re-add other shared user members to re-establish visibility between them and other
            // packages
            if (setting.sharedUser != null) {
                for (int i = setting.sharedUser.packages.size() - 1; i >= 0; i--) {
                    if (setting.sharedUser.packages.valueAt(i) == setting) {
                        continue;
                    }
                    addPackageInternal(
                            setting.sharedUser.packages.valueAt(i), settings);
                }
            }
            mForceQueryable.remove(setting.appId);

            if (setting.pkg != null && !setting.pkg.getProtectedBroadcasts().isEmpty()) {
                final String removingPackageName = setting.pkg.getPackageName();
@@ -843,6 +832,21 @@ public class AppsFilter {
            mOverlayReferenceMapper.removePkg(setting.name);
            mFeatureConfig.updatePackageState(setting, true /*removed*/);

            // After removing all traces of the package, if it's part of a shared user, re-add other
            // shared user members to re-establish visibility between them and other packages.
            // NOTE: this must come after all removals from data structures but before we update the
            //       cache
            if (setting.sharedUser != null) {
                for (int i = setting.sharedUser.packages.size() - 1; i >= 0; i--) {
                    if (setting.sharedUser.packages.valueAt(i) == setting) {
                        continue;
                    }
                    addPackageInternal(
                            setting.sharedUser.packages.valueAt(i), settings);
                }
            }

            removeAppIdFromVisibilityCache(setting.appId);
            if (mShouldFilterCache != null && setting.sharedUser != null) {
                for (int i = setting.sharedUser.packages.size() - 1; i >= 0; i--) {
                    PackageSetting siblingSetting = setting.sharedUser.packages.valueAt(i);
@@ -854,9 +858,6 @@ public class AppsFilter {
                }
            }
        });
        mForceQueryable.remove(setting.appId);


    }

    /**