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

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

Merge changes from topic "perm-flags"

* changes:
  Do not revoke pre-M perms on upgrade
  Also apply removed permission flags
parents f4ac4e7f 8277ab6f
Loading
Loading
Loading
Loading
+19 −19
Original line number Diff line number Diff line
@@ -35,6 +35,7 @@ import static android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_WHEN_REQU
import static android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED;
import static android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET;
import static android.content.pm.PackageManager.MASK_PERMISSION_FLAGS;
import static android.os.Trace.TRACE_TAG_PACKAGE_MANAGER;
import static android.os.UserHandle.getAppId;
import static android.os.UserHandle.getUid;
@@ -1031,7 +1032,8 @@ public class PermissionManagerService {
                                    updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
                                }

                                permissionsState.updatePermissionFlags(bp, userId, flags, flags);
                                permissionsState.updatePermissionFlags(bp, userId,
                                        MASK_PERMISSION_FLAGS, flags);
                            }
                        } break;

@@ -1081,7 +1083,8 @@ public class PermissionManagerService {
                                    updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
                                }

                                permissionsState.updatePermissionFlags(bp, userId, flags, flags);
                                permissionsState.updatePermissionFlags(bp, userId,
                                        MASK_PERMISSION_FLAGS, flags);
                            }
                        } break;

@@ -1198,17 +1201,11 @@ public class PermissionManagerService {
                        if ((flags & FLAG_PERMISSION_REVOKE_WHEN_REQUESTED) != 0) {
                            BasePermission bp = mSettings.getPermissionLocked(permission);

                            ps.updatePermissionFlags(bp, userId,
                                    FLAG_PERMISSION_REVOKE_WHEN_REQUESTED
                                            | FLAG_PERMISSION_USER_FIXED | FLAG_PERMISSION_USER_SET,
                                    0);
                            updatedUserIds = ArrayUtils.appendInt(updatedUserIds,
                                    userId);
                            int flagsToRemove = FLAG_PERMISSION_REVOKE_WHEN_REQUESTED;

                            if ((flags & (FLAG_PERMISSION_GRANTED_BY_DEFAULT
                                    | FLAG_PERMISSION_POLICY_FIXED | FLAG_PERMISSION_SYSTEM_FIXED))
                                    == 0) {
                                if (supportsRuntimePermissions) {
                                    == 0 && supportsRuntimePermissions) {
                                int revokeResult = ps.revokeRuntimePermission(bp, userId);
                                if (revokeResult != PERMISSION_OPERATION_FAILURE) {
                                    if (DEBUG_PERMISSIONS) {
@@ -1217,9 +1214,9 @@ public class PermissionManagerService {
                                                + " as it is now requested");
                                    }
                                }
                                } else {
                                    setAppOpMode(permission, pkg, userId, MODE_IGNORED);
                                }

                                flagsToRemove |=
                                        FLAG_PERMISSION_USER_FIXED | FLAG_PERMISSION_USER_SET;

                                List<String> fgPerms = mBackgroundPermissions.get(permission);
                                if (fgPerms != null) {
@@ -1238,6 +1235,9 @@ public class PermissionManagerService {
                                    }
                                }
                            }

                            ps.updatePermissionFlags(bp, userId, flagsToRemove, 0);
                            updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
                        }
                    }
                }