summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorNandana Dutt <nandana@google.com>2020-02-15 21:59:23 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2020-02-15 21:59:23 +0000
commit5ff3568929b6190702df1a5dbed5b58374dc4144 (patch)
tree1aac870f67d2f6ef8f8d69da8db7be88c8af8a48 /core/java
parent1d2f970c02734ef94c44420f9247ac206b3e5ae2 (diff)
parent3ce38499e47e5a3f3847b2b7d47dca63f22318a6 (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')
-rw-r--r--core/java/android/content/pm/parsing/AndroidPackage.java2
-rw-r--r--core/java/android/content/pm/parsing/ApkParseUtils.java4
-rw-r--r--core/java/android/content/pm/parsing/PackageImpl.java12
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackage.java2
-rw-r--r--core/java/android/os/storage/StorageManagerInternal.java6
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);
}