summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Sahana Rao <sahanas@google.com> 2021-04-08 15:42:12 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-04-08 15:42:12 +0000
commit1e98cff664f0d85c3947c474cddc80726aff6f06 (patch)
treed4ec56483ffdd34726d92fc7a242510c804e9f55
parentf461b422d58a59293c6ba4d03505e38a9521ac12 (diff)
parentd40f9b61a5431c7055b52f1499c3a1a17aca4976 (diff)
Merge "Rename requestOptimizedExternalStorageAccess to more precise name" into sc-dev
-rw-r--r--core/api/current.txt2
-rw-r--r--core/api/system-current.txt2
-rw-r--r--core/java/android/content/pm/ApplicationInfo.java30
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackage.java4
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageImpl.java16
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageRead.java2
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageUtils.java6
-rw-r--r--core/res/res/values/attrs_manifest.xml15
-rw-r--r--core/res/res/values/public.xml2
9 files changed, 42 insertions, 37 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index 10c4a4f6877a..1fa4640e7dff 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -1182,7 +1182,7 @@ package android {
field public static final int reqNavigation = 16843306; // 0x101022a
field public static final int reqTouchScreen = 16843303; // 0x1010227
field public static final int requestLegacyExternalStorage = 16844291; // 0x1010603
- field public static final int requestOptimizedExternalStorageAccess;
+ field public static final int requestRawExternalStorageAccess;
field public static final int requireDeviceScreenOn;
field public static final int requireDeviceUnlock = 16843756; // 0x10103ec
field public static final int required = 16843406; // 0x101028e
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index c126dbd64474..76abbf4a741b 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -2508,7 +2508,7 @@ package android.content.om {
package android.content.pm {
public class ApplicationInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
- method @Nullable public Boolean hasRequestOptimizedExternalStorageAccess();
+ method @Nullable public Boolean hasRequestRawExternalStorageAccess();
method public boolean isEncryptionAware();
method public boolean isInstantApp();
method public boolean isOem();
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 6badf0e0addc..6ad204ec31ea 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -1436,11 +1436,11 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
private @NativeHeapZeroInitialized int nativeHeapZeroInitialized = ZEROINIT_DEFAULT;
/**
- * If {@code true} this app requests optimized external storage access.
+ * If {@code true} this app requests raw external storage access.
* The request may not be honored due to policy or other reasons.
*/
@Nullable
- private Boolean requestOptimizedExternalStorageAccess;
+ private Boolean requestRawExternalStorageAccess;
/**
* Represents the default policy. The actual policy used will depend on other properties of
@@ -1598,9 +1598,9 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
if (nativeHeapZeroInitialized != ZEROINIT_DEFAULT) {
pw.println(prefix + "nativeHeapZeroInitialized=" + nativeHeapZeroInitialized);
}
- if (requestOptimizedExternalStorageAccess != null) {
- pw.println(prefix + "requestOptimizedExternalStorageAccess="
- + requestOptimizedExternalStorageAccess);
+ if (requestRawExternalStorageAccess != null) {
+ pw.println(prefix + "requestRawExternalStorageAccess="
+ + requestRawExternalStorageAccess);
}
}
super.dumpBack(pw, prefix);
@@ -1829,7 +1829,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
gwpAsanMode = orig.gwpAsanMode;
memtagMode = orig.memtagMode;
nativeHeapZeroInitialized = orig.nativeHeapZeroInitialized;
- requestOptimizedExternalStorageAccess = orig.requestOptimizedExternalStorageAccess;
+ requestRawExternalStorageAccess = orig.requestRawExternalStorageAccess;
}
public String toString() {
@@ -1918,7 +1918,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
dest.writeInt(gwpAsanMode);
dest.writeInt(memtagMode);
dest.writeInt(nativeHeapZeroInitialized);
- sForBoolean.parcel(requestOptimizedExternalStorageAccess, dest, parcelableFlags);
+ sForBoolean.parcel(requestRawExternalStorageAccess, dest, parcelableFlags);
}
public static final @android.annotation.NonNull Parcelable.Creator<ApplicationInfo> CREATOR
@@ -2004,7 +2004,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
gwpAsanMode = source.readInt();
memtagMode = source.readInt();
nativeHeapZeroInitialized = source.readInt();
- requestOptimizedExternalStorageAccess = sForBoolean.unparcel(source);
+ requestRawExternalStorageAccess = sForBoolean.unparcel(source);
}
/**
@@ -2121,10 +2121,10 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
/**
* @return
* <ul>
- * <li>{@code true} if this app requested optimized external storage access
- * <li>{@code false} if this app requests to disable optimized external storage access.
+ * <li>{@code true} if this app requested raw external storage access
+ * <li>{@code false} if this app requests to disable raw external storage access.
* <li>{@code null} if the app didn't specify
- * {@link android.R.styleable#AndroidManifestApplication_requestOptimizedExternalStorageAccess}
+ * {@link android.R.styleable#AndroidManifestApplication_requestRawExternalStorageAccess}
* in its manifest file.
* </ul>
*
@@ -2132,8 +2132,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
*/
@SystemApi
@Nullable
- public Boolean hasRequestOptimizedExternalStorageAccess() {
- return requestOptimizedExternalStorageAccess;
+ public Boolean hasRequestRawExternalStorageAccess() {
+ return requestRawExternalStorageAccess;
}
/**
@@ -2421,8 +2421,8 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable {
nativeHeapZeroInitialized = value;
}
/** {@hide} */
- public void setRequestOptimizedExternalStorageAccess(@Nullable Boolean value) {
- requestOptimizedExternalStorageAccess = value;
+ public void setRequestRawExternalStorageAccess(@Nullable Boolean value) {
+ requestRawExternalStorageAccess = value;
}
/** {@hide} */
diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java
index 1c65e0014635..8dcba7ff4525 100644
--- a/core/java/android/content/pm/parsing/ParsingPackage.java
+++ b/core/java/android/content/pm/parsing/ParsingPackage.java
@@ -259,8 +259,8 @@ public interface ParsingPackage extends ParsingPackageRead {
ParsingPackage setNativeHeapZeroInitialized(
@ApplicationInfo.NativeHeapZeroInitialized int nativeHeapZeroInitialized);
- ParsingPackage setRequestOptimizedExternalStorageAccess(
- @Nullable Boolean requestOptimizedExternalStorageAccess);
+ ParsingPackage setRequestRawExternalStorageAccess(
+ @Nullable Boolean requestRawExternalStorageAccess);
ParsingPackage setCrossProfile(boolean crossProfile);
diff --git a/core/java/android/content/pm/parsing/ParsingPackageImpl.java b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
index 97e1b543520e..ea7135eb416e 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
@@ -400,7 +400,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
@Nullable
@DataClass.ParcelWith(ForBoolean.class)
- private Boolean requestOptimizedExternalStorageAccess;
+ private Boolean requestRawExternalStorageAccess;
// TODO(chiuwinson): Non-null
@Nullable
@@ -1086,7 +1086,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
appInfo.setGwpAsanMode(gwpAsanMode);
appInfo.setMemtagMode(memtagMode);
appInfo.setNativeHeapZeroInitialized(nativeHeapZeroInitialized);
- appInfo.setRequestOptimizedExternalStorageAccess(requestOptimizedExternalStorageAccess);
+ appInfo.setRequestRawExternalStorageAccess(requestRawExternalStorageAccess);
appInfo.setBaseCodePath(mBaseApkPath);
appInfo.setBaseResourcePath(mBaseApkPath);
appInfo.setCodePath(mPath);
@@ -1223,7 +1223,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
dest.writeMap(this.mProperties);
dest.writeInt(this.memtagMode);
dest.writeInt(this.nativeHeapZeroInitialized);
- sForBoolean.parcel(this.requestOptimizedExternalStorageAccess, dest, flags);
+ sForBoolean.parcel(this.requestRawExternalStorageAccess, dest, flags);
}
public ParsingPackageImpl(Parcel in) {
@@ -1348,7 +1348,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
this.mProperties = in.readHashMap(boot);
this.memtagMode = in.readInt();
this.nativeHeapZeroInitialized = in.readInt();
- this.requestOptimizedExternalStorageAccess = sForBoolean.unparcel(in);
+ this.requestRawExternalStorageAccess = sForBoolean.unparcel(in);
assignDerivedFields();
}
@@ -2131,8 +2131,8 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
@Nullable
@Override
- public Boolean hasRequestOptimizedExternalStorageAccess() {
- return requestOptimizedExternalStorageAccess;
+ public Boolean hasRequestRawExternalStorageAccess() {
+ return requestRawExternalStorageAccess;
}
@Override
@@ -2586,8 +2586,8 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable {
}
@Override
- public ParsingPackageImpl setRequestOptimizedExternalStorageAccess(@Nullable Boolean value) {
- requestOptimizedExternalStorageAccess = value;
+ public ParsingPackageImpl setRequestRawExternalStorageAccess(@Nullable Boolean value) {
+ requestRawExternalStorageAccess = value;
return this;
}
@Override
diff --git a/core/java/android/content/pm/parsing/ParsingPackageRead.java b/core/java/android/content/pm/parsing/ParsingPackageRead.java
index cfd828ec7d3e..4d4cc1a4aa18 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageRead.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageRead.java
@@ -905,7 +905,7 @@ public interface ParsingPackageRead extends Parcelable {
int getNativeHeapZeroInitialized();
@Nullable
- Boolean hasRequestOptimizedExternalStorageAccess();
+ Boolean hasRequestRawExternalStorageAccess();
// TODO(b/135203078): Hide and enforce going through PackageInfoUtils
ApplicationInfo toAppInfoWithoutState();
diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java
index 4e7bd7046fc2..a1ffc0ca5378 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java
@@ -2019,9 +2019,9 @@ public class ParsingPackageUtils {
v ? ApplicationInfo.ZEROINIT_ENABLED : ApplicationInfo.ZEROINIT_DISABLED);
}
if (sa.hasValue(
- R.styleable.AndroidManifestApplication_requestOptimizedExternalStorageAccess)) {
- pkg.setRequestOptimizedExternalStorageAccess(sa.getBoolean(R.styleable
- .AndroidManifestApplication_requestOptimizedExternalStorageAccess,
+ R.styleable.AndroidManifestApplication_requestRawExternalStorageAccess)) {
+ pkg.setRequestRawExternalStorageAccess(sa.getBoolean(R.styleable
+ .AndroidManifestApplication_requestRawExternalStorageAccess,
false));
}
} finally {
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 986bb820eb2c..c51b2d84ab6d 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -1867,16 +1867,21 @@
-->
<attr name="preserveLegacyExternalStorage" format="boolean" />
- <!-- If {@code true} this app would like optimized external storage access.
+ <!-- If {@code true} this app would like raw external storage access.
<p> This flag can only be used by apps holding
<ul>
<li>{@link android.Manifest.permission#MANAGE_EXTERNAL_STORAGE} permission or
<li>{@link android.app.role}#SYSTEM_GALLERY role.
</ul>
- When the flag is set, bulk file path operations will be optimized.
-
- The default value is {@code true} if
+ <p> When the flag is set, all file path access on external storage will bypass database
+ operations that update MediaStore collection. Raw external storage access as a side effect
+ can improve performance of bulk file path operations but can cause unexpected behavior in
+ apps due to inconsistencies in MediaStore collection and lower file system.
+ When the flag is set, app should scan the file after file path operations to ensure
+ consistency of MediaStore collection.
+
+ <p> The default value is {@code true} if
<ul>
<li>app has {@link android.Manifest.permission#MANAGE_EXTERNAL_STORAGE} permission and
targets targetSDK<=30.
@@ -1884,7 +1889,7 @@
</ul>
{@code false} otherwise.
-->
- <attr name="requestOptimizedExternalStorageAccess" format="boolean" />
+ <attr name="requestRawExternalStorageAccess" format="boolean" />
<!-- If {@code true} this app declares that it should be visible to all other apps on
device, regardless of what they declare via the {@code queries} tags in their
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index b402c956e2ef..3a5621b4fbbd 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -3092,7 +3092,7 @@
<public name="attributionTags"/>
<public name="suppressesSpellChecker" />
<public name="usesPermissionFlags" />
- <public name="requestOptimizedExternalStorageAccess" />
+ <public name="requestRawExternalStorageAccess" />
<!-- @hide @SystemApi -->
<public name="playHomeTransitionSound" />
<public name="lStar" />