diff options
| author | 2020-03-31 19:51:34 -0700 | |
|---|---|---|
| committer | 2020-04-01 12:24:34 -0700 | |
| commit | c2deeefef2abff2ce355d012a0bd2b1cd8258d18 (patch) | |
| tree | 37192205cb25a10dc6554189930620b4cb00c102 | |
| parent | 7c8fd2978713f7ff943276485f788f2981955631 (diff) | |
Ensure that loading packages can be extended
Collections.emptySet() creates an immutable collection which will prevent
us to add more packages to the loading packages set.
Instead of using the emptySet, create a new set everytime, even if it's
empty.
Test: PackageDexUseTest
Bug: 148774920
Change-Id: If274d0380d494d31768da24c10153810ef8bf513
| -rw-r--r-- | services/core/java/com/android/server/pm/dex/PackageDexUsage.java | 9 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/pm/dex/PackageDexUsageTests.java | 16 |
2 files changed, 19 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/pm/dex/PackageDexUsage.java b/services/core/java/com/android/server/pm/dex/PackageDexUsage.java index 7ac09e373d20..10760f52a02b 100644 --- a/services/core/java/com/android/server/pm/dex/PackageDexUsage.java +++ b/services/core/java/com/android/server/pm/dex/PackageDexUsage.java @@ -446,15 +446,12 @@ public class PackageDexUsage extends AbstractStatsBase<Void> { if (line == null) { throw new IllegalStateException("Could not find the loadingPackages line."); } - // We expect that most of the times the list of loading packages will be empty. - if (line.length() == LOADING_PACKAGE_CHAR.length()) { - return Collections.emptySet(); - } else { - Set<String> result = new HashSet<>(); + Set<String> result = new HashSet<>(); + if (line.length() != LOADING_PACKAGE_CHAR.length()) { Collections.addAll(result, line.substring(LOADING_PACKAGE_CHAR.length()).split(SPLIT_CHAR)); - return result; } + return result; } /** diff --git a/services/tests/servicestests/src/com/android/server/pm/dex/PackageDexUsageTests.java b/services/tests/servicestests/src/com/android/server/pm/dex/PackageDexUsageTests.java index 2829fa7bf83f..adf4551e79a8 100644 --- a/services/tests/servicestests/src/com/android/server/pm/dex/PackageDexUsageTests.java +++ b/services/tests/servicestests/src/com/android/server/pm/dex/PackageDexUsageTests.java @@ -575,6 +575,22 @@ public class PackageDexUsageTests { assertPackageDexUsage(mBarBaseUser0); } + @Test + public void testEnsureLoadingPackagesCanBeExtended() { + String isa = VMRuntime.getInstructionSet(Build.SUPPORTED_ABIS[0]); + String content = "PACKAGE_MANAGER__PACKAGE_DEX_USAGE__2\n" + + "com.google.foo\n" + + "+/data/app/com.google.foo/split-2.apk\n" + + "@\n"; + PackageDexUsage packageDexUsage = new PackageDexUsage(); + try { + packageDexUsage.read(new StringReader(content)); + } catch (IOException e) { + fail(); + } + record(packageDexUsage, mFooSplit2UsedByOtherApps0, mFooSplit2UsedByOtherApps0.getUsedBy()); + } + private void assertPackageDexUsage(TestData primary, TestData... secondaries) { assertPackageDexUsage(mPackageDexUsage, null, primary, secondaries); } |