summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Patrick Baumann <patb@google.com> 2019-05-23 14:33:46 -0700
committer Patrick Baumann <patb@google.com> 2019-05-28 13:40:07 -0700
commit64fcdf63a80da68f16ced532321f032ed6d7e26b (patch)
tree8d37d8da9b55531ce73023525725f5fc8890fc55
parent612f71b1df26f5fc5b7891625f615b4b52758323 (diff)
Appropriately sets all installs on *any* failure of one
During multi-package install, this change ensures that all of the install results have their reason set to a value besides INSTALL_SUCCEEDED to avoid post install steps treating them as if they were successfully installed. Test: atest com.android.tests.atomicinstall.AtomicInstallTest#testEarlyFailureFailsAll Fixes: 133380744 Change-Id: I60b5c5376a27979d3fa4dfb67914dbd3573e280b
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 84470f9c2838..2dc6893cda3a 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -17071,6 +17071,13 @@ public class PackageManagerService extends IPackageManager.Stub
cleanUpAppIdCreation(result);
}
}
+ // TODO(patb): create a more descriptive reason than unknown in future release
+ // mark all non-failure installs as UNKNOWN so we do not treat them as success
+ for (InstallRequest request : requests) {
+ if (request.installResult.returnCode == PackageManager.INSTALL_SUCCEEDED) {
+ request.installResult.returnCode = PackageManager.INSTALL_UNKNOWN;
+ }
+ }
}
for (PrepareResult result : prepareResults.values()) {
if (result.freezer != null) {