summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android/permissioncontroller/permission
diff options
context:
space:
mode:
authorNate Myren <ntmyren@google.com>2023-09-07 16:44:13 -0700
committerNate Myren <ntmyren@google.com>2023-09-09 01:50:33 +0000
commit28ded769018205dfc042394b266c271e410ca084 (patch)
tree920f53849f34fcd6252eb385302555f96a2da944 /PermissionController/src/com/android/permissioncontroller/permission
parent1fcd92de12cf42026c66b12a1d8e35e50faf1660 (diff)
downloadPermission-28ded769018205dfc042394b266c271e410ca084.tar.gz
Start compat user select storage after targetSDK U, not T
When an app targets T sdk, we no longer show the compat user select storage behavior, unless the app explicitly adds the user select permission. We will show the two button prompt instead. Bug: 299621675 Relnote: adjustment of feature behavior Test: atest PhotoPickerPermissionTest Change-Id: Ib88e63544298f26473bd0536e9d862eb6e1e0972 Merged-In: I196061fde8c0eba106ff7d09a6c62593df359794
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission')
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt19
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt18
2 files changed, 31 insertions, 6 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
index 99b40d8a7..25b478644 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/AppPermissionViewModel.kt
@@ -20,6 +20,7 @@ package com.android.permissioncontroller.permission.ui.model
import android.Manifest
import android.Manifest.permission.ACCESS_COARSE_LOCATION
import android.Manifest.permission.ACCESS_FINE_LOCATION
+import android.Manifest.permission.READ_MEDIA_VISUAL_USER_SELECTED
import android.Manifest.permission_group.READ_MEDIA_VISUAL
import android.annotation.SuppressLint
import android.app.Activity
@@ -375,9 +376,8 @@ class AppPermissionViewModel(
val detailId = getIndividualPermissionDetailResId(group)
detailResIdLiveData.value = detailId.first to detailId.second
}
- } else if (KotlinUtils.isPhotoPickerPromptEnabled() &&
- group.permGroupName == READ_MEDIA_VISUAL &&
- group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.TIRAMISU) {
+ } else if (group.permGroupName == READ_MEDIA_VISUAL &&
+ shouldShowPhotoPickerPromptForApp(group)) {
// Allow / Select Photos / Deny case
allowedState.isShown = true
deniedState.isShown = true
@@ -471,6 +471,19 @@ class AppPermissionViewModel(
}
}
+ private fun shouldShowPhotoPickerPromptForApp(group: LightAppPermGroup): Boolean {
+ if (!isPhotoPickerPromptEnabled() ||
+ group.packageInfo.targetSdkVersion < Build.VERSION_CODES.TIRAMISU) {
+ return false
+ }
+ if (group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ return true
+ }
+ val userSelectedPerm = group.permissions[READ_MEDIA_VISUAL_USER_SELECTED] ?: return false
+ return !userSelectedPerm.isImplicit
+ }
+
+
fun registerPhotoPickerResultIfNeeded(fragment: Fragment) {
if (permGroupName != READ_MEDIA_VISUAL) {
return
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 8a2216469..471f1486b 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/model/GrantPermissionsViewModel.kt
@@ -124,6 +124,7 @@ import com.android.permissioncontroller.permission.utils.KotlinUtils.getDefaultP
import com.android.permissioncontroller.permission.utils.KotlinUtils.grantBackgroundRuntimePermissions
import com.android.permissioncontroller.permission.utils.KotlinUtils.grantForegroundRuntimePermissions
import com.android.permissioncontroller.permission.utils.KotlinUtils.isLocationAccuracyEnabled
+import com.android.permissioncontroller.permission.utils.KotlinUtils.isPhotoPickerPromptEnabled
import com.android.permissioncontroller.permission.utils.KotlinUtils.isPhotoPickerPromptSupported
import com.android.permissioncontroller.permission.utils.KotlinUtils.revokeBackgroundRuntimePermissions
import com.android.permissioncontroller.permission.utils.KotlinUtils.revokeForegroundRuntimePermissions
@@ -367,9 +368,8 @@ class GrantPermissionsViewModel(
// null ==
var detailMessage = RequestMessage.NO_MESSAGE
- if (KotlinUtils.isPhotoPickerPromptEnabled() &&
- groupState.group.permGroupName == READ_MEDIA_VISUAL &&
- groupState.group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.TIRAMISU) {
+ if (groupState.group.permGroupName == READ_MEDIA_VISUAL &&
+ shouldShowPhotoPickerPromptForApp(groupState.group)) {
// If the USER_SELECTED permission is user fixed and granted, or the app is only
// requesting USER_SELECTED, direct straight to photo picker
val userPerm = groupState.group.permissions[READ_MEDIA_VISUAL_USER_SELECTED]
@@ -897,6 +897,18 @@ class GrantPermissionsViewModel(
}
}
+ private fun shouldShowPhotoPickerPromptForApp(group: LightAppPermGroup): Boolean {
+ if (!isPhotoPickerPromptEnabled() ||
+ group.packageInfo.targetSdkVersion < Build.VERSION_CODES.TIRAMISU) {
+ return false
+ }
+ if (group.packageInfo.targetSdkVersion >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
+ return true
+ }
+ val userSelectedPerm = group.permissions[READ_MEDIA_VISUAL_USER_SELECTED] ?: return false
+ return !userSelectedPerm.isImplicit
+ }
+
private fun getStateFromPolicy(perm: String, group: LightAppPermGroup): Int {
val isBackground = perm in group.backgroundPermNames
var skipGroup = false