Merge "Fix package cleanup when parsed APK missing." into nyc-dev
am: b3b7763d5d
* commit 'b3b7763d5d35f4e85f3c5245abb9ab526b0e4c23':
Fix package cleanup when parsed APK missing.
Change-Id: If387d9dc16358af03e95693e9794bfe6bbfa22b6
This commit is contained in:
@@ -15453,9 +15453,18 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
removePackageLI(ps, (flags & REMOVE_CHATTY) != 0);
|
||||
|
||||
if ((flags & PackageManager.DELETE_KEEP_DATA) == 0) {
|
||||
destroyAppDataLIF(deletedPkg, UserHandle.USER_ALL,
|
||||
final PackageParser.Package resolvedPkg;
|
||||
if (deletedPkg != null) {
|
||||
resolvedPkg = deletedPkg;
|
||||
} else {
|
||||
// We don't have a parsed package when it lives on an ejected
|
||||
// adopted storage device, so fake something together
|
||||
resolvedPkg = new PackageParser.Package(ps.name);
|
||||
resolvedPkg.setVolumeUuid(ps.volumeUuid);
|
||||
}
|
||||
destroyAppDataLIF(resolvedPkg, UserHandle.USER_ALL,
|
||||
StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE);
|
||||
destroyAppProfilesLIF(deletedPkg);
|
||||
destroyAppProfilesLIF(resolvedPkg);
|
||||
if (outInfo != null) {
|
||||
outInfo.dataRemoved = true;
|
||||
}
|
||||
@@ -19610,6 +19619,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
|
||||
final String label;
|
||||
final int targetSdkVersion;
|
||||
final PackageFreezer freezer;
|
||||
final int[] installedUserIds;
|
||||
|
||||
// reader
|
||||
synchronized (mPackages) {
|
||||
@@ -19664,6 +19674,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
|
||||
label = String.valueOf(pm.getApplicationLabel(pkg.applicationInfo));
|
||||
targetSdkVersion = pkg.applicationInfo.targetSdkVersion;
|
||||
freezer = new PackageFreezer(packageName, "movePackageInternal");
|
||||
installedUserIds = ps.queryInstalledUsers(sUserManager.getUserIds(), true);
|
||||
}
|
||||
|
||||
final Bundle extras = new Bundle();
|
||||
@@ -19701,10 +19712,12 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName());
|
||||
|
||||
final PackageStats stats = new PackageStats(null, -1);
|
||||
synchronized (mInstaller) {
|
||||
if (!getPackageSizeInfoLI(packageName, -1, stats)) {
|
||||
freezer.close();
|
||||
throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR,
|
||||
"Failed to measure package size");
|
||||
for (int userId : installedUserIds) {
|
||||
if (!getPackageSizeInfoLI(packageName, userId, stats)) {
|
||||
freezer.close();
|
||||
throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR,
|
||||
"Failed to measure package size");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user