summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android/permissioncontroller/permission/utils
diff options
context:
space:
mode:
authorNate Myren <ntmyren@google.com>2023-02-28 17:22:06 -0800
committerNate Myren <ntmyren@google.com>2023-03-02 16:31:43 -0800
commit906c0bd63b5c4397c9fc17b374ec152ffbf034dc (patch)
treed9969d4d19430bab9ee3b7a7f2142a21fbdea3cc /PermissionController/src/com/android/permissioncontroller/permission/utils
parent16b8bdc5acc739361799e2002b44ba39b5532a08 (diff)
downloadPermission-906c0bd63b5c4397c9fc17b374ec152ffbf034dc.tar.gz
Set RMI/V appops, change ux specs of more photos dialog
When performing the "withoutappops" grant, explicitly disallow the appop. Also brings the dialog into UX spec. Fixes: 267445531 Bug: 270706359 Test: atest PhotoPickerPermissionTest Change-Id: Ie4ce9c32d2969995e76eabbbb3fecd518d460bc7
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/utils')
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt13
1 files changed, 11 insertions, 2 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
index 26602eaf7..1b6c1d10b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/utils/KotlinUtils.kt
@@ -842,6 +842,7 @@ object KotlinUtils {
}
var newFlags = perm.flags
+ var oldFlags = perm.flags
var isGranted = perm.isGrantedIncludingAppOp
var shouldKill = false
@@ -851,6 +852,14 @@ object KotlinUtils {
// TODO 195016052: investigate adding split permission handling
if (supportsRuntime) {
+ // If granting without app ops, explicitly disallow app op first, while setting the
+ // flag, so that the PermissionPolicyService doesn't reset the app op state
+ if (affectsAppOp && withoutAppOps) {
+ oldFlags = oldFlags.setFlag(PackageManager.FLAG_PERMISSION_REVOKED_COMPAT)
+ app.packageManager.updatePermissionFlags(perm.name, group.packageName,
+ PERMISSION_CONTROLLER_CHANGED_FLAG_MASK, oldFlags, user)
+ disallowAppOp(app, perm, group)
+ }
app.packageManager.grantRuntimePermission(group.packageName, perm.name, user)
isGranted = true
} else if (affectsAppOp) {
@@ -861,7 +870,7 @@ object KotlinUtils {
shouldKill = true
isGranted = true
}
- newFlags = if (withoutAppOps) {
+ newFlags = if (affectsAppOp && withoutAppOps) {
newFlags.setFlag(PackageManager.FLAG_PERMISSION_REVOKED_COMPAT)
} else {
newFlags.clearFlag(PackageManager.FLAG_PERMISSION_REVOKED_COMPAT)
@@ -913,7 +922,7 @@ object KotlinUtils {
}
}
- if (perm.flags != newFlags) {
+ if (oldFlags != newFlags) {
app.packageManager.updatePermissionFlags(perm.name, group.packageInfo.packageName,
PERMISSION_CONTROLLER_CHANGED_FLAG_MASK, newFlags, user)
}