diff options
author | Nate Myren <ntmyren@google.com> | 2023-02-28 17:22:06 -0800 |
---|---|---|
committer | Nate Myren <ntmyren@google.com> | 2023-03-02 16:31:43 -0800 |
commit | 906c0bd63b5c4397c9fc17b374ec152ffbf034dc (patch) | |
tree | d9969d4d19430bab9ee3b7a7f2142a21fbdea3cc /PermissionController/src/com/android/permissioncontroller/permission/utils | |
parent | 16b8bdc5acc739361799e2002b44ba39b5532a08 (diff) | |
download | Permission-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.kt | 13 |
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) } |