Merge "Skip post install if package was deleted" into rvc-dev

This commit is contained in:
Patrick Baumann
2020-05-01 21:07:43 +00:00
committed by Android (Google) Code Review

View File

@@ -2072,8 +2072,18 @@ public class PackageManagerService extends IPackageManager.Stub
int autoRevokePermissionsMode,
boolean launchedForRestore, String installerPackage,
IPackageInstallObserver2 installObserver, int dataLoaderType) {
final boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED;
boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED;
final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null;
final String packageName = res.name;
final PackageSetting pkgSetting = succeeded ? getPackageSetting(packageName) : null;
if (succeeded && pkgSetting == null) {
Slog.e(TAG, packageName + " was removed before handlePackagePostInstall "
+ "could be executed");
res.returnCode = INSTALL_FAILED_PACKAGE_CHANGED;
res.returnMsg = "Package was removed before install could complete.";
notifyInstallObserver(res, installObserver);
return;
}
if (succeeded) {
// Send the removed broadcasts
@@ -2117,8 +2127,6 @@ public class PackageManagerService extends IPackageManager.Stub
mInstantAppRegistry.onPackageInstalledLPw(res.pkg, res.newUsers);
}
final String packageName = res.pkg.getPackageName();
// Determine the set of users who are adding this package for
// the first time vs. those who are seeing an update.
int[] firstUserIds = EMPTY_INT_ARRAY;
@@ -2126,7 +2134,7 @@ public class PackageManagerService extends IPackageManager.Stub
int[] updateUserIds = EMPTY_INT_ARRAY;
int[] instantUserIds = EMPTY_INT_ARRAY;
final boolean allNewUsers = res.origUsers == null || res.origUsers.length == 0;
final PackageSetting ps = getPackageSetting(res.pkg.getPackageName());
final PackageSetting ps = pkgSetting;
for (int newUser : res.newUsers) {
final boolean isInstantApp = ps.getInstantApp(newUser);
if (allNewUsers) {
@@ -2263,7 +2271,7 @@ public class PackageManagerService extends IPackageManager.Stub
if (packageExternalStorageType != StorageEnums.UNKNOWN) {
FrameworkStatsLog.write(
FrameworkStatsLog.APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED,
packageExternalStorageType, res.pkg.getPackageName());
packageExternalStorageType, packageName);
}
}
if (DEBUG_INSTALL) {
@@ -2295,12 +2303,9 @@ public class PackageManagerService extends IPackageManager.Stub
if (packageIsBrowser(packageName, userId)) {
// If this browser is restored from user's backup, do not clear
// default-browser state for this user
synchronized (mLock) {
final PackageSetting pkgSetting = mSettings.mPackages.get(packageName);
if (pkgSetting.getInstallReason(userId)
!= PackageManager.INSTALL_REASON_DEVICE_RESTORE) {
mPermissionManager.setDefaultBrowser(null, true, true, userId);
}
if (pkgSetting.getInstallReason(userId)
!= PackageManager.INSTALL_REASON_DEVICE_RESTORE) {
mPermissionManager.setDefaultBrowser(null, true, true, userId);
}
}