From 56172ee863407dc2e102cc2bac4949c0a0c90907 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 --- .../core/java/com/android/server/pm/ComputerEngine.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java index 9f98cd8052c8b..9addf0e878387 100644 --- a/services/core/java/com/android/server/pm/ComputerEngine.java +++ b/services/core/java/com/android/server/pm/ComputerEngine.java @@ -1594,9 +1594,9 @@ public class ComputerEngine implements Computer { 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);