diff options
| author | Nandana Dutt <nandana@google.com> | 2020-02-15 21:59:23 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-02-15 21:59:23 +0000 |
| commit | 5ff3568929b6190702df1a5dbed5b58374dc4144 (patch) | |
| tree | 1aac870f67d2f6ef8f8d69da8db7be88c8af8a48 /core/java | |
| parent | 1d2f970c02734ef94c44420f9247ac206b3e5ae2 (diff) | |
| parent | 3ce38499e47e5a3f3847b2b7d47dca63f22318a6 (diff) | |
Merge changes from topic "preserve_legacy"
* changes:
Enforce the preserveLegacyExternalStorage manifest attribute
Support preserveLegacyExternalStorage manifest attribute
Introduce preserveLegacyExternalStorage manifest attribute
Diffstat (limited to 'core/java')
5 files changed, 26 insertions, 0 deletions
diff --git a/core/java/android/content/pm/parsing/AndroidPackage.java b/core/java/android/content/pm/parsing/AndroidPackage.java index da17ff3cdefc..b93c3a245a00 100644 --- a/core/java/android/content/pm/parsing/AndroidPackage.java +++ b/core/java/android/content/pm/parsing/AndroidPackage.java @@ -397,6 +397,8 @@ public interface AndroidPackage extends Parcelable { boolean hasComponentClassName(String className); + boolean hasPreserveLegacyExternalStorage(); + // App Info boolean hasRequestedLegacyExternalStorage(); diff --git a/core/java/android/content/pm/parsing/ApkParseUtils.java b/core/java/android/content/pm/parsing/ApkParseUtils.java index a2671136ff7b..905794bb24de 100644 --- a/core/java/android/content/pm/parsing/ApkParseUtils.java +++ b/core/java/android/content/pm/parsing/ApkParseUtils.java @@ -2101,6 +2101,10 @@ public class ApkParseUtils { parsingPackage.setAllowNativeHeapPointerTagging(sa.getBoolean( R.styleable.AndroidManifestApplication_allowNativeHeapPointerTagging, true)); + parsingPackage.setPreserveLegacyExternalStorage(sa.getBoolean( + R.styleable.AndroidManifestApplication_preserveLegacyExternalStorage, + false)); + parsingPackage .setMaxAspectRatio( sa.getFloat(R.styleable.AndroidManifestApplication_maxAspectRatio, 0)) diff --git a/core/java/android/content/pm/parsing/PackageImpl.java b/core/java/android/content/pm/parsing/PackageImpl.java index 778d7b8b26b6..180714a75143 100644 --- a/core/java/android/content/pm/parsing/PackageImpl.java +++ b/core/java/android/content/pm/parsing/PackageImpl.java @@ -289,6 +289,7 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android private String[] usesLibraryFiles; private List<SharedLibraryInfo> usesLibraryInfos; private String zygotePreloadName; + private boolean preserveLegacyExternalStorage; @VisibleForTesting public PackageImpl( @@ -1519,6 +1520,12 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android } @Override + public PackageImpl setPreserveLegacyExternalStorage(boolean preserveLegacyExternalStorage) { + this.preserveLegacyExternalStorage = preserveLegacyExternalStorage; + return this; + } + + @Override public PackageImpl setUsesNonSdkApi(boolean usesNonSdkApi) { this.privateFlags = usesNonSdkApi ? this.privateFlags | ApplicationInfo.PRIVATE_FLAG_USES_NON_SDK_API @@ -2999,6 +3006,11 @@ public final class PackageImpl implements ParsingPackage, ParsedPackage, Android return queriesProviders; } + @Override + public boolean hasPreserveLegacyExternalStorage() { + return preserveLegacyExternalStorage; + } + private static void internStringArrayList(List<String> list) { if (list != null) { final int N = list.size(); diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java index 954d65c75730..74a2640446f0 100644 --- a/core/java/android/content/pm/parsing/ParsingPackage.java +++ b/core/java/android/content/pm/parsing/ParsingPackage.java @@ -192,6 +192,8 @@ public interface ParsingPackage extends AndroidPackage { ParsingPackage setRequestLegacyExternalStorage(boolean requestLegacyExternalStorage); ParsingPackage setAllowNativeHeapPointerTagging(boolean allowNativeHeapPointerTagging); + + ParsingPackage setPreserveLegacyExternalStorage(boolean preserveLegacyExternalStorage); ParsingPackage setRestoreAnyVersion(boolean restoreAnyVersion); diff --git a/core/java/android/os/storage/StorageManagerInternal.java b/core/java/android/os/storage/StorageManagerInternal.java index 5cac5f580af1..e78aef5b7fbb 100644 --- a/core/java/android/os/storage/StorageManagerInternal.java +++ b/core/java/android/os/storage/StorageManagerInternal.java @@ -118,4 +118,10 @@ public abstract class StorageManagerInternal { * @param userId the userId for which to reset storage */ public abstract void resetUser(int userId); + + /** + * Returns {@code true} if the immediate last installed version of an app with {@code uid} had + * legacy storage, {@code false} otherwise. + */ + public abstract boolean hasLegacyExternalStorage(int uid); } |
