summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Hassan Ali <hsnali@google.com> 2022-12-07 00:18:09 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2022-12-07 00:18:09 +0000
commit7660c6341f1ecd9fbde51921728555ed9bfb8b51 (patch)
treeef2f25adb38e6993592b943d9c460178850da2a3
parent61698140cecb1c8a607cc1c5fe88d36a383aac1c (diff)
parentab384c5b7210d35ebf88105859d353c7dad56d99 (diff)
Merge changes from topic "remove_read_permission"
* changes: Stop calling Enforcereadpermission from DeviceConf Move enforceReadPermission to Setting.config
-rw-r--r--core/api/system-current.txt2
-rw-r--r--core/java/android/provider/DeviceConfig.java17
-rw-r--r--core/java/android/provider/Settings.java17
-rw-r--r--core/java/com/android/internal/jank/InteractionJankMonitor.java3
-rw-r--r--packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/util/DeviceConfigProxy.java7
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/util/DeviceConfigProxyFake.java5
7 files changed, 21 insertions, 34 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt
index 561ec10e6709..a6873790879e 100644
--- a/core/api/system-current.txt
+++ b/core/api/system-current.txt
@@ -10704,7 +10704,7 @@ package android.provider {
}
public final class DeviceConfig {
- method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static void addOnPropertiesChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
+ method public static void addOnPropertiesChangedListener(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.provider.DeviceConfig.OnPropertiesChangedListener);
method @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static boolean deleteProperty(@NonNull String, @NonNull String);
method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static boolean getBoolean(@NonNull String, @NonNull String, boolean);
method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public static float getFloat(@NonNull String, @NonNull String, float);
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index ab878202cfda..7df9290274ce 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -25,7 +25,6 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SuppressLint;
import android.annotation.SystemApi;
-import android.content.pm.PackageManager;
import android.database.ContentObserver;
import android.net.Uri;
import android.provider.Settings.Config.SyncDisabledMode;
@@ -1168,12 +1167,10 @@ public final class DeviceConfig {
* @see #removeOnPropertiesChangedListener(OnPropertiesChangedListener)
*/
@SystemApi
- @RequiresPermission(READ_DEVICE_CONFIG)
public static void addOnPropertiesChangedListener(
@NonNull String namespace,
@NonNull @CallbackExecutor Executor executor,
@NonNull OnPropertiesChangedListener onPropertiesChangedListener) {
- enforceReadPermission(namespace);
synchronized (sLock) {
Pair<String, Executor> oldNamespace = sListeners.get(onPropertiesChangedListener);
if (oldNamespace == null) {
@@ -1296,20 +1293,6 @@ public final class DeviceConfig {
}
/**
- * Enforces READ_DEVICE_CONFIG permission if namespace is not one of public namespaces.
- * @hide
- */
- public static void enforceReadPermission(@NonNull String namespace) {
- if (Settings.Config.checkCallingOrSelfPermission(READ_DEVICE_CONFIG)
- != PackageManager.PERMISSION_GRANTED) {
- if (!PUBLIC_NAMESPACES.contains(namespace)) {
- throw new SecurityException("Permission denial: reading from settings requires:"
- + READ_DEVICE_CONFIG);
- }
- }
- }
-
- /**
* Returns list of namespaces that can be read without READ_DEVICE_CONFIG_PERMISSION;
* @hide
*/
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index f3e8b7c1e941..03846dbcfb68 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3366,7 +3366,7 @@ public final class Settings {
public ArrayMap<String, String> getStringsForPrefix(ContentResolver cr, String prefix,
List<String> names) {
String namespace = prefix.substring(0, prefix.length() - 1);
- DeviceConfig.enforceReadPermission(namespace);
+ Config.enforceReadPermission(namespace);
ArrayMap<String, String> keyValues = new ArrayMap<>();
int currentGeneration = -1;
@@ -18370,6 +18370,21 @@ public final class Settings {
.getApplicationContext().checkCallingOrSelfPermission(permission);
}
+ /**
+ * Enforces READ_DEVICE_CONFIG permission if namespace is not one of public namespaces.
+ * @hide
+ */
+ public static void enforceReadPermission(String namespace) {
+ if (ActivityThread.currentApplication().getApplicationContext()
+ .checkCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG)
+ != PackageManager.PERMISSION_GRANTED) {
+ if (!DeviceConfig.getPublicNamespaces().contains(namespace)) {
+ throw new SecurityException("Permission denial: reading from settings requires:"
+ + Manifest.permission.READ_DEVICE_CONFIG);
+ }
+ }
+ }
+
private static void registerMonitorCallbackAsUser(
@NonNull ContentResolver resolver, @UserIdInt int userHandle,
@NonNull RemoteCallback callback) {
diff --git a/core/java/com/android/internal/jank/InteractionJankMonitor.java b/core/java/com/android/internal/jank/InteractionJankMonitor.java
index 614f96255acb..75f0bf574947 100644
--- a/core/java/com/android/internal/jank/InteractionJankMonitor.java
+++ b/core/java/com/android/internal/jank/InteractionJankMonitor.java
@@ -97,6 +97,7 @@ import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.provider.DeviceConfig;
+import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.util.SparseArray;
@@ -415,7 +416,7 @@ public class InteractionJankMonitor {
@VisibleForTesting
public InteractionJankMonitor(@NonNull HandlerThread worker) {
// Check permission early.
- DeviceConfig.enforceReadPermission(
+ Settings.Config.enforceReadPermission(
DeviceConfig.NAMESPACE_INTERACTION_JANK_MONITOR);
mRunningTrackers = new SparseArray<>();
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 503859b8dc38..9192086de98a 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -1144,7 +1144,7 @@ public class SettingsProvider extends ContentProvider {
Slog.v(LOG_TAG, "getConfigSetting(" + name + ")");
}
- DeviceConfig.enforceReadPermission(/*namespace=*/name.split("/")[0]);
+ Settings.Config.enforceReadPermission(/*namespace=*/name.split("/")[0]);
// Get the value.
synchronized (mLock) {
@@ -1317,7 +1317,7 @@ public class SettingsProvider extends ContentProvider {
Slog.v(LOG_TAG, "getAllConfigFlags() for " + prefix);
}
- DeviceConfig.enforceReadPermission(
+ Settings.Config.enforceReadPermission(
prefix != null ? prefix.split("/")[0] : null);
synchronized (mLock) {
diff --git a/packages/SystemUI/src/com/android/systemui/util/DeviceConfigProxy.java b/packages/SystemUI/src/com/android/systemui/util/DeviceConfigProxy.java
index 0f3eddf2eb7c..bff6132d5e23 100644
--- a/packages/SystemUI/src/com/android/systemui/util/DeviceConfigProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/util/DeviceConfigProxy.java
@@ -50,13 +50,6 @@ public class DeviceConfigProxy {
}
/**
- * Wrapped version of {@link DeviceConfig#enforceReadPermission}.
- */
- public void enforceReadPermission(String namespace) {
- DeviceConfig.enforceReadPermission(namespace);
- }
-
- /**
* Wrapped version of {@link DeviceConfig#getBoolean}.
*/
public boolean getBoolean(
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/util/DeviceConfigProxyFake.java b/packages/SystemUI/tests/utils/src/com/android/systemui/util/DeviceConfigProxyFake.java
index 21e16a1e7be4..8a10bf064910 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/util/DeviceConfigProxyFake.java
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/util/DeviceConfigProxyFake.java
@@ -81,11 +81,6 @@ public class DeviceConfigProxyFake extends DeviceConfigProxy {
properties.get(namespace).put(name, value);
}
- @Override
- public void enforceReadPermission(String namespace) {
- // no-op
- }
-
private Properties propsForNamespaceAndName(String namespace, String name) {
if (mProperties.containsKey(namespace) && mProperties.get(namespace).containsKey(name)) {
return new Properties.Builder(namespace)