From cdaa918edc9a531bf4f7def0d24d1543b5ef22e6 Mon Sep 17 00:00:00 2001 From: Sanjana Sunil Date: Mon, 4 Oct 2021 14:20:28 +0000 Subject: [PATCH] PackageManagerService: Check for duplicate inactive factory packages If after a factory reset, APEX modules are updated, duplicate package names are returned from the API - factory packages are added first and then inactive factory packages leading to duplication. After updating APEX modules, inactive factory packages would always be a subset of factory packages. The fix adds inactive packages only if there was no factory reset done. Bug: 200519752 Bug: 200120056 Test: atest 'PackageManagerTest#testGetInstalledPackages_WithFactoryFlag_ContainsNoDuplicates' Change-Id: I5b5469fc6879bbeee4dc2ea47b2046ab011a65ce Merged-In: I5b5469fc6879bbeee4dc2ea47b2046ab011a65ce --- .../java/com/android/server/pm/PackageManagerService.java | 6 +++--- 1 file changed, 3 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 20bcc5e396eb0..8e18508adc907 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -3538,9 +3538,9 @@ public class PackageManagerService extends IPackageManager.Stub list.addAll(mApexManager.getFactoryPackages()); } else { list.addAll(mApexManager.getActivePackages()); - } - if (listUninstalled) { - list.addAll(mApexManager.getInactivePackages()); + if (listUninstalled) { + list.addAll(mApexManager.getInactivePackages()); + } } } return new ParceledListSlice<>(list);