Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 226fb6ef authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Keep the implicit flag for pre-23 apps when inheriting implicit permissions" into main

parents 99654fef 0790d1bd
Loading
Loading
Loading
Loading
+7 −2
Original line number Original line Diff line number Diff line
@@ -1115,8 +1115,10 @@ class AppIdPermissionPolicy : SchemePolicy() {
    }
    }


    private fun MutateStateScope.inheritImplicitPermissionStates(appId: Int, userId: Int) {
    private fun MutateStateScope.inheritImplicitPermissionStates(appId: Int, userId: Int) {
        var targetSdkVersion = Build.VERSION_CODES.CUR_DEVELOPMENT
        val implicitPermissions = MutableIndexedSet<String>()
        val implicitPermissions = MutableIndexedSet<String>()
        forEachPackageInAppId(appId) {
        forEachPackageInAppId(appId) {
            targetSdkVersion = targetSdkVersion.coerceAtMost(it.androidPackage!!.targetSdkVersion)
            implicitPermissions += it.androidPackage!!.implicitPermissions
            implicitPermissions += it.androidPackage!!.implicitPermissions
        }
        }
        implicitPermissions.forEachIndexed implicitPermissions@{ _, implicitPermissionName ->
        implicitPermissions.forEachIndexed implicitPermissions@{ _, implicitPermissionName ->
@@ -1153,7 +1155,10 @@ class AppIdPermissionPolicy : SchemePolicy() {
                    newFlags = newFlags or (sourceFlags and PermissionFlags.MASK_RUNTIME)
                    newFlags = newFlags or (sourceFlags and PermissionFlags.MASK_RUNTIME)
                }
                }
            }
            }
            if (implicitPermissionName in RETAIN_IMPLICIT_FLAGS_PERMISSIONS) {
            if (
                targetSdkVersion >= Build.VERSION_CODES.M &&
                    implicitPermissionName in NO_IMPLICIT_FLAG_PERMISSIONS
            ) {
                newFlags = newFlags andInv PermissionFlags.IMPLICIT
                newFlags = newFlags andInv PermissionFlags.IMPLICIT
            } else {
            } else {
                newFlags = newFlags or PermissionFlags.IMPLICIT
                newFlags = newFlags or PermissionFlags.IMPLICIT
@@ -1782,7 +1787,7 @@ class AppIdPermissionPolicy : SchemePolicy() {
        private const val PLATFORM_PACKAGE_NAME = "android"
        private const val PLATFORM_PACKAGE_NAME = "android"


        // A set of permissions that we don't want to revoke when they are no longer implicit.
        // A set of permissions that we don't want to revoke when they are no longer implicit.
        private val RETAIN_IMPLICIT_FLAGS_PERMISSIONS =
        private val NO_IMPLICIT_FLAG_PERMISSIONS =
            indexedSetOf(
            indexedSetOf(
                Manifest.permission.ACCESS_MEDIA_LOCATION,
                Manifest.permission.ACCESS_MEDIA_LOCATION,
                Manifest.permission.ACTIVITY_RECOGNITION,
                Manifest.permission.ACTIVITY_RECOGNITION,