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

Commit 18f22a4a authored by Hai Zhang's avatar Hai Zhang
Browse files

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

This reverts commit 4bf9a32c.

This also partially reverts I2fe255caff13643e0b8493e12a149eaa32e06c13,
so that boot time won't be affected.

Reason for revert: Boot time regression b/142274993

Fixes: 142274993
Change-Id: I8b9e95421c5026645480a5564c797910180ec336
parent f11cb156
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;
            }