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

Commit 96941c88 authored by Lorenzo Colitti's avatar Lorenzo Colitti Committed by Automerger Merge Worker
Browse files

Merge "New API for getting uids have specific permissions from SystemConfig"...

Merge "New API for getting uids have specific permissions from SystemConfig" am: b8d9e77b am: ee109d8f am: 81d3a2bd am: ce7bd347

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1545266

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: Idc294d1b5dae650fa64949d66d73b85f77edcb39
parents f7b4273b ce7bd347
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8602,6 +8602,7 @@ package android.os {
  public class SystemConfigManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
    method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
    method @NonNull @RequiresPermission(android.Manifest.permission.GET_RUNTIME_PERMISSIONS) public int[] getSystemPermissionUids(@NonNull String);
  }
  public class SystemProperties {
+5 −0
Original line number Diff line number Diff line
@@ -35,4 +35,9 @@ interface ISystemConfig {
     * @see SystemConfigManager#getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries
     */
    Map getDisabledUntilUsedPreinstalledCarrierAssociatedAppEntries();

    /**
     * @see SystemConfigManager#getSystemPermissionUids
     */
    int[] getSystemPermissionUids(String permissionName);
}
+18 −0
Original line number Diff line number Diff line
@@ -111,4 +111,22 @@ public class SystemConfigManager {
            return Collections.emptyMap();
        }
    }

    /**
     * Get uids which have been granted given permission in system configuration.
     *
     * The uids and assigning permissions are defined on data/etc/platform.xml
     *
     * @param permissionName The target permission.
     * @return The uids have been granted given permission in system configuration.
     */
    @RequiresPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS)
    @NonNull
    public int[] getSystemPermissionUids(@NonNull String permissionName) {
        try {
            return mInterface.getSystemPermissionUids(permissionName);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }
}
+20 −0
Original line number Diff line number Diff line
@@ -21,6 +21,10 @@ import static java.util.stream.Collectors.toMap;
import android.Manifest;
import android.content.Context;
import android.os.ISystemConfig;
import android.util.ArraySet;
import android.util.SparseArray;

import com.android.internal.util.ArrayUtils;

import java.util.ArrayList;
import java.util.List;
@@ -64,6 +68,22 @@ public class SystemConfigService extends SystemService {
            return SystemConfig.getInstance()
                    .getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
        }

        @Override
        public int[] getSystemPermissionUids(String permissionName) {
            mContext.enforceCallingOrSelfPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS,
                    "getSystemPermissionUids requires GET_RUNTIME_PERMISSIONS");
            final List<Integer> uids = new ArrayList<>();
            final SparseArray<ArraySet<String>> systemPermissions =
                    SystemConfig.getInstance().getSystemPermissions();
            for (int i = 0; i < systemPermissions.size(); i++) {
                final ArraySet<String> permissions = systemPermissions.valueAt(i);
                if (permissions != null && permissions.contains(permissionName)) {
                    uids.add(systemPermissions.keyAt(i));
                }
            }
            return ArrayUtils.convertToIntArray(uids);
        }
    };

    public SystemConfigService(Context context) {