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

Commit 753f4ce4 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

Merge "Support revoke-when-requested with pre-M apps"

parents 3deb23fe d030ce24
Loading
Loading
Loading
Loading
+12 −12
Original line number Original line Diff line number Diff line
@@ -1181,11 +1181,9 @@ public class PermissionManagerService {
            @NonNull int[] updatedUserIds) {
            @NonNull int[] updatedUserIds) {
        AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);
        AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class);


        if (pkg.applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) {
            return updatedUserIds;
        }

        String pkgName = pkg.packageName;
        String pkgName = pkg.packageName;
        boolean supportsRuntimePermissions = pkg.applicationInfo.targetSdkVersion
                >= Build.VERSION_CODES.M;


        int[] users = UserManagerService.getInstance().getUserIds();
        int[] users = UserManagerService.getInstance().getUserIds();
        int numUsers = users.length;
        int numUsers = users.length;
@@ -1210,16 +1208,18 @@ public class PermissionManagerService {
                            if ((flags & (FLAG_PERMISSION_GRANTED_BY_DEFAULT
                            if ((flags & (FLAG_PERMISSION_GRANTED_BY_DEFAULT
                                    | FLAG_PERMISSION_POLICY_FIXED | FLAG_PERMISSION_SYSTEM_FIXED))
                                    | FLAG_PERMISSION_POLICY_FIXED | FLAG_PERMISSION_SYSTEM_FIXED))
                                    == 0) {
                                    == 0) {
                                if (supportsRuntimePermissions) {
                                    int revokeResult = ps.revokeRuntimePermission(bp, userId);
                                    int revokeResult = ps.revokeRuntimePermission(bp, userId);
                                if (revokeResult
                                    if (revokeResult != PERMISSION_OPERATION_FAILURE) {
                                        != PERMISSION_OPERATION_FAILURE) {

                                        if (DEBUG_PERMISSIONS) {
                                        if (DEBUG_PERMISSIONS) {
                                        Slog.i(TAG, "Revoking runtime permission " + permission
                                            Slog.i(TAG, "Revoking runtime permission "
                                                + " for " + pkgName
                                                    + permission + " for " + pkgName
                                                    + " as it is now requested");
                                                    + " as it is now requested");
                                        }
                                        }
                                    }
                                    }
                                } else {
                                    setAppOpMode(permission, pkg, userId, MODE_IGNORED);
                                }


                                List<String> fgPerms = mBackgroundPermissions.get(permission);
                                List<String> fgPerms = mBackgroundPermissions.get(permission);
                                if (fgPerms != null) {
                                if (fgPerms != null) {