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

Commit 2f65cfb0 authored by Manjeet Rulhania's avatar Manjeet Rulhania Committed by Android (Google) Code Review
Browse files

Merge "Invalidate Package Manager cache on permissions state change"

parents 063dc4be e67738f1
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -2023,6 +2023,8 @@ class PermissionService(
     */
    private inner class OnPermissionFlagsChangedListener :
        UidPermissionPolicy.OnPermissionFlagsChangedListener() {
        private var isPermissionFlagsChanged = false

        private val runtimePermissionChangedUids = IntSet()
        // Mapping from UID to whether only notifications permissions are revoked.
        private val runtimePermissionRevokedUids = IntBooleanMap()
@@ -2046,6 +2048,8 @@ class PermissionService(
            oldFlags: Int,
            newFlags: Int
        ) {
            isPermissionFlagsChanged = true

            val uid = UserHandle.getUid(userId, appId)
            val permission = service.getState {
                with(policy) { getPermissions()[permissionName] }
@@ -2072,6 +2076,11 @@ class PermissionService(
        }

        override fun onStateMutated() {
            if (isPermissionFlagsChanged) {
                PackageManager.invalidatePackageInfoCache()
                isPermissionFlagsChanged = false
            }

            runtimePermissionChangedUids.forEachIndexed { _, uid ->
                onPermissionsChangeListeners.onPermissionsChanged(uid)
            }