From 64fcdf63a80da68f16ced532321f032ed6d7e26b Mon Sep 17 00:00:00 2001 From: Patrick Baumann Date: Thu, 23 May 2019 14:33:46 -0700 Subject: [PATCH] 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 --- .../java/com/android/server/pm/PackageManagerService.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 84470f9c2838d..2dc6893cda3a3 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) {