summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Philip P. Moltmann <moltmann@google.com> 2019-02-22 04:38:22 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-02-22 04:38:22 +0000
commite346f7530d01a835277b14def6cd9ad9241e0d7f (patch)
tree42f9e191801b35fe24e19a2fbbaf8d3ba5132724
parentf4ac4e7fb1cb13f9c7ef7e683ce3455d99ed028c (diff)
parent8277ab6fb2bb975f7d9982d64c2a929cb01e2b8a (diff)
Merge changes from topic "perm-flags"
* changes: Do not revoke pre-M perms on upgrade Also apply removed permission flags
-rw-r--r--services/core/java/com/android/server/pm/permission/PermissionManagerService.java38
1 files changed, 19 insertions, 19 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 8df5a71de43e..f9ba6da3f2a5 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -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,29 +1201,23 @@ 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) {
- int revokeResult = ps.revokeRuntimePermission(bp, userId);
- if (revokeResult != PERMISSION_OPERATION_FAILURE) {
- if (DEBUG_PERMISSIONS) {
- Slog.i(TAG, "Revoking runtime permission "
- + permission + " for " + pkgName
- + " as it is now requested");
- }
+ == 0 && supportsRuntimePermissions) {
+ int revokeResult = ps.revokeRuntimePermission(bp, userId);
+ if (revokeResult != PERMISSION_OPERATION_FAILURE) {
+ if (DEBUG_PERMISSIONS) {
+ Slog.i(TAG, "Revoking runtime permission "
+ + permission + " for " + pkgName
+ + " 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) {
int numFgPerms = fgPerms.size();
@@ -1238,6 +1235,9 @@ public class PermissionManagerService {
}
}
}
+
+ ps.updatePermissionFlags(bp, userId, flagsToRemove, 0);
+ updatedUserIds = ArrayUtils.appendInt(updatedUserIds, userId);
}
}
}