summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Calin Juravle <calin@google.com> 2020-03-31 19:51:34 -0700
committer Calin Juravle <calin@google.com> 2020-04-01 12:24:34 -0700
commitc2deeefef2abff2ce355d012a0bd2b1cd8258d18 (patch)
tree37192205cb25a10dc6554189930620b4cb00c102
parent7c8fd2978713f7ff943276485f788f2981955631 (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.java9
-rw-r--r--services/tests/servicestests/src/com/android/server/pm/dex/PackageDexUsageTests.java16
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);
}