Loading services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt +7 −2 Original line number Original line Diff line number Diff line Loading @@ -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 -> Loading Loading @@ -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 Loading Loading @@ -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, Loading Loading
services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt +7 −2 Original line number Original line Diff line number Diff line Loading @@ -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 -> Loading Loading @@ -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 Loading Loading @@ -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, Loading