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

Commit e67738f1 authored by Manjeet Rulhania's avatar Manjeet Rulhania
Browse files

Invalidate Package Manager cache on permissions state change

Bug: 263504888
Test: build
Change-Id: Ib5d970f716b934f28e946ab07799b68820ec7928
parent 1c03cdbb
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)
            }