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

Commit 0f245abc authored by mrulhania's avatar mrulhania Committed by Manjeet Rulhania
Browse files

Update permission APIs for device support

Bug: 283977848
Test: presubmit
Change-Id: I284eef8c35f503f03999dff5afa910fbc53b3b1b
parent f775e70f
Loading
Loading
Loading
Loading
+10 −5
Original line number Diff line number Diff line
@@ -4699,8 +4699,14 @@ public class ActivityManager {
    @UnsupportedAppUsage
    public static int checkComponentPermission(String permission, int uid,
            int owningUid, boolean exported) {
        return checkComponentPermission(permission, uid, Context.DEVICE_ID_DEFAULT,
                owningUid, exported);
    }

    /** @hide */
    public static int checkComponentPermission(String permission, int uid, int deviceId,
            int owningUid, boolean exported) {
        // Root, system server get to do everything.
        final int appId = UserHandle.getAppId(uid);
        if (canAccessUnexportedComponents(uid)) {
            return PackageManager.PERMISSION_GRANTED;
        }
@@ -4727,8 +4733,7 @@ public class ActivityManager {
            return PackageManager.PERMISSION_GRANTED;
        }
        try {
            return AppGlobals.getPackageManager()
                    .checkUidPermission(permission, uid);
            return AppGlobals.getPermissionManager().checkUidPermission(uid, permission, deviceId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
@@ -4737,8 +4742,8 @@ public class ActivityManager {
    /** @hide */
    public static int checkUidPermission(String permission, int uid) {
        try {
            return AppGlobals.getPackageManager()
                    .checkUidPermission(permission, uid);
            return AppGlobals.getPermissionManager().checkUidPermission(
                    uid, permission, Context.DEVICE_ID_DEFAULT);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+2 −1
Original line number Diff line number Diff line
@@ -827,7 +827,8 @@ public class ApplicationPackageManager extends PackageManager {

    @Override
    public int checkPermission(String permName, String pkgName) {
        return PermissionManager.checkPackageNamePermission(permName, pkgName, getUserId());
        return PermissionManager.checkPackageNamePermission(permName, pkgName,
                mContext.getDeviceId(), getUserId());
    }

    @Override
+1 −1
Original line number Diff line number Diff line
@@ -2262,7 +2262,7 @@ class ContextImpl extends Context {
            Log.v(TAG, "Treating renounced permission " + permission + " as denied");
            return PERMISSION_DENIED;
        }
        return PermissionManager.checkPermission(permission, pid, uid);
        return PermissionManager.checkPermission(permission, pid, uid, getDeviceId());
    }

    /** @hide */
+2 −0
Original line number Diff line number Diff line
@@ -924,4 +924,6 @@ interface IActivityManager {
    void unregisterUidFrozenStateChangedCallback(in IUidFrozenStateChangedCallback callback);
    @JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS)")
    int[] getUidFrozenState(in int[] uids);

    int checkPermissionForDevice(in String permission, int pid, int uid, int deviceId);
}
+10 −2
Original line number Diff line number Diff line
@@ -343,6 +343,9 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
        }
    }

    /**
     * Grants permission for the {@link Context#DEVICE_ID_DEFAULT default device}
     */
    @Override
    public void grantRuntimePermission(String packageName, String permission, int userId)
            throws RemoteException {
@@ -353,12 +356,16 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
        }
        final long identity = Binder.clearCallingIdentity();
        try {
            mPermissionManager.grantRuntimePermission(packageName, permission, userId);
            mPermissionManager.grantRuntimePermission(packageName, permission,
                    Context.DEVICE_ID_DEFAULT, userId);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
    }

    /**
     * Revokes permission for the {@link Context#DEVICE_ID_DEFAULT default device}
     */
    @Override
    public void revokeRuntimePermission(String packageName, String permission, int userId)
            throws RemoteException {
@@ -369,7 +376,8 @@ public final class UiAutomationConnection extends IUiAutomationConnection.Stub {
        }
        final long identity = Binder.clearCallingIdentity();
        try {
            mPermissionManager.revokeRuntimePermission(packageName, permission, userId, null);
            mPermissionManager.revokeRuntimePermission(packageName, permission,
                    Context.DEVICE_ID_DEFAULT, userId, null);
        } finally {
            Binder.restoreCallingIdentity(identity);
        }
Loading