Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7660c634 authored by Hassan Ali's avatar Hassan Ali Committed by Android (Google) Code Review
Browse files

Merge changes from topic "remove_read_permission"

* changes:
  Stop calling Enforcereadpermission from DeviceConf
  Move enforceReadPermission to Setting.config
parents 61698140 ab384c5b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
+0 −17
Original line number Diff line number Diff line
@@ -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
+16 −1
Original line number Diff line number Diff line
@@ -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) {
+2 −1
Original line number Diff line number Diff line
@@ -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<>();
+2 −2
Original line number Diff line number Diff line
@@ -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) {
Loading