diff options
author | Jeff Sharkey <jsharkey@android.com> | 2014-10-05 01:06:26 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-10-05 01:06:28 +0000 |
commit | 3438bc1bfd363e1ee656b33ebc8d0e6744470aec (patch) | |
tree | 33f30a405bfc9b6ff0216b81ef0021975a65d5d4 | |
parent | eae1c3d5c1d7b292823c668eaedc72ffa707a5d6 (diff) | |
parent | 914bd793b3415a198d0cb4216ff9da0a184ab803 (diff) | |
download | frameworks_base-3438bc1bfd363e1ee656b33ebc8d0e6744470aec.zip frameworks_base-3438bc1bfd363e1ee656b33ebc8d0e6744470aec.tar.gz frameworks_base-3438bc1bfd363e1ee656b33ebc8d0e6744470aec.tar.bz2 |
Merge "Correctly rollback failed system app installs." into lmp-dev
-rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index f912fd4..170205b 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -9990,6 +9990,7 @@ public class PackageManagerService extends IPackageManager.Stub { String installerPackageName, PackageInstalledInfo res) { if (DEBUG_INSTALL) Slog.d(TAG, "replaceSystemPackageLI: new=" + pkg + ", old=" + deletedPackage); + boolean disabledSystem = false; boolean updatedSettings = false; parseFlags |= PackageParser.PARSE_IS_SYSTEM; if ((deletedPackage.applicationInfo.flags&ApplicationInfo.FLAG_PRIVILEGED) != 0) { @@ -10023,7 +10024,8 @@ public class PackageManagerService extends IPackageManager.Stub { removePackageLI(oldPkgSetting, true); // writer synchronized (mPackages) { - if (!mSettings.disableSystemPackageLPw(packageName) && deletedPackage != null) { + disabledSystem = mSettings.disableSystemPackageLPw(packageName); + if (!disabledSystem && deletedPackage != null) { // We didn't need to disable the .apk as a current system package, // which means we are replacing another update that is already // installed. We need to make sure to delete the older one's .apk. @@ -10082,9 +10084,11 @@ public class PackageManagerService extends IPackageManager.Stub { Slog.e(TAG, "Failed to restore original package: " + e.getMessage()); } // Restore the old system information in Settings - synchronized(mPackages) { - if (updatedSettings) { + synchronized (mPackages) { + if (disabledSystem) { mSettings.enableSystemPackageLPw(packageName); + } + if (updatedSettings) { mSettings.setInstallerPackageName(packageName, oldPkgSetting.installerPackageName); } |