diff --git a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt index 61574d46a780c..f453e7924952f 100644 --- a/services/permission/java/com/android/server/permission/access/AccessPolicy.kt +++ b/services/permission/java/com/android/server/permission/access/AccessPolicy.kt @@ -21,9 +21,9 @@ import com.android.modules.utils.BinaryXmlPullParser import com.android.modules.utils.BinaryXmlSerializer import com.android.server.SystemConfig import com.android.server.permission.access.appop.PackageAppOpPolicy -import com.android.server.permission.access.appop.UidAppOpPolicy +import com.android.server.permission.access.appop.AppIdAppOpPolicy import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports -import com.android.server.permission.access.permission.UidPermissionPolicy +import com.android.server.permission.access.permission.AppIdPermissionPolicy import com.android.server.permission.access.util.forEachTag import com.android.server.permission.access.util.tag import com.android.server.permission.access.util.tagName @@ -37,8 +37,8 @@ class AccessPolicy private constructor( IndexedMap>().apply { fun addPolicy(policy: SchemePolicy) = getOrPut(policy.subjectScheme) { IndexedMap() }.put(policy.objectScheme, policy) - addPolicy(UidPermissionPolicy()) - addPolicy(UidAppOpPolicy()) + addPolicy(AppIdPermissionPolicy()) + addPolicy(AppIdAppOpPolicy()) addPolicy(PackageAppOpPolicy()) } ) diff --git a/services/permission/java/com/android/server/permission/access/AccessState.kt b/services/permission/java/com/android/server/permission/access/AccessState.kt index 5532311068ab4..0b4d6e9b86b75 100644 --- a/services/permission/java/com/android/server/permission/access/AccessState.kt +++ b/services/permission/java/com/android/server/permission/access/AccessState.kt @@ -98,9 +98,9 @@ class SystemState private constructor( class UserState private constructor( // A map of (appId to a map of (permissionName to permissionFlags)) - val uidPermissionFlags: IntMap>, + val appIdPermissionFlags: IntMap>, // appId -> opName -> opCode - val uidAppOpModes: IntMap>, + val appIdAppOpModes: IntMap>, // packageName -> opName -> opCode val packageAppOpModes: IndexedMap> ) : WritableState() { @@ -111,8 +111,8 @@ class UserState private constructor( ) fun copy(): UserState = UserState( - uidPermissionFlags.copy { it.copy { it } }, - uidAppOpModes.copy { it.copy { it } }, + appIdPermissionFlags.copy { it.copy { it } }, + appIdAppOpModes.copy { it.copy { it } }, packageAppOpModes.copy { it.copy { it } } ) } diff --git a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPersistence.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt similarity index 79% rename from services/permission/java/com/android/server/permission/access/appop/UidAppOpPersistence.kt rename to services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt index 7a965d470bb0e..c29f30c83a49d 100644 --- a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPersistence.kt +++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt @@ -28,15 +28,15 @@ import com.android.server.permission.access.util.getAttributeIntOrThrow import com.android.server.permission.access.util.tag import com.android.server.permission.access.util.tagName -class UidAppOpPersistence : BaseAppOpPersistence() { +class AppIdAppOpPersistence : BaseAppOpPersistence() { override fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) { when (tagName) { - TAG_UID_APP_OPS -> parseUidAppOps(state, userId) + TAG_APP_ID_APP_OPS -> parseAppIdAppOps(state, userId) else -> {} } } - private fun BinaryXmlPullParser.parseUidAppOps(state: AccessState, userId: Int) { + private fun BinaryXmlPullParser.parseAppIdAppOps(state: AccessState, userId: Int) { val userState = state.userStates[userId] forEachTag { when (tagName) { @@ -44,7 +44,7 @@ class UidAppOpPersistence : BaseAppOpPersistence() { else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing app-op state") } } - userState.uidAppOpModes.retainAllIndexed { _, appId, _ -> + userState.appIdAppOpModes.retainAllIndexed { _, appId, _ -> val hasAppId = appId in state.systemState.appIds if (!hasAppId) { Log.w(LOG_TAG, "Dropping unknown app ID $appId when parsing app-op state") @@ -56,17 +56,17 @@ class UidAppOpPersistence : BaseAppOpPersistence() { private fun BinaryXmlPullParser.parseAppId(userState: UserState) { val appId = getAttributeIntOrThrow(ATTR_ID) val appOpModes = IndexedMap() - userState.uidAppOpModes[appId] = appOpModes + userState.appIdAppOpModes[appId] = appOpModes parseAppOps(appOpModes) } override fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) { - serializeUidAppOps(state.userStates[userId]) + serializeAppIdAppOps(state.userStates[userId]) } - private fun BinaryXmlSerializer.serializeUidAppOps(userState: UserState) { - tag(TAG_UID_APP_OPS) { - userState.uidAppOpModes.forEachIndexed { _, appId, appOpModes -> + private fun BinaryXmlSerializer.serializeAppIdAppOps(userState: UserState) { + tag(TAG_APP_ID_APP_OPS) { + userState.appIdAppOpModes.forEachIndexed { _, appId, appOpModes -> serializeAppId(appId, appOpModes) } } @@ -83,10 +83,10 @@ class UidAppOpPersistence : BaseAppOpPersistence() { } companion object { - private val LOG_TAG = UidAppOpPersistence::class.java.simpleName + private val LOG_TAG = AppIdAppOpPersistence::class.java.simpleName private const val TAG_APP_ID = "app-id" - private const val TAG_UID_APP_OPS = "uid-app-ops" + private const val TAG_APP_ID_APP_OPS = "app-id-app-ops" private const val ATTR_ID = "id" } diff --git a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPolicy.kt b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt similarity index 90% rename from services/permission/java/com/android/server/permission/access/appop/UidAppOpPolicy.kt rename to services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt index 0ba9a1e1ee307..5a2522e0d53d5 100644 --- a/services/permission/java/com/android/server/permission/access/appop/UidAppOpPolicy.kt +++ b/services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt @@ -24,7 +24,7 @@ import com.android.server.permission.access.MutateStateScope import com.android.server.permission.access.UidUri import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports -class UidAppOpPolicy : BaseAppOpPolicy(UidAppOpPersistence()) { +class AppIdAppOpPolicy : BaseAppOpPolicy(AppIdAppOpPersistence()) { @Volatile private var onAppOpModeChangedListeners = IndexedListSet() private val onAppOpModeChangedListenersLock = Any() @@ -54,18 +54,18 @@ class UidAppOpPolicy : BaseAppOpPolicy(UidAppOpPersistence()) { override fun MutateStateScope.onAppIdRemoved(appId: Int) { newState.userStates.forEachIndexed { _, _, userState -> - userState.uidAppOpModes -= appId + userState.appIdAppOpModes -= appId userState.requestWrite() // Skip notifying the change listeners since the app ID no longer exists. } } fun GetStateScope.getAppOpModes(appId: Int, userId: Int): IndexedMap? = - state.userStates[userId].uidAppOpModes[appId] + state.userStates[userId].appIdAppOpModes[appId] fun MutateStateScope.removeAppOpModes(appId: Int, userId: Int): Boolean { val userState = newState.userStates[userId] - val isChanged = userState.uidAppOpModes.removeReturnOld(appId) != null + val isChanged = userState.appIdAppOpModes.removeReturnOld(appId) != null if (isChanged) { userState.requestWrite() } @@ -73,7 +73,7 @@ class UidAppOpPolicy : BaseAppOpPolicy(UidAppOpPersistence()) { } fun GetStateScope.getAppOpMode(appId: Int, userId: Int, appOpName: String): Int = - state.userStates[userId].uidAppOpModes[appId] + state.userStates[userId].appIdAppOpModes[appId] .getWithDefault(appOpName, AppOpsManager.opToDefaultMode(appOpName)) fun MutateStateScope.setAppOpMode( @@ -83,8 +83,8 @@ class UidAppOpPolicy : BaseAppOpPolicy(UidAppOpPersistence()) { mode: Int ): Boolean { val userState = newState.userStates[userId] - val uidAppOpModes = userState.uidAppOpModes - var appOpModes = uidAppOpModes[appId] + val appIdAppOpModes = userState.appIdAppOpModes + var appOpModes = appIdAppOpModes[appId] val defaultMode = AppOpsManager.opToDefaultMode(appOpName) val oldMode = appOpModes.getWithDefault(appOpName, defaultMode) if (oldMode == mode) { @@ -92,11 +92,11 @@ class UidAppOpPolicy : BaseAppOpPolicy(UidAppOpPersistence()) { } if (appOpModes == null) { appOpModes = IndexedMap() - uidAppOpModes[appId] = appOpModes + appIdAppOpModes[appId] = appOpModes } appOpModes.putWithDefault(appOpName, mode, defaultMode) if (appOpModes.isEmpty()) { - uidAppOpModes -= appId + appIdAppOpModes -= appId } userState.requestWrite() onAppOpModeChangedListeners.forEachIndexed { _, it -> diff --git a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt index af85ebada0767..4caf6cc257b50 100644 --- a/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt +++ b/services/permission/java/com/android/server/permission/access/appop/AppOpService.kt @@ -47,7 +47,7 @@ class AppOpService( private val packagePolicy = service.getSchemePolicy(PackageUri.SCHEME, AppOpUri.SCHEME) as PackageAppOpPolicy private val uidPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME) - as UidAppOpPolicy + as AppIdAppOpPolicy private val context = service.context private lateinit var handler: Handler diff --git a/services/permission/java/com/android/server/permission/access/permission/UidPermissionMigration.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionMigration.kt similarity index 96% rename from services/permission/java/com/android/server/permission/access/permission/UidPermissionMigration.kt rename to services/permission/java/com/android/server/permission/access/permission/AppIdPermissionMigration.kt index 8a7697c1bcd53..0a2fad941cc4e 100644 --- a/services/permission/java/com/android/server/permission/access/permission/UidPermissionMigration.kt +++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionMigration.kt @@ -25,7 +25,7 @@ import com.android.server.pm.permission.PermissionMigrationHelper /** * This class migrate legacy permissions to unified permission subsystem */ -class UidPermissionMigration { +class AppIdPermissionMigration { internal fun migrateSystemState(state: AccessState) { val legacyPermissionsManager = LocalServices.getService(PermissionMigrationHelper::class.java)!! @@ -71,7 +71,7 @@ class UidPermissionMigration { userId: Int ) { val permissionFlags = - state.userStates[userId].uidPermissionFlags.getOrPut(appId) { IndexedMap() } + state.userStates[userId].appIdPermissionFlags.getOrPut(appId) { IndexedMap() } legacyPermissionStates.forEach forEachPermission@ { (permissionName, permissionState) -> val permission = state.systemState.permissions[permissionName] @@ -119,7 +119,7 @@ class UidPermissionMigration { } companion object { - private val LOG_TAG = UidPermissionMigration::class.java.simpleName + private val LOG_TAG = AppIdPermissionMigration::class.java.simpleName private const val DEBUG_MIGRATION = false } diff --git a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPersistence.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt similarity index 86% rename from services/permission/java/com/android/server/permission/access/permission/UidPermissionPersistence.kt rename to services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt index 35cdbce01128b..552dda1fd7e11 100644 --- a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPersistence.kt +++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPersistence.kt @@ -37,7 +37,7 @@ import com.android.server.permission.access.util.getAttributeValueOrThrow import com.android.server.permission.access.util.tag import com.android.server.permission.access.util.tagName -class UidPermissionPersistence { +class AppIdPermissionPersistence { fun BinaryXmlPullParser.parseSystemState(state: AccessState) { val systemState = state.systemState when (tagName) { @@ -126,12 +126,12 @@ class UidPermissionPersistence { fun BinaryXmlPullParser.parseUserState(state: AccessState, userId: Int) { when (tagName) { - TAG_PERMISSIONS -> parsePermissionFlags(state, userId) + TAG_APP_ID_PERMISSIONS -> parseAppIdPermissions(state, userId) else -> {} } } - private fun BinaryXmlPullParser.parsePermissionFlags(state: AccessState, userId: Int) { + private fun BinaryXmlPullParser.parseAppIdPermissions(state: AccessState, userId: Int) { val userState = state.userStates[userId] forEachTag { when (tagName) { @@ -139,7 +139,7 @@ class UidPermissionPersistence { else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing permission state") } } - userState.uidPermissionFlags.retainAllIndexed { _, appId, _ -> + userState.appIdPermissionFlags.retainAllIndexed { _, appId, _ -> val hasAppId = appId in state.systemState.appIds if (!hasAppId) { Log.w(LOG_TAG, "Dropping unknown app ID $appId when parsing permission state") @@ -151,34 +151,34 @@ class UidPermissionPersistence { private fun BinaryXmlPullParser.parseAppId(userState: UserState) { val appId = getAttributeIntOrThrow(ATTR_ID) val permissionFlags = IndexedMap() - userState.uidPermissionFlags[appId] = permissionFlags - parseAppIdPermissions(permissionFlags) + userState.appIdPermissionFlags[appId] = permissionFlags + parsePermissionStates(permissionFlags) } - private fun BinaryXmlPullParser.parseAppIdPermissions( + private fun BinaryXmlPullParser.parsePermissionStates( permissionFlags: IndexedMap ) { forEachTag { when (tagName) { - TAG_PERMISSION -> parseAppIdPermission(permissionFlags) + TAG_PERMISSION -> parsePermissionState(permissionFlags) else -> Log.w(LOG_TAG, "Ignoring unknown tag $name when parsing permission state") } } } - private fun BinaryXmlPullParser.parseAppIdPermission(permissionFlags: IndexedMap) { + private fun BinaryXmlPullParser.parsePermissionState(permissionFlags: IndexedMap) { val name = getAttributeValueOrThrow(ATTR_NAME).intern() val flags = getAttributeIntOrThrow(ATTR_FLAGS) permissionFlags[name] = flags } fun BinaryXmlSerializer.serializeUserState(state: AccessState, userId: Int) { - serializePermissionFlags(state.userStates[userId]) + serializeAppIdPermissions(state.userStates[userId]) } - private fun BinaryXmlSerializer.serializePermissionFlags(userState: UserState) { - tag(TAG_PERMISSIONS) { - userState.uidPermissionFlags.forEachIndexed { _, appId, permissionFlags -> + private fun BinaryXmlSerializer.serializeAppIdPermissions(userState: UserState) { + tag(TAG_APP_ID_PERMISSIONS) { + userState.appIdPermissionFlags.forEachIndexed { _, appId, permissionFlags -> serializeAppId(appId, permissionFlags) } } @@ -190,19 +190,19 @@ class UidPermissionPersistence { ) { tag(TAG_APP_ID) { attributeInt(ATTR_ID, appId) - serializeAppIdPermissions(permissionFlags) + serializePermissionStates(permissionFlags) } } - private fun BinaryXmlSerializer.serializeAppIdPermissions( + private fun BinaryXmlSerializer.serializePermissionStates( permissionFlags: IndexedMap ) { permissionFlags.forEachIndexed { _, name, flags -> - serializeAppIdPermission(name, flags) + serializePermissionState(name, flags) } } - private fun BinaryXmlSerializer.serializeAppIdPermission(name: String, flags: Int) { + private fun BinaryXmlSerializer.serializePermissionState(name: String, flags: Int) { tag(TAG_PERMISSION) { attributeInterned(ATTR_NAME, name) attributeInt(ATTR_FLAGS, flags) @@ -210,9 +210,10 @@ class UidPermissionPersistence { } companion object { - private val LOG_TAG = UidPermissionPersistence::class.java.simpleName + private val LOG_TAG = AppIdPermissionPersistence::class.java.simpleName private const val TAG_APP_ID = "app-id" + private const val TAG_APP_ID_PERMISSIONS = "app-id-permissions" private const val TAG_PERMISSION = "permission" private const val TAG_PERMISSIONS = "permissions" private const val TAG_PERMISSION_TREES = "permission-trees" diff --git a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt similarity index 98% rename from services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt rename to services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt index 132b90dfa1f24..6673dc6dac220 100644 --- a/services/permission/java/com/android/server/permission/access/permission/UidPermissionPolicy.kt +++ b/services/permission/java/com/android/server/permission/access/permission/AppIdPermissionPolicy.kt @@ -45,10 +45,10 @@ import com.android.server.pm.permission.CompatibilityPermissionInfo import com.android.server.pm.pkg.AndroidPackage import com.android.server.pm.pkg.PackageState -class UidPermissionPolicy : SchemePolicy() { - private val persistence = UidPermissionPersistence() +class AppIdPermissionPolicy : SchemePolicy() { + private val persistence = AppIdPermissionPersistence() - private val migration = UidPermissionMigration() + private val migration = AppIdPermissionMigration() @Volatile private var onPermissionFlagsChangedListeners = @@ -126,7 +126,7 @@ class UidPermissionPolicy : SchemePolicy() { override fun MutateStateScope.onAppIdRemoved(appId: Int) { newState.userStates.forEachValueIndexed { _, userState -> - userState.uidPermissionFlags -= appId + userState.appIdPermissionFlags -= appId userState.requestWrite() // Skip notifying the change listeners since the app ID no longer exists. } @@ -596,7 +596,7 @@ class UidPermissionPolicy : SchemePolicy() { requestedPermissions += it.androidPackage!!.requestedPermissions } newState.userStates.forEachIndexed { _, userId, userState -> - userState.uidPermissionFlags[appId]?.forEachReversedIndexed { _, permissionName, _ -> + userState.appIdPermissionFlags[appId]?.forEachReversedIndexed { _, permissionName, _ -> if (permissionName !in requestedPermissions) { setPermissionFlags(appId, userId, permissionName, 0) } @@ -608,7 +608,7 @@ class UidPermissionPolicy : SchemePolicy() { // If the app is updated, and has scoped storage permissions, then it is possible that the // app updated in an attempt to get unscoped storage. If so, revoke all storage permissions. newState.userStates.forEachIndexed { _, userId, userState -> - userState.uidPermissionFlags[appId]?.forEachReversedIndexed { + userState.appIdPermissionFlags[appId]?.forEachReversedIndexed { _, permissionName, oldFlags -> if (permissionName !in STORAGE_AND_MEDIA_PERMISSIONS || oldFlags == 0) { return@forEachReversedIndexed @@ -1316,7 +1316,7 @@ class UidPermissionPolicy : SchemePolicy() { } fun GetStateScope.getUidPermissionFlags(appId: Int, userId: Int): IndexedMap? = - state.userStates[userId]?.uidPermissionFlags?.get(appId) + state.userStates[userId]?.appIdPermissionFlags?.get(appId) fun GetStateScope.getPermissionFlags( appId: Int, @@ -1336,7 +1336,7 @@ class UidPermissionPolicy : SchemePolicy() { userId: Int, permissionName: String ): Int = - state.userStates[userId]?.uidPermissionFlags?.get(appId).getWithDefault(permissionName, 0) + state.userStates[userId]?.appIdPermissionFlags?.get(appId).getWithDefault(permissionName, 0) fun MutateStateScope.setPermissionFlags( appId: Int, @@ -1354,8 +1354,8 @@ class UidPermissionPolicy : SchemePolicy() { flagValues: Int ): Boolean { val userState = newState.userStates[userId] - val uidPermissionFlags = userState.uidPermissionFlags - var permissionFlags = uidPermissionFlags[appId] + val appIdPermissionFlags = userState.appIdPermissionFlags + var permissionFlags = appIdPermissionFlags[appId] val oldFlags = permissionFlags.getWithDefault(permissionName, 0) val newFlags = (oldFlags andInv flagMask) or (flagValues and flagMask) if (oldFlags == newFlags) { @@ -1363,11 +1363,11 @@ class UidPermissionPolicy : SchemePolicy() { } if (permissionFlags == null) { permissionFlags = IndexedMap() - uidPermissionFlags[appId] = permissionFlags + appIdPermissionFlags[appId] = permissionFlags } permissionFlags.putWithDefault(permissionName, newFlags, 0) if (permissionFlags.isEmpty()) { - uidPermissionFlags -= appId + appIdPermissionFlags -= appId } userState.requestWrite() onPermissionFlagsChangedListeners.forEachIndexed { _, it -> @@ -1397,7 +1397,7 @@ class UidPermissionPolicy : SchemePolicy() { } companion object { - private val LOG_TAG = UidPermissionPolicy::class.java.simpleName + private val LOG_TAG = AppIdPermissionPolicy::class.java.simpleName private const val PLATFORM_PACKAGE_NAME = "android" diff --git a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt index 7929245ebf723..9b69362939c50 100644 --- a/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt +++ b/services/permission/java/com/android/server/permission/access/permission/PermissionService.kt @@ -65,7 +65,7 @@ import com.android.server.permission.access.GetStateScope import com.android.server.permission.access.MutateStateScope import com.android.server.permission.access.PermissionUri import com.android.server.permission.access.UidUri -import com.android.server.permission.access.appop.UidAppOpPolicy +import com.android.server.permission.access.appop.AppIdAppOpPolicy import com.android.server.permission.access.collection.* // ktlint-disable no-wildcard-imports import com.android.server.permission.access.util.andInv import com.android.server.permission.access.util.hasAnyBit @@ -101,7 +101,7 @@ class PermissionService( private val service: AccessCheckingService ) : PermissionManagerServiceInterface { private val policy = - service.getSchemePolicy(UidUri.SCHEME, PermissionUri.SCHEME) as UidPermissionPolicy + service.getSchemePolicy(UidUri.SCHEME, PermissionUri.SCHEME) as AppIdPermissionPolicy private val context = service.context private lateinit var metricsLogger: MetricsLogger @@ -930,7 +930,8 @@ class PermissionService( permissionName: String, isGranted: Boolean ) { - val appOpPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME) as UidAppOpPolicy + val appOpPolicy = service.getSchemePolicy(UidUri.SCHEME, AppOpUri.SCHEME) as + AppIdAppOpPolicy val appOpName = AppOpsManager.permissionToOp(permissionName) val mode = if (isGranted) AppOpsManager.MODE_ALLOWED else AppOpsManager.MODE_ERRORED with(appOpPolicy) { setAppOpMode(packageState.appId, userId, appOpName, mode) } @@ -2102,7 +2103,7 @@ class PermissionService( * Callback invoked when interesting actions have been taken on a permission. */ private inner class OnPermissionFlagsChangedListener : - UidPermissionPolicy.OnPermissionFlagsChangedListener() { + AppIdPermissionPolicy.OnPermissionFlagsChangedListener() { private var isPermissionFlagsChanged = false private val runtimePermissionChangedUids = IntSet()