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

Commit 979c3103 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by android-build-merger
Browse files

Merge "Call PermissionControllerService on workerthread" into qt-dev

am: 4da5dc4d

Change-Id: I1823a57f447168a8b593d4576bef288c0a007523
parents 3b66b092 4da5dc4d
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -5661,16 +5661,16 @@ package android.permission {
    ctor public PermissionControllerService();
    method public final void attachBaseContext(android.content.Context);
    method @NonNull public final android.os.IBinder onBind(android.content.Intent);
    method public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int);
    method @NonNull public abstract java.util.List<android.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
    method @NonNull public abstract java.util.List<android.permission.RuntimePermissionUsageInfo> onGetPermissionUsages(boolean, long);
    method public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream);
    method public abstract void onGrantOrUpgradeDefaultRuntimePermissions();
    method @WorkerThread public abstract int onCountPermissionApps(@NonNull java.util.List<java.lang.String>, int);
    method @WorkerThread @NonNull public abstract java.util.List<android.permission.RuntimePermissionPresentationInfo> onGetAppPermissions(@NonNull String);
    method @WorkerThread @NonNull public abstract java.util.List<android.permission.RuntimePermissionUsageInfo> onGetPermissionUsages(boolean, long);
    method @WorkerThread public abstract void onGetRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.OutputStream);
    method @WorkerThread public abstract void onGrantOrUpgradeDefaultRuntimePermissions();
    method @BinderThread public abstract boolean onRestoreDelayedRuntimePermissionsBackup(@NonNull String, @NonNull android.os.UserHandle);
    method @BinderThread public abstract void onRestoreRuntimePermissionsBackup(@NonNull android.os.UserHandle, @NonNull java.io.InputStream);
    method public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String);
    method @NonNull public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String);
    method public abstract boolean onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int);
    method @WorkerThread public abstract void onRevokeRuntimePermission(@NonNull String, @NonNull String);
    method @WorkerThread @NonNull public abstract java.util.Map<java.lang.String,java.util.List<java.lang.String>> onRevokeRuntimePermissions(@NonNull java.util.Map<java.lang.String,java.util.List<java.lang.String>>, boolean, int, @NonNull String);
    method @WorkerThread public abstract boolean onSetRuntimePermissionGrantStateByDeviceAdmin(@NonNull String, @NonNull String, @NonNull String, int);
    field public static final String SERVICE_INTERFACE = "android.permission.PermissionControllerService";
  }
+34 −29
Original line number Diff line number Diff line
@@ -28,18 +28,19 @@ import static com.android.internal.util.Preconditions.checkCollectionElementsNot
import static com.android.internal.util.Preconditions.checkFlagsArgument;
import static com.android.internal.util.Preconditions.checkNotNull;
import static com.android.internal.util.Preconditions.checkStringNotEmpty;
import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;

import android.Manifest;
import android.annotation.BinderThread;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.annotation.WorkerThread;
import android.app.Service;
import android.app.admin.DevicePolicyManager.PermissionGrantState;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -96,6 +97,7 @@ public abstract class PermissionControllerService extends Service {
     *
     * @return the actually removed permissions as {@code Map<packageName, List<permission>>}
     */
    @WorkerThread
    public abstract @NonNull Map<String, List<String>> onRevokeRuntimePermissions(
            @NonNull Map<String, List<String>> requests, boolean doDryRun,
            @PermissionControllerManager.Reason int reason, @NonNull String callerPackageName);
@@ -106,6 +108,7 @@ public abstract class PermissionControllerService extends Service {
     * @param user The user to back up
     * @param backup The stream to write the backup to
     */
    @WorkerThread
    public abstract void onGetRuntimePermissionsBackup(@NonNull UserHandle user,
            @NonNull OutputStream backup);

@@ -142,6 +145,7 @@ public abstract class PermissionControllerService extends Service {
     *
     * @return descriptions of the runtime permissions of the app
     */
    @WorkerThread
    public abstract @NonNull List<RuntimePermissionPresentationInfo> onGetAppPermissions(
            @NonNull String packageName);

@@ -151,6 +155,7 @@ public abstract class PermissionControllerService extends Service {
     * @param packageName The package for which to revoke
     * @param permissionName The permission to revoke
     */
    @WorkerThread
    public abstract void onRevokeRuntimePermission(@NonNull String packageName,
            @NonNull String permissionName);

@@ -163,6 +168,7 @@ public abstract class PermissionControllerService extends Service {
     *
     * @return the number of apps that have one of the permissions
     */
    @WorkerThread
    public abstract int onCountPermissionApps(@NonNull List<String> permissionNames,
            @CountPermissionAppsFlag int flags);

@@ -174,6 +180,7 @@ public abstract class PermissionControllerService extends Service {
     *
     * @return descriptions of the users of permissions
     */
    @WorkerThread
    public abstract @NonNull List<RuntimePermissionUsageInfo> onGetPermissionUsages(
            boolean countSystem, long numMillis);

@@ -186,6 +193,7 @@ public abstract class PermissionControllerService extends Service {
     * @see PermissionManager#getRuntimePermissionsVersion()
     * @see PermissionManager#setRuntimePermissionsVersion(int)
     */
    @WorkerThread
    public abstract void onGrantOrUpgradeDefaultRuntimePermissions();

    /**
@@ -196,6 +204,7 @@ public abstract class PermissionControllerService extends Service {
     * @param permission Permission to change
     * @param grantState State to set the permission into
     */
    @WorkerThread
    public abstract boolean onSetRuntimePermissionGrantStateByDeviceAdmin(
            @NonNull String callerPackageName, @NonNull String packageName,
            @NonNull String permission, @PermissionGrantState int grantState);
@@ -232,10 +241,9 @@ public abstract class PermissionControllerService extends Service {
                    throw new RuntimeException(e);
                }

                mHandler.sendMessage(obtainMessage(
                        PermissionControllerService::revokeRuntimePermissions,
                        PermissionControllerService.this, request, doDryRun, reason,
                        callerPackageName, callback));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(() ->
                        PermissionControllerService.this.revokeRuntimePermissions(request, doDryRun,
                                reason, callerPackageName, callback));
            }

            @Override
@@ -245,9 +253,8 @@ public abstract class PermissionControllerService extends Service {

                enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null);

                mHandler.sendMessage(obtainMessage(
                        PermissionControllerService::getRuntimePermissionsBackup,
                        PermissionControllerService.this, user, pipe));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(() ->
                        PermissionControllerService.this.getRuntimePermissionsBackup(user, pipe));
            }

            @Override
@@ -287,9 +294,9 @@ public abstract class PermissionControllerService extends Service {

                enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null);

                mHandler.sendMessage(
                        obtainMessage(PermissionControllerService::getAppPermissions,
                                PermissionControllerService.this, packageName, callback));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(
                        () -> PermissionControllerService.this.getAppPermissions(packageName,
                                callback));
            }

            @Override
@@ -299,9 +306,9 @@ public abstract class PermissionControllerService extends Service {

                enforceCallingPermission(Manifest.permission.REVOKE_RUNTIME_PERMISSIONS, null);

                mHandler.sendMessage(
                        obtainMessage(PermissionControllerService::onRevokeRuntimePermission,
                                PermissionControllerService.this, packageName, permissionName));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(
                        () -> PermissionControllerService.this.onRevokeRuntimePermission(
                                packageName, permissionName));
            }

            @Override
@@ -313,10 +320,9 @@ public abstract class PermissionControllerService extends Service {

                enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null);

                mHandler.sendMessage(
                        obtainMessage(PermissionControllerService::countPermissionApps,
                                PermissionControllerService.this, permissionNames, flags,
                                callback));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(
                        () -> PermissionControllerService.this.countPermissionApps(permissionNames,
                                flags, callback));
            }

            @Override
@@ -327,10 +333,9 @@ public abstract class PermissionControllerService extends Service {

                enforceCallingPermission(Manifest.permission.GET_RUNTIME_PERMISSIONS, null);

                mHandler.sendMessage(
                        obtainMessage(PermissionControllerService::getPermissionUsages,
                                PermissionControllerService.this, countSystem, numMillis,
                                callback));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(
                        () -> PermissionControllerService.this.getPermissionUsages(countSystem,
                                numMillis, callback));
            }

            @Override
@@ -356,10 +361,10 @@ public abstract class PermissionControllerService extends Service {
                enforceCallingPermission(Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
                        null);

                mHandler.sendMessage(obtainMessage(
                        PermissionControllerService::setRuntimePermissionGrantStateByDeviceAdmin,
                        PermissionControllerService.this, callerPackageName, packageName,
                        permission, grantState, callback));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(
                        () -> PermissionControllerService.this
                                .setRuntimePermissionGrantStateByDeviceAdmin(callerPackageName,
                                        packageName, permission, grantState, callback));
            }

            @Override
@@ -369,9 +374,9 @@ public abstract class PermissionControllerService extends Service {
                enforceCallingPermission(Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
                        null);

                mHandler.sendMessage(obtainMessage(
                        PermissionControllerService::grantOrUpgradeDefaultRuntimePermissions,
                        PermissionControllerService.this, callback));
                AsyncTask.THREAD_POOL_EXECUTOR.execute(
                        () -> PermissionControllerService.this
                                .grantOrUpgradeDefaultRuntimePermissions(callback));
            }
        };
    }