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

Commit 9d95d01d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Revert "Sync app ops for all runtime permissions in PermissionPolicyService.""

parents 8edaf50e 18f22a4a
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.app.ApplicationPackageManager;
import android.app.IActivityManager;
import android.content.Context;
@@ -1541,6 +1542,7 @@ 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;
@@ -1606,9 +1608,16 @@ 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) {
+3 −2
Original line number Diff line number Diff line
@@ -152,7 +152,7 @@ public final class PermissionPolicyService extends SystemService {
            for (int i = 0; i < numDangerousPerms; i++) {
                PermissionInfo perm = dangerousPerms.get(i);

                if (perm.isRuntime()) {
                if (perm.isRestricted() || perm.backgroundPermission != null) {
                    appOpsService.startWatchingMode(getSwitchOp(perm.name), null, appOpsListener);
                }
                if (perm.isSoftRestricted()) {
@@ -499,7 +499,8 @@ public final class PermissionPolicyService extends SystemService {

        private void addPermissionAppOp(@NonNull PackageInfo packageInfo,
                @NonNull PermissionInfo permissionInfo) {
            if (!permissionInfo.isRuntime()) {
            // TODO: Sync all permissions in the future.
            if (!permissionInfo.isRestricted() && permissionInfo.backgroundPermission == null) {
                return;
            }