Merge "Remove then add during replace to reset vis" into rvc-dev

This commit is contained in:
Patrick Baumann
2020-06-24 15:16:11 +00:00
committed by Android (Google) Code Review
2 changed files with 18 additions and 2 deletions

View File

@@ -495,10 +495,15 @@ public class AppsFilter {
* Adds a package that should be considered when filtering visibility between apps. * Adds a package that should be considered when filtering visibility between apps.
* *
* @param newPkgSetting the new setting being added * @param newPkgSetting the new setting being added
* @param isReplace if the package is being replaced and may need extra cleanup.
*/ */
public void addPackage(PackageSetting newPkgSetting) { public void addPackage(PackageSetting newPkgSetting, boolean isReplace) {
Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "filter.addPackage"); Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "filter.addPackage");
try { try {
if (isReplace) {
// let's first remove any prior rules for this package
removePackage(newPkgSetting);
}
mStateProvider.runWithState((settings, users) -> { mStateProvider.runWithState((settings, users) -> {
addPackageInternal(newPkgSetting, settings); addPackageInternal(newPkgSetting, settings);
if (mShouldFilterCache != null) { if (mShouldFilterCache != null) {
@@ -776,6 +781,15 @@ public class AppsFilter {
return result; return result;
} }
/**
* Equivalent to calling {@link #addPackage(PackageSetting, boolean)} with {@code isReplace}
* equal to {@code false}.
* @see AppsFilter#addPackage(PackageSetting, boolean)
*/
public void addPackage(PackageSetting newPkgSetting) {
addPackage(newPkgSetting, false /* isReplace */);
}
/** /**
* Removes a package for consideration when filtering visibility between apps. * Removes a package for consideration when filtering visibility between apps.
* *

View File

@@ -12368,7 +12368,9 @@ public class PackageManagerService extends IPackageManager.Stub
ksms.addScannedPackageLPw(pkg); ksms.addScannedPackageLPw(pkg);
mComponentResolver.addAllComponents(pkg, chatty); mComponentResolver.addAllComponents(pkg, chatty);
mAppsFilter.addPackage(pkgSetting); final boolean isReplace =
reconciledPkg.prepareResult != null && reconciledPkg.prepareResult.replace;
mAppsFilter.addPackage(pkgSetting, isReplace);
// Don't allow ephemeral applications to define new permissions groups. // Don't allow ephemeral applications to define new permissions groups.
if ((scanFlags & SCAN_AS_INSTANT_APP) != 0) { if ((scanFlags & SCAN_AS_INSTANT_APP) != 0) {