Merge "Fixes ordering on AppsFilter#removePackage" into rvc-dev am: 910575c19c am: a5553b16bb am: eef81fbe91

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

Change-Id: I68de1e15747b058d0f45efc1359b89b30ee20404
This commit is contained in:
Patrick Baumann
2020-06-24 15:58:31 +00:00
committed by Automerger Merge Worker

View File

@@ -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);
}
/**