diff options
author | Nate Myren <ntmyren@google.com> | 2023-05-25 19:35:59 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2023-05-25 19:35:59 +0000 |
commit | d67eb22df2f8cd1029351fb25acf097614d67d20 (patch) | |
tree | 81b82e9181a2128947f7939c1f68a52ecaf3d220 /PermissionController/src/com/android/permissioncontroller/permission/service | |
parent | b6c51b5d94e20fc3ffee71c8b0463b474bcc530e (diff) | |
parent | 7f2d25e03dfc8ac6e2a1668f471f66d5b620c146 (diff) | |
download | Permission-d67eb22df2f8cd1029351fb25acf097614d67d20.tar.gz |
Merge "DO NOT MERGE Revert "On upgrade to U, grant RMVUS to apps granted RMI/V"" into udc-dev
Diffstat (limited to 'PermissionController/src/com/android/permissioncontroller/permission/service')
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/service/RuntimePermissionsUpgradeController.kt | 57 |
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() ) { /** |