From d40f9b61a5431c7055b52f1499c3a1a17aca4976 Mon Sep 17 00:00:00 2001 From: Sahana Rao Date: Tue, 6 Apr 2021 00:30:57 +0100 Subject: [PATCH] Rename requestOptimizedExternalStorageAccess to more precise name When apps use requestOptimizedExternalStorageAccess flag, they get additional performance benefit by bypassing database operations. They still have to scan the file to update MediaStore collection otherwise MediaStore collection can go inconsistent with lower file system. Current flag name could lead to apps making wrong assumptions hence changing the name to more precise name. Bug: 178209446 Test: atest packages/providers/MediaProvider Change-Id: I00747da9ea53566cbcdd8aa8b2195e536b397b67 --- core/api/current.txt | 2 +- core/api/system-current.txt | 2 +- .../android/content/pm/ApplicationInfo.java | 30 +++++++++---------- .../content/pm/parsing/ParsingPackage.java | 4 +-- .../pm/parsing/ParsingPackageImpl.java | 16 +++++----- .../pm/parsing/ParsingPackageRead.java | 2 +- .../pm/parsing/ParsingPackageUtils.java | 6 ++-- core/res/res/values/attrs_manifest.xml | 13 +++++--- core/res/res/values/public.xml | 2 +- 9 files changed, 41 insertions(+), 36 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 3d00bda551bc9..23ce673a23330 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 091b8e5d6e9ac..76a15276927f4 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -2494,7 +2494,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 6badf0e0addc5..6ad204ec31eab 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 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 * * @@ -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 1c65e00146357..8dcba7ff45256 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 72c9879c93607..814d2849a43f1 100644 --- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java +++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java @@ -401,7 +401,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { @Nullable @DataClass.ParcelWith(ForBoolean.class) - private Boolean requestOptimizedExternalStorageAccess; + private Boolean requestRawExternalStorageAccess; // TODO(chiuwinson): Non-null @Nullable @@ -1087,7 +1087,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); @@ -1224,7 +1224,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) { @@ -1349,7 +1349,7 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { this.mProperties = in.createTypedArrayMap(Property.CREATOR); this.memtagMode = in.readInt(); this.nativeHeapZeroInitialized = in.readInt(); - this.requestOptimizedExternalStorageAccess = sForBoolean.unparcel(in); + this.requestRawExternalStorageAccess = sForBoolean.unparcel(in); assignDerivedFields(); } @@ -2132,8 +2132,8 @@ public class ParsingPackageImpl implements ParsingPackage, Parcelable { @Nullable @Override - public Boolean hasRequestOptimizedExternalStorageAccess() { - return requestOptimizedExternalStorageAccess; + public Boolean hasRequestRawExternalStorageAccess() { + return requestRawExternalStorageAccess; } @Override @@ -2587,8 +2587,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 cfd828ec7d3e4..4d4cc1a4aa18f 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 4e7bd7046fc22..a1ffc0ca53784 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 986bb820eb2c6..c51b2d84ab6d2 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1867,16 +1867,21 @@ --> - - +