From b0635941888a54db12d995df98c5e15460688d86 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 2 Jun 2021 13:58:19 -0700 Subject: [PATCH] Do not canonicalize overlay config test paths Some devices may not have certain partitions available and the OverlayConfigTests use hardcoded paths to test OverlayConfig functionality. This change ensures that the temporary directory created to test OverlayConfig has all of the partitions defined in PackagePartitions#SYSTEM_PARTITIONS within it. Bug: 190469357 Bug: 187020117 Bug: 187020675 Test: atest OverlayConfigTest Change-Id: I511e24b7ccfe82e6e89ceea7107457439793ef77 Merged-In: I511e24b7ccfe82e6e89ceea7107457439793ef77 --- core/java/android/content/pm/PackagePartitions.java | 11 +++++++++++ .../android/internal/content/om/OverlayConfig.java | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/java/android/content/pm/PackagePartitions.java b/core/java/android/content/pm/PackagePartitions.java index 52ee4de5bed6c..d1577684aac6c 100644 --- a/core/java/android/content/pm/PackagePartitions.java +++ b/core/java/android/content/pm/PackagePartitions.java @@ -119,6 +119,9 @@ public class PackagePartitions { @Nullable private final DeferredCanonicalFile mOverlayFolder; + @NonNull + private final File mNonConicalFolder; + private SystemPartition(@NonNull File folder, @PartitionType int type, boolean containsPrivApp, boolean containsOverlay) { this.type = type; @@ -128,6 +131,7 @@ public class PackagePartitions { : null; this.mOverlayFolder = containsOverlay ? new DeferredCanonicalFile(folder, "overlay") : null; + this.mNonConicalFolder = folder; } public SystemPartition(@NonNull SystemPartition original) { @@ -136,6 +140,7 @@ public class PackagePartitions { this.mAppFolder = original.mAppFolder; this.mPrivAppFolder = original.mPrivAppFolder; this.mOverlayFolder = original.mOverlayFolder; + this.mNonConicalFolder = original.mNonConicalFolder; } /** @@ -153,6 +158,12 @@ public class PackagePartitions { return mFolder.getFile(); } + /** Returns the non-canonical folder of the partition. */ + @NonNull + public File getNonConicalFolder() { + return mNonConicalFolder; + } + /** Returns the canonical app folder of the partition. */ @Nullable public File getAppFolder() { diff --git a/core/java/com/android/internal/content/om/OverlayConfig.java b/core/java/com/android/internal/content/om/OverlayConfig.java index b38f623e3a6de..3f3c9bdbe5f5e 100644 --- a/core/java/com/android/internal/content/om/OverlayConfig.java +++ b/core/java/com/android/internal/content/om/OverlayConfig.java @@ -111,7 +111,7 @@ public class OverlayConfig { // Rebase the system partitions and settings file on the specified root directory. partitions = new ArrayList<>(PackagePartitions.getOrderedPartitions( p -> new OverlayPartition( - new File(rootDirectory, p.getFolder().getPath()), + new File(rootDirectory, p.getNonConicalFolder().getPath()), p))); }