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
This commit is contained in:
Sanjana Sunil
2021-10-04 14:20:28 +00:00
committed by Daniel Norman
parent d1c32c0cac
commit cdaa918edc

View File

@ -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);