From 2c9685573f9ec69d8950a77d21850d497f7673a2 Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Wed, 2 Jun 2021 13:58:19 -0700 Subject: 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: 187020117 Bug: 187020675 Test: atest OverlayConfigTest Change-Id: I511e24b7ccfe82e6e89ceea7107457439793ef77 --- core/java/android/content/pm/PackagePartitions.java | 11 +++++++++++ core/java/com/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 98a20f73a120..4eb991c6ee18 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 3b5cf487c8da..c36e37ab4f24 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))); } -- cgit v1.2.3-59-g8ed1b