diff --git a/core/api/current.txt b/core/api/current.txt
index 6b775234ad7a1..5e5cb34917a17 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -1204,6 +1204,7 @@ package android {
field public static final int requiredSplitTypes;
field public static final int requiresFadingEdge = 16843685; // 0x10103a5
field public static final int requiresSmallestWidthDp = 16843620; // 0x1010364
+ field public static final int resetEnabledSettingsOnAppDataCleared;
field public static final int resizeClip = 16843983; // 0x10104cf
field public static final int resizeMode = 16843619; // 0x1010363
field public static final int resizeable = 16843405; // 0x101028d
diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java
index 14d69ccdf17d6..056f99fcc004e 100644
--- a/core/java/android/content/pm/parsing/ParsingPackage.java
+++ b/core/java/android/content/pm/parsing/ParsingPackage.java
@@ -362,6 +362,9 @@ public interface ParsingPackage extends ParsingPackageRead {
ParsingPackage setAttributionsAreUserVisible(boolean attributionsAreUserVisible);
+ ParsingPackage setResetEnabledSettingsOnAppDataCleared(
+ boolean resetEnabledSettingsOnAppDataCleared);
+
// TODO(b/135203078): This class no longer has access to ParsedPackage, find a replacement
// for moving to the next step
@CallSuper
diff --git a/core/java/android/content/pm/parsing/ParsingPackageImpl.java b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
index edddf408d1af6..f07f3827c1c91 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageImpl.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageImpl.java
@@ -517,6 +517,7 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
private static final long DISALLOW_PROFILING = 1L << 45;
private static final long REQUEST_FOREGROUND_SERVICE_EXEMPTION = 1L << 46;
private static final long ATTRIBUTIONS_ARE_USER_VISIBLE = 1L << 47;
+ private static final long RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED = 1L << 48;
}
private ParsingPackageImpl setBoolean(@Booleans.Values long flag, boolean value) {
@@ -2215,6 +2216,11 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
return getBoolean(Booleans.ATTRIBUTIONS_ARE_USER_VISIBLE);
}
+ @Override
+ public boolean isResetEnabledSettingsOnAppDataCleared() {
+ return getBoolean(Booleans.RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED);
+ }
+
@Override
public ParsingPackageImpl setBaseRevisionCode(int value) {
baseRevisionCode = value;
@@ -2771,4 +2777,12 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
setBoolean(Booleans.ATTRIBUTIONS_ARE_USER_VISIBLE, attributionsAreUserVisible);
return this;
}
+
+ @Override
+ public ParsingPackage setResetEnabledSettingsOnAppDataCleared(
+ boolean resetEnabledSettingsOnAppDataCleared) {
+ setBoolean(Booleans.RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED,
+ resetEnabledSettingsOnAppDataCleared);
+ return this;
+ }
}
diff --git a/core/java/android/content/pm/parsing/ParsingPackageRead.java b/core/java/android/content/pm/parsing/ParsingPackageRead.java
index 4a249bb0846e4..2933f955bb8cd 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageRead.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageRead.java
@@ -297,4 +297,12 @@ public interface ParsingPackageRead extends PkgWithoutStateAppInfo, PkgWithoutSt
* @see R.styleable#AndroidManifestService_visibleToInstantApps
*/
boolean isVisibleToInstantApps();
+
+ /**
+ * Whether the enabled settings of components in the application should be reset to the default,
+ * when the application's user data is cleared.
+ *
+ * @see R.styleable#AndroidManifestApplication_resetEnabledSettingsOnAppDataCleared
+ */
+ boolean isResetEnabledSettingsOnAppDataCleared();
}
diff --git a/core/java/android/content/pm/parsing/ParsingPackageUtils.java b/core/java/android/content/pm/parsing/ParsingPackageUtils.java
index e3a5de514b220..d2ac87395f628 100644
--- a/core/java/android/content/pm/parsing/ParsingPackageUtils.java
+++ b/core/java/android/content/pm/parsing/ParsingPackageUtils.java
@@ -2288,6 +2288,9 @@ public class ParsingPackageUtils {
.setVmSafeMode(bool(false, R.styleable.AndroidManifestApplication_vmSafeMode, sa))
.setAutoRevokePermissions(anInt(R.styleable.AndroidManifestApplication_autoRevokePermissions, sa))
.setAttributionsAreUserVisible(bool(false, R.styleable.AndroidManifestApplication_attributionsAreUserVisible, sa))
+ .setResetEnabledSettingsOnAppDataCleared(bool(false,
+ R.styleable.AndroidManifestApplication_resetEnabledSettingsOnAppDataCleared,
+ sa))
// targetSdkVersion gated
.setAllowAudioPlaybackCapture(bool(targetSdk >= Build.VERSION_CODES.Q, R.styleable.AndroidManifestApplication_allowAudioPlaybackCapture, sa))
.setBaseHardwareAccelerated(bool(targetSdk >= Build.VERSION_CODES.ICE_CREAM_SANDWICH, R.styleable.AndroidManifestApplication_hardwareAccelerated, sa))
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 7805d46188e9a..94717b11deb26 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -1991,6 +1991,12 @@
+
+
+