summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alex Buynytskyy <alexbuy@google.com> 2024-02-28 01:35:55 +0000
committer Alex Buynytskyy <alexbuy@google.com> 2024-02-28 17:34:43 +0000
commite46a3cd56b39e5528bb1d35d83674ad14e6b2fd7 (patch)
treec0e16b1edacb087749a92f298cbf14d05cac4396
parent0fb771566dd4b7cfc6afa7e75b467a9321848468 (diff)
Always mark package as "uninstalled" for all new users.
Fixes: 326223729 Test: atest PackageManagerShellCommandMultiUserTest Change-Id: I39f92567139827c1844bd3603e296f4e05b45841
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java24
1 files changed, 16 insertions, 8 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 69f790637d80..fe8030b656b0 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -1541,6 +1541,19 @@ public class PackageManagerService implements PackageSender, TestUtilityService
return;
}
+ // Initialize all necessary settings for archival installation.
+ pkgSetting
+ // No package.
+ .setPkg(null)
+ // Mark for later restore.
+ .setPendingRestore(true);
+ for (int userId : userIds) {
+ // Unmark "installed" for all users.
+ pkgSetting
+ .modifyUserState(userId)
+ .setInstalled(false);
+ }
+
String responsibleInstallerPackage = PackageArchiver.getResponsibleInstallerPackage(
pkgSetting);
// TODO(b/278553670) Check if responsibleInstallerPackage supports unarchival.
@@ -1551,16 +1564,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService
for (int userId : userIds) {
var archiveState = mInstallerService.mPackageArchiver.createArchiveState(
archivePackage, userId, responsibleInstallerPackage);
- if (archiveState == null) {
- continue;
- }
- pkgSetting
- .setPkg(null)
- // This package was installed as archived. Need to mark it for later restore.
- .setPendingRestore(true)
+ if (archiveState != null) {
+ pkgSetting
.modifyUserState(userId)
- .setInstalled(false)
.setArchiveState(archiveState);
+ }
}
}