Sync app ops for all runtime permissions in PermissionPolicyService.

Also removed the workaround in resetRuntimePermissionsInternal().

Bug: 136503238
Test: manual
Change-Id: I1152201cc311dacbc868a752385078bf97764393
This commit is contained in:
Hai Zhang
2019-09-30 11:06:04 -07:00
parent ea87b47278
commit 4bf9a32c6b
2 changed files with 2 additions and 11 deletions

View File

@@ -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) {

View File

@@ -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;
}