summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-10 17:39:10 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-06-10 17:39:10 +0000
commit907d7d791276342e7a86a07b45dc54b56f12c03a (patch)
treeb18abc4c77ddbd7923e77607369f62e3fb6c3eb8
parent8033fe0fb8267a19be0e5f7e56c9dd0efa64df60 (diff)
parent4e4e3e40f8a6ab424cadf821b363e790a8c3322b (diff)
downloadPermission-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
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightAppPermGroup.kt7
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/model/livedatatypes/LightPermission.kt1
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt10
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 &&