diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-10 17:39:10 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2022-06-10 17:39:10 +0000 |
commit | 907d7d791276342e7a86a07b45dc54b56f12c03a (patch) | |
tree | b18abc4c77ddbd7923e77607369f62e3fb6c3eb8 | |
parent | 8033fe0fb8267a19be0e5f7e56c9dd0efa64df60 (diff) | |
parent | 4e4e3e40f8a6ab424cadf821b363e790a8c3322b (diff) | |
download | Permission-android-platform-12.1.0_r6.tar.gz |
Snap for 8671748 from 4e4e3e40f8a6ab424cadf821b363e790a8c3322b to sc-v2-platform-releaseandroid-platform-12.1.0_r8android-platform-12.1.0_r7android-platform-12.1.0_r6android-platform-12.1.0_r5
Change-Id: I5dd2616c538c1f51bc4df1741a021e8b05ab8fe0
3 files changed, 14 insertions, 4 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt index 3fb09607b..cbfac4b24 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt @@ -165,6 +165,13 @@ data class LightAppPermGroup( val isGranted = specialLocationGrant ?: permissions.any { it.value.isGrantedIncludingAppOp } /** + * Whether any of this App Permission SubGroup's permissions are granted excluding + * auto granted permissions during install time with flag RevokeWhenRequested + */ + val isGrantedExcludeRevokeWhenRequestedPermissions = specialLocationGrant ?: permissions + .any { it.value.isGrantedIncludingAppOp && !it.value.isRevokeWhenRequested } + + /** * Whether any of this App Permission SubGroup's permissions are granted by default */ val isGrantedByDefault = permissions.any { it.value.isGrantedByDefault } diff --git a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt index 745c5c2fd..c3d087fd2 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt @@ -113,6 +113,7 @@ data class LightPermission( if (isSystemFixed) append(", SystemFixed") if (isUserFixed) append(", UserFixed") if (isUserSet) append(", UserSet") + if (isRevokeWhenRequested) append(", RevokeWhenRequested") if (isCompatRevoked) append(", CompatRevoked") if (isReviewRequired) append(", ReviewRequired") if (isOneTime) append(", OneTime") diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt index 64549703f..9749a814c 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt @@ -237,7 +237,8 @@ class GrantPermissionsViewModel( // some requests might have been granted, check for that for ((key, state) in states) { val allAffectedGranted = state.affectedPermissions.all { perm -> - appPermGroup.permissions[perm]?.isGrantedIncludingAppOp == true + appPermGroup.permissions[perm]?.isGrantedIncludingAppOp == true && + appPermGroup.permissions[perm]?.isRevokeWhenRequested == false } if (allAffectedGranted) { groupStates[key]!!.state = STATE_ALLOWED @@ -654,7 +655,8 @@ class GrantPermissionsViewModel( // Do not attempt to grant background access if foreground access is not either already // granted or requested - if (isBackground && !group.foreground.isGranted && !hasForegroundRequest) { + if (isBackground && !group.foreground.isGrantedExcludeRevokeWhenRequestedPermissions && + !hasForegroundRequest) { Log.w(LOG_TAG, "Cannot grant $perm as the matching foreground permission is not " + "already granted.") val affectedPermissions = groupRequestedPermissions.filter { @@ -665,8 +667,8 @@ class GrantPermissionsViewModel( return STATE_SKIPPED } - if (isBackground && group.background.isGranted || - !isBackground && group.foreground.isGranted) { + if (isBackground && group.background.isGrantedExcludeRevokeWhenRequestedPermissions || + !isBackground && group.foreground.isGrantedExcludeRevokeWhenRequestedPermissions) { // If FINE location is not granted, do not grant it automatically when COARSE // location is already granted. if (group.permGroupName == LOCATION && |