From 4bf9a32c6b463b473b4487ebf788a4c33effd0b3 Mon Sep 17 00:00:00 2001 From: Hai Zhang Date: Mon, 30 Sep 2019 11:06:04 -0700 Subject: [PATCH] Sync app ops for all runtime permissions in PermissionPolicyService. Also removed the workaround in resetRuntimePermissionsInternal(). Bug: 136503238 Test: manual Change-Id: I1152201cc311dacbc868a752385078bf97764393 --- .../server/pm/permission/PermissionManagerService.java | 10 +--------- .../android/server/policy/PermissionPolicyService.java | 3 +-- 2 files changed, 2 insertions(+), 11 deletions(-) diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 0e2e1b77e5010..204e609310834 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -1577,7 +1577,6 @@ public class PermissionManagerService extends IPermissionManager.Stub { } }; - final AppOpsManager appOpsManager = mContext.getSystemService(AppOpsManager.class); for (int i = 0; i < permissionCount; i++) { final String permName = pkg.requestedPermissions.get(i); final BasePermission bp; @@ -1643,16 +1642,9 @@ public class PermissionManagerService extends IPermissionManager.Stub { // If this permission was granted by default, make sure it is. if ((oldFlags & FLAG_PERMISSION_GRANTED_BY_DEFAULT) != 0) { + // PermissionPolicyService will handle the app op for runtime permissions later. grantRuntimePermissionInternal(permName, packageName, false, Process.SYSTEM_UID, userId, delayingPermCallback); - // Allow app op later as we are holding mPackages - // PermissionPolicyService will handle the app op for foreground/background - // permissions. - String appOp = AppOpsManager.permissionToOp(permName); - if (appOp != null) { - mHandler.post(() -> appOpsManager.setUidMode(appOp, uid, - AppOpsManager.MODE_ALLOWED)); - } // If permission review is enabled the permissions for a legacy apps // are represented as constantly granted runtime ones, so don't revoke. } else if ((flags & FLAG_PERMISSION_REVIEW_REQUIRED) == 0) { diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java index 9acb3ccf4d350..77c16e37b51d7 100644 --- a/services/core/java/com/android/server/policy/PermissionPolicyService.java +++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java @@ -499,8 +499,7 @@ public final class PermissionPolicyService extends SystemService { private void addPermissionAppOp(@NonNull PackageInfo packageInfo, @NonNull PermissionInfo permissionInfo) { - // TODO: Sync all permissions in the future. - if (!permissionInfo.isRestricted() && permissionInfo.backgroundPermission == null) { + if (!permissionInfo.isRuntime()) { return; }