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

Commit c971a45e authored by Todd Kennedy's avatar Todd Kennedy
Browse files

Move grant/revoke permission APIs

These were the last few APIs that used the permission callback.
Completely remove it from the package manager and full implement
in the permission manager.

Bug: 135279435
Test: atest PermissionUpdateListenerTest
Test: android.content.pm.cts.PackageManagerTest
Test: android.permission2.cts.RestrictedPermissionsTest
Change-Id: Iab7c20215c907f4718f78a98fb96afec9fef6780
parent 7e3dd3af
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -707,15 +707,15 @@ public class ApplicationPackageManager extends PackageManager {
    }

    @Override
    public void revokeRuntimePermission(String packageName, String permissionName,
            UserHandle user) {
    public void revokeRuntimePermission(String packageName, String permName, UserHandle user) {
        if (DEBUG_TRACE_GRANTS
                && shouldTraceGrant(packageName, permissionName, user.getIdentifier())) {
                && shouldTraceGrant(packageName, permName, user.getIdentifier())) {
            Log.i(TAG, "App " + mContext.getPackageName() + " is revoking "
                    + permissionName + " for user " + user.getIdentifier(), new RuntimeException());
                    + permName + " for user " + user.getIdentifier(), new RuntimeException());
        }
        try {
            mPM.revokeRuntimePermission(packageName, permissionName, user.getIdentifier());
            mPermissionManager
                    .revokeRuntimePermission(packageName, permName, user.getIdentifier());
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+5 −5
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import android.accessibilityservice.AccessibilityServiceInfo;
import android.accessibilityservice.IAccessibilityServiceClient;
import android.annotation.Nullable;
import android.content.Context;
import android.content.pm.IPackageManager;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.hardware.input.InputManager;
@@ -31,6 +30,7 @@ import android.os.Process;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.permission.IPermissionManager;
import android.util.Log;
import android.view.IWindowManager;
import android.view.InputEvent;
@@ -69,8 +69,8 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
    private final IAccessibilityManager mAccessibilityManager = IAccessibilityManager.Stub
            .asInterface(ServiceManager.getService(Service.ACCESSIBILITY_SERVICE));

    private final IPackageManager mPackageManager = IPackageManager.Stub
            .asInterface(ServiceManager.getService("package"));
    private final IPermissionManager mPermissionManager = IPermissionManager.Stub
            .asInterface(ServiceManager.getService("permissionmgr"));

    private final IActivityManager mActivityManager = IActivityManager.Stub
            .asInterface(ServiceManager.getService("activity"));
@@ -273,7 +273,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
        }
        final long identity = Binder.clearCallingIdentity();
        try {
            mPackageManager.grantRuntimePermission(packageName, permission, userId);
            mPermissionManager.grantRuntimePermission(packageName, permission, userId);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
@@ -289,7 +289,7 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
        }
        final long identity = Binder.clearCallingIdentity();
        try {
            mPackageManager.revokeRuntimePermission(packageName, permission, userId);
            mPermissionManager.revokeRuntimePermission(packageName, permission, userId);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
+3 −8
Original line number Diff line number Diff line
@@ -94,14 +94,6 @@ interface IPackageManager {

    @UnsupportedAppUsage
    ProviderInfo getProviderInfo(in ComponentName className, int flags, int userId);

    @UnsupportedAppUsage
    void grantRuntimePermission(String packageName, String permissionName, int userId);

    void revokeRuntimePermission(String packageName, String permissionName, int userId);

    void resetRuntimePermissions();

    boolean shouldShowRequestPermissionRationale(String permName,
            String packageName, int userId);

@@ -755,6 +747,9 @@ interface IPackageManager {
    @UnsupportedAppUsage
    int checkPermission(String permName, String pkgName, int userId);

    @UnsupportedAppUsage
    void grantRuntimePermission(String packageName, String permissionName, int userId);

    //------------------------------------------------------------------------
    // We need to keep these in IPackageManager for convenience in splitting
    // out the permission manager. This should be cleaned up, but, will require
+0 −20
Original line number Diff line number Diff line
@@ -434,26 +434,6 @@ public abstract class PackageManagerInternal {
     */
    public abstract boolean wasPackageEverLaunched(String packageName, int userId);

    /**
     * Grants a runtime permission
     * @param packageName The package name.
     * @param name The name of the permission.
     * @param userId The userId for which to grant the permission.
     * @param overridePolicy If true, grant this permission even if it is fixed by policy.
     */
    public abstract void grantRuntimePermission(String packageName, String name, int userId,
            boolean overridePolicy);

    /**
     * Revokes a runtime permission
     * @param packageName The package name.
     * @param name The name of the permission.
     * @param userId The userId for which to revoke the permission.
     * @param overridePolicy If true, revoke this permission even if it is fixed by policy.
     */
    public abstract void revokeRuntimePermission(String packageName, String name, int userId,
            boolean overridePolicy);

    /**
     * Retrieve the official name associated with a uid. This name is
     * guaranteed to never change, though it is possible for the underlying
+6 −0
Original line number Diff line number Diff line
@@ -64,4 +64,10 @@ interface IPermissionManager {

    boolean removeWhitelistedRestrictedPermission(String packageName, String permName,
            int flags, int userId);

    void grantRuntimePermission(String packageName, String permName, int userId);

    void revokeRuntimePermission(String packageName, String permName, int userId);

    void resetRuntimePermissions();
}
Loading