Merge "Fixes ordering on AppsFilter#removePackage" into rvc-dev

This commit is contained in:
Patrick Baumann
2020-06-24 15:16:38 +00:00
committed by Android (Google) Code Review

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