Merge changes from topic "remove_read_permission"
* changes: Stop calling Enforcereadpermission from DeviceConf Move enforceReadPermission to Setting.config
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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) {
|
||||
@@ -1295,20 +1292,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
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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<>();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -49,13 +49,6 @@ public class DeviceConfigProxy {
|
||||
namespace, executor, onPropertiesChangedListener);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapped version of {@link DeviceConfig#enforceReadPermission}.
|
||||
*/
|
||||
public void enforceReadPermission(String namespace) {
|
||||
DeviceConfig.enforceReadPermission(namespace);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrapped version of {@link DeviceConfig#getBoolean}.
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user