Merge "Reset the profile when system application change version."

This commit is contained in:
Treehugger Robot
2018-05-22 23:15:36 +00:00
committed by Gerrit Code Review

View File

@@ -9206,6 +9206,29 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
/**
* Clear the package profile if this was an upgrade and the package
* version was updated.
*/
private void maybeClearProfilesForUpgradesLI(
@Nullable PackageSetting originalPkgSetting,
@NonNull PackageParser.Package currentPkg) {
if (originalPkgSetting == null || !isUpgrade()) {
return;
}
if (originalPkgSetting.versionCode == currentPkg.mVersionCode) {
return;
}
clearAppProfilesLIF(currentPkg, UserHandle.USER_ALL);
if (DEBUG_INSTALL) {
Slog.d(TAG, originalPkgSetting.name
+ " clear profile due to version change "
+ originalPkgSetting.versionCode + " != "
+ currentPkg.mVersionCode);
}
}
/**
* Traces a package scan.
* @see #scanPackageLI(File, int, int, long, UserHandle)
@@ -9491,6 +9514,9 @@ public class PackageManagerService extends IPackageManager.Stub
// Verify certificates against what was last scanned
collectCertificatesLI(ps, pkg, scanFile, policyFlags);
// Reset profile if the application version is changed
maybeClearProfilesForUpgradesLI(ps, pkg);
/*
* A new system app appeared, but we already had a non-system one of the
* same name installed earlier.