summaryrefslogtreecommitdiff
path: root/PermissionController/src/com/android
diff options
context:
space:
mode:
authorNate Myren <ntmyren@google.com>2023-05-23 16:17:45 +0000
committerNate Myren <ntmyren@google.com>2023-05-23 21:36:54 +0000
commit7f2d25e03dfc8ac6e2a1668f471f66d5b620c146 (patch)
tree0c47d4f52e10f9012d1a90edd1757370611642fb /PermissionController/src/com/android
parent3bfc9d4737154f754afe5a580b07a6aaed30cc2f (diff)
downloadPermission-7f2d25e03dfc8ac6e2a1668f471f66d5b620c146.tar.gz
DO NOT MERGE Revert "On upgrade to U, grant RMVUS to apps granted RMI/V"
This reverts commit 3bfc9d4737154f754afe5a580b07a6aaed30cc2f. Reason for revert: b/283303329 Change-Id: Id1bbff981b1ed4e535fb4382d1b0d710909ccc4c
Diffstat (limited to 'PermissionController/src/com/android')
-rw-r--r--PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt57
1 files changed, 16 insertions, 41 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt b/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt
index 43b79a7f8..97f817cff 100644
--- a/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt
+++ b/PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt
@@ -42,7 +42,6 @@ import com.android.permissioncontroller.permission.model.livedatatypes.LightPerm
import com.android.permissioncontroller.permission.utils.IPC
import com.android.permissioncontroller.permission.utils.KotlinUtils.grantBackgroundRuntimePermissions
import com.android.permissioncontroller.permission.utils.KotlinUtils.grantForegroundRuntimePermissions
-import com.android.permissioncontroller.permission.utils.PermissionMapping
import com.android.permissioncontroller.permission.utils.PermissionMapping.getPlatformPermissionNamesOfGroup
import com.android.permissioncontroller.permission.utils.PermissionMapping.getRuntimePlatformPermissionNames
import com.android.permissioncontroller.permission.utils.application
@@ -56,9 +55,7 @@ internal object RuntimePermissionsUpgradeController {
private val LOG_TAG = RuntimePermissionsUpgradeController::class.java.simpleName
// The latest version of the runtime permissions database
- private val LATEST_VERSION = if (SdkLevel.isAtLeastU()) {
- 11
- } else if (SdkLevel.isAtLeastT()) {
+ private val LATEST_VERSION = if (SdkLevel.isAtLeastT()) {
10
} else {
9
@@ -137,7 +134,6 @@ internal object RuntimePermissionsUpgradeController {
val needBackgroundAppPermGroups = sdkUpgradedFromP && currentVersion <= 6
val needAccessMediaAppPermGroups = !isNewUser && currentVersion <= 7
val needGrantedExternalStorage = currentVersion <= 9 && SdkLevel.isAtLeastT()
- val needGrantedReadMediaVisual = currentVersion <= 10 && SdkLevel.isAtLeastU()
val isDeviceUpgrading = context.packageManager.isDeviceUpgrading
// All data needed by this method.
@@ -160,17 +156,24 @@ internal object RuntimePermissionsUpgradeController {
private val pkgInfoProvider = UserPackageInfosLiveData[myUserHandle()]
/** Provides all {@link LightAppPermGroup} this upgrade needs */
- private var permGroupProviders: MutableSet<LightAppPermGroupLiveData>? = null
+ private var permGroupProviders: MutableList<LightAppPermGroupLiveData>? = null
/** {@link #permGroupProviders} that already provided a result */
private val permGroupProvidersDone = mutableSetOf<LightAppPermGroupLiveData>()
init {
// First step: Load packages + perm infos
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i("RuntimePermissions", "observing UserPackageInfoLiveData for " +
+ "${myUserHandle().identifier} in RuntimePermissionsUpgradeController")
addSource(pkgInfoProvider) { pkgInfos ->
if (pkgInfos != null) {
removeSource(pkgInfoProvider)
+ // TODO ntmyren: remove once b/154796729 is fixed
+ Log.i("RuntimePermissions", "observing " +
+ "PreinstalledUserPackageInfoLiveData for ${myUserHandle().identifier}" +
+ " in RuntimePermissionsUpgradeController")
addSource(preinstalledPkgInfoProvider) { preinstalledPkgInfos ->
if (preinstalledPkgInfos != null) {
removeSource(preinstalledPkgInfoProvider)
@@ -200,16 +203,15 @@ internal object RuntimePermissionsUpgradeController {
if (permGroupProviders == null && pkgInfoProvider.value != null) {
// Second step: Trigger load of app-perm-groups
- permGroupProviders = mutableSetOf()
+ permGroupProviders = mutableListOf()
// Only load app-perm-groups needed for this upgrade
if (needBackgroundAppPermGroups || needAccessMediaAppPermGroups ||
- needGrantedExternalStorage || needGrantedReadMediaVisual) {
+ needGrantedExternalStorage) {
for ((pkgName, _, requestedPerms, requestedPermFlags) in
pkgInfoProvider.value!!) {
var requestsAccessMediaLocation = false
var hasGrantedExternalStorage = false
- var hasGrantedReadMediaVisual = false
for ((perm, flags) in requestedPerms.zip(requestedPermFlags)) {
if (needBackgroundAppPermGroups &&
@@ -218,22 +220,17 @@ internal object RuntimePermissionsUpgradeController {
permission_group.LOCATION, myUserHandle()])
}
- if (needAccessMediaAppPermGroups || needGrantedExternalStorage ||
- needGrantedReadMediaVisual) {
+ if (needAccessMediaAppPermGroups || needGrantedExternalStorage) {
if (needAccessMediaAppPermGroups &&
perm == permission.ACCESS_MEDIA_LOCATION) {
requestsAccessMediaLocation = true
}
- val isGranted =
- flags and PackageInfo.REQUESTED_PERMISSION_GRANTED != 0
- if (perm == permission.READ_EXTERNAL_STORAGE && isGranted) {
+ if (perm == permission.READ_EXTERNAL_STORAGE &&
+ flags and PackageInfo.REQUESTED_PERMISSION_GRANTED
+ != 0) {
hasGrantedExternalStorage = true
}
- if (PermissionMapping.getGroupOfPlatformPermission(perm)
- == permission_group.READ_MEDIA_VISUAL && isGranted) {
- hasGrantedReadMediaVisual = true
- }
}
}
@@ -258,10 +255,6 @@ internal object RuntimePermissionsUpgradeController {
accessMediaLocationPermGroup, myUserHandle()])
}
}
- if (hasGrantedReadMediaVisual && needGrantedReadMediaVisual) {
- permGroupProviders!!.add(LightAppPermGroupLiveData[pkgName,
- permission_group.READ_MEDIA_VISUAL, myUserHandle()])
- }
}
}
@@ -543,24 +536,6 @@ internal object RuntimePermissionsUpgradeController {
currentVersion = 10
}
- if (currentVersion == 10 && SdkLevel.isAtLeastU()) {
- // On U, if the app is granted READ_MEDIA_VISUAL, expand the grant to
- // READ_MEDIA_VISUAL_USER_SELECTED
- if (isDeviceUpgrading && !isNewUser) {
- Log.i(LOG_TAG, "Grandfathering READ_MEDIA_VISUAL_USER_SELECTED to apps already " +
- "granted visual permissions")
- val visualAppPermGroups = storageAndMediaAppPermGroups.filter {
- it.packageInfo.targetSdkVersion >= Build.VERSION_CODES.TIRAMISU &&
- it.permGroupInfo.name == permission_group.READ_MEDIA_VISUAL &&
- it.isGranted && it.isUserSet
- }
- visualAppPermGroups.forEach {
- grants.add(Grant(false, it))
- }
- }
- currentVersion = 11
- }
-
// XXX: Add new upgrade steps above this point.
return Triple(currentVersion, exemptions, grants)
@@ -616,7 +591,7 @@ internal object RuntimePermissionsUpgradeController {
private val isBackground: Boolean,
/** Group to be granted */
private val group: LightAppPermGroup,
- /** Which of the permissions in the group should be granted */
+ /** Which of th permissions in the group should be granted */
private val permissions: List<String> = group.permissions.keys.toList()
) {
/**