summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorRhed Jao <rhedjao@google.com>2021-11-08 14:14:36 +0800
committerRhed Jao <rhedjao@google.com>2021-11-17 19:54:04 +0800
commit20ebc021d64471de9225a6b56cae09ae16f82d5f (patch)
tree4613dcfddd72a598e85472dfe6e7b53daf3213da /core/java/android
parent8181f28f1b98f1320137777cb1e41c471ce83b0e (diff)
Reset component enabled settings when clearing app data
Introduces a new attriubte named resetEnabledSettingsOnAppDataCleared for the components in the manifest such as activity, receiver, provider and service. If the value is true, the enabled settings of components in the application will be reset to the default value when the application's user data is cleared. Bug: 148803217 Test: atest PackageManagerTest Test: atest AndroidPackageTest Change-Id: Id10ae9768835b20619122a6435442fbdaefb9318
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackage.java3
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageImpl.java14
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageRead.java8
-rw-r--r--core/java/android/content/pm/parsing/ParsingPackageUtils.java3
4 files changed, 28 insertions, 0 deletions
diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java
index 14d69ccdf17d..056f99fcc004 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 edddf408d1af..f07f3827c1c9 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) {
@@ -2216,6 +2217,11 @@ public class ParsingPackageImpl implements ParsingPackage, ParsingPackageHidden,
}
@Override
+ public boolean isResetEnabledSettingsOnAppDataCleared() {
+ return getBoolean(Booleans.RESET_ENABLED_SETTINGS_ON_APP_DATA_CLEARED);
+ }
+
+ @Override
public ParsingPackageImpl setBaseRevisionCode(int value) {
baseRevisionCode = value;
return this;
@@ -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 4a249bb0846e..2933f955bb8c 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 e3a5de514b22..d2ac87395f62 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))