Loading services/permission/java/com/android/server/permission/access/AccessCheckingService.kt +42 −41 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { LocalManagerRegistry.addManager( PermissionManagerLocal::class.java, PermissionManagerLocalImpl(this) PermissionManagerLocalImpl(this), ) } Loading Loading @@ -100,7 +100,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { configPermissions, privilegedPermissionAllowlistPackages, permissionAllowlist, implicitToSourcePermissions implicitToSourcePermissions, ) persistence.initialize() persistence.read(state) Loading Loading @@ -153,7 +153,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { internal fun onStorageVolumeMounted( volumeUuid: String?, packageNames: List<String>, isSystemUpdated: Boolean isSystemUpdated: Boolean, ) { val (packageStates, disabledSystemPackageStates) = packageManagerLocal.allPackageStates val knownPackages = packageManagerInternal.knownPackages Loading @@ -165,7 +165,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { knownPackages, volumeUuid, packageNames, isSystemUpdated isSystemUpdated, ) } } Loading @@ -180,7 +180,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { packageStates, disabledSystemPackageStates, knownPackages, packageName packageName, ) } } Loading @@ -196,7 +196,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { disabledSystemPackageStates, knownPackages, packageName, appId appId, ) } } Loading @@ -212,7 +212,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { disabledSystemPackageStates, knownPackages, packageName, userId userId, ) } } Loading @@ -229,7 +229,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { knownPackages, packageName, appId, userId userId, ) } } Loading @@ -246,39 +246,40 @@ class AccessCheckingService(context: Context) : SystemService(context) { private val PackageManagerInternal.knownPackages: IntMap<Array<String>> get() = MutableIntMap<Array<String>>().apply { this[KnownPackages.PACKAGE_INSTALLER] = getKnownPackageNames( KnownPackages.PACKAGE_INSTALLER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_PERMISSION_CONTROLLER] = getKnownPackageNames( KnownPackages.PACKAGE_PERMISSION_CONTROLLER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_VERIFIER] = getKnownPackageNames( KnownPackages.PACKAGE_VERIFIER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_SETUP_WIZARD] = getKnownPackageNames( KnownPackages.PACKAGE_SETUP_WIZARD, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER] = getKnownPackageNames( KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_CONFIGURATOR] = getKnownPackageNames( KnownPackages.PACKAGE_CONFIGURATOR, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER] = getKnownPackageNames( KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_APP_PREDICTOR] = getKnownPackageNames( KnownPackages.PACKAGE_APP_PREDICTOR, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_INSTALLER] = getKnownPackageNames(KnownPackages.PACKAGE_INSTALLER, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_PERMISSION_CONTROLLER] = getKnownPackageNames( KnownPackages.PACKAGE_PERMISSION_CONTROLLER, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_COMPANION] = getKnownPackageNames( KnownPackages.PACKAGE_COMPANION, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_VERIFIER] = getKnownPackageNames(KnownPackages.PACKAGE_VERIFIER, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_SETUP_WIZARD] = getKnownPackageNames(KnownPackages.PACKAGE_SETUP_WIZARD, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER] = getKnownPackageNames( KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_RETAIL_DEMO] = getKnownPackageNames( KnownPackages.PACKAGE_RETAIL_DEMO, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_CONFIGURATOR] = getKnownPackageNames(KnownPackages.PACKAGE_CONFIGURATOR, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER] = getKnownPackageNames( KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_RECENTS] = getKnownPackageNames( KnownPackages.PACKAGE_RECENTS, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_APP_PREDICTOR] = getKnownPackageNames( KnownPackages.PACKAGE_APP_PREDICTOR, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_COMPANION] = getKnownPackageNames(KnownPackages.PACKAGE_COMPANION, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_RETAIL_DEMO] = getKnownPackageNames(KnownPackages.PACKAGE_RETAIL_DEMO, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_RECENTS] = getKnownPackageNames(KnownPackages.PACKAGE_RECENTS, UserHandle.USER_SYSTEM) } @OptIn(ExperimentalContracts::class) Loading services/permission/java/com/android/server/permission/access/AccessPolicy.kt +10 −10 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ private constructor( configPermissions: Map<String, SystemConfig.PermissionEntry>, privilegedPermissionAllowlistPackages: IndexedListSet<String>, permissionAllowlist: PermissionAllowlist, implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>> implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>, ) { state.mutateExternalState().apply { mutateUserIds() += userIds Loading Loading @@ -125,7 +125,7 @@ private constructor( knownPackages: IntMap<Array<String>>, volumeUuid: String?, packageNames: List<String>, isSystemUpdated: Boolean isSystemUpdated: Boolean, ) { val addedAppIds = MutableIntSet() newState.mutateExternalState().apply { Loading Loading @@ -175,7 +175,7 @@ private constructor( packageStates: Map<String, PackageState>, disabledSystemPackageStates: Map<String, PackageState>, knownPackages: IntMap<Array<String>>, packageName: String packageName: String, ) { val packageState = packageStates[packageName] checkNotNull(packageState) { Loading Loading @@ -206,7 +206,7 @@ private constructor( disabledSystemPackageStates: Map<String, PackageState>, knownPackages: IntMap<Array<String>>, packageName: String, appId: Int appId: Int, ) { check(packageName !in packageStates) { "Removed package $packageName is still in packageStates in onPackageRemoved()" Loading Loading @@ -240,7 +240,7 @@ private constructor( disabledSystemPackageStates: Map<String, PackageState>, knownPackages: IntMap<Array<String>>, packageName: String, userId: Int userId: Int, ) { newState.mutateExternalState().apply { setPackageStates(packageStates) Loading @@ -260,7 +260,7 @@ private constructor( knownPackages: IntMap<Array<String>>, packageName: String, appId: Int, userId: Int userId: Int, ) { newState.mutateExternalState().apply { setPackageStates(packageStates) Loading Loading @@ -308,7 +308,7 @@ private constructor( Slog.w( LOG_TAG, "Unexpected version $version for package $packageName," + "latest version is $VERSION_LATEST" "latest version is $VERSION_LATEST", ) } } Loading Loading @@ -346,7 +346,7 @@ private constructor( else -> { Slog.w( LOG_TAG, "Ignoring unknown tag $tagName when parsing user state for user $userId" "Ignoring unknown tag $tagName when parsing user state for user $userId", ) } } Loading Loading @@ -381,7 +381,7 @@ private constructor( private fun BinaryXmlPullParser.parseDefaultPermissionGrant( state: MutableAccessState, userId: Int userId: Int, ) { val userState = state.mutateUserState(userId, WriteMode.NONE)!! val fingerprint = getAttributeValueOrThrow(ATTR_FINGERPRINT).intern() Loading Loading @@ -482,7 +482,7 @@ abstract class SchemePolicy { open fun MutateStateScope.upgradePackageState( packageState: PackageState, userId: Int, version: Int version: Int, ) {} open fun BinaryXmlPullParser.parseSystemState(state: MutableAccessState) {} Loading services/permission/java/com/android/server/permission/access/AccessState.kt +21 −20 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ private typealias UserStatesReference = MutableReference<UserStates, MutableUser sealed class AccessState( internal val externalStateReference: ExternalStateReference, internal val systemStateReference: SystemStateReference, internal val userStatesReference: UserStatesReference internal val userStatesReference: UserStatesReference, ) : Immutable<MutableAccessState> { val externalState: ExternalState get() = externalStateReference.get() Loading @@ -54,13 +54,13 @@ class MutableAccessState private constructor( externalStateReference: ExternalStateReference, systemStateReference: SystemStateReference, userStatesReference: UserStatesReference userStatesReference: UserStatesReference, ) : AccessState(externalStateReference, systemStateReference, userStatesReference) { constructor() : this( ExternalStateReference(MutableExternalState()), SystemStateReference(MutableSystemState()), UserStatesReference(MutableUserStates()) UserStatesReference(MutableUserStates()), ) internal constructor( Loading @@ -68,7 +68,7 @@ private constructor( ) : this( accessState.externalStateReference.toImmutable(), accessState.systemStateReference.toImmutable(), accessState.userStatesReference.toImmutable() accessState.userStatesReference.toImmutable(), ) fun mutateExternalState(): MutableExternalState = externalStateReference.mutate() Loading Loading @@ -106,7 +106,7 @@ sealed class ExternalState( privilegedPermissionAllowlistPackages: IndexedListSet<String>, permissionAllowlist: PermissionAllowlist, implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>, isSystemReady: Boolean isSystemReady: Boolean, ) : Immutable<MutableExternalState> { val userIds: IntSet get() = userIdsReference.get() Loading Loading @@ -158,7 +158,7 @@ private constructor( privilegedPermissionAllowlistPackages: IndexedListSet<String>, permissionAllowlist: PermissionAllowlist, implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>, isSystemReady: Boolean isSystemReady: Boolean, ) : ExternalState( userIdsReference, Loading @@ -171,7 +171,7 @@ private constructor( privilegedPermissionAllowlistPackages, permissionAllowlist, implicitToSourcePermissions, isSystemReady isSystemReady, ) { constructor() : this( Loading @@ -185,7 +185,7 @@ private constructor( MutableIndexedListSet(), PermissionAllowlist(), MutableIndexedMap(), false false, ) internal constructor( Loading @@ -201,7 +201,7 @@ private constructor( externalState.privilegedPermissionAllowlistPackages, externalState.permissionAllowlist, externalState.implicitToSourcePermissions, externalState.isSystemReady externalState.isSystemReady, ) fun mutateUserIds(): MutableIntSet = userIdsReference.mutate() Loading Loading @@ -260,7 +260,8 @@ private constructor( private typealias PermissionGroupsReference = MutableReference< IndexedMap<String, PermissionGroupInfo>, MutableIndexedMap<String, PermissionGroupInfo> IndexedMap<String, PermissionGroupInfo>, MutableIndexedMap<String, PermissionGroupInfo>, > private typealias PermissionTreesReference = Loading @@ -273,7 +274,7 @@ sealed class SystemState( val permissionGroupsReference: PermissionGroupsReference, val permissionTreesReference: PermissionTreesReference, val permissionsReference: PermissionsReference, writeMode: Int writeMode: Int, ) : WritableState, Immutable<MutableSystemState> { val permissionGroups: IndexedMap<String, PermissionGroupInfo> get() = permissionGroupsReference.get() Loading @@ -295,13 +296,13 @@ private constructor( permissionGroupsReference: PermissionGroupsReference, permissionTreesReference: PermissionTreesReference, permissionsReference: PermissionsReference, writeMode: Int writeMode: Int, ) : SystemState( permissionGroupsReference, permissionTreesReference, permissionsReference, writeMode writeMode, ), MutableWritableState { constructor() : Loading @@ -309,7 +310,7 @@ private constructor( PermissionGroupsReference(MutableIndexedMap()), PermissionTreesReference(MutableIndexedMap()), PermissionsReference(MutableIndexedMap()), WriteMode.NONE WriteMode.NONE, ) internal constructor( Loading @@ -318,7 +319,7 @@ private constructor( systemState.permissionGroupsReference.toImmutable(), systemState.permissionTreesReference.toImmutable(), systemState.permissionsReference.toImmutable(), WriteMode.NONE WriteMode.NONE, ) fun mutatePermissionGroups(): MutableIndexedMap<String, PermissionGroupInfo> = Loading Loading @@ -385,7 +386,7 @@ sealed class UserState( internal val appIdAppOpModesReference: AppIdAppOpModesReference, internal val packageAppOpModesReference: PackageAppOpModesReference, defaultPermissionGrantFingerprint: String?, writeMode: Int writeMode: Int, ) : WritableState, Immutable<MutableUserState> { val packageVersions: IndexedMap<String, Int> get() = packageVersionsReference.get() Loading Loading @@ -419,7 +420,7 @@ private constructor( appIdAppOpModesReference: AppIdAppOpModesReference, packageAppOpModesReference: PackageAppOpModesReference, defaultPermissionGrantFingerprint: String?, writeMode: Int writeMode: Int, ) : UserState( packageVersionsReference, Loading @@ -428,7 +429,7 @@ private constructor( appIdAppOpModesReference, packageAppOpModesReference, defaultPermissionGrantFingerprint, writeMode writeMode, ), MutableWritableState { constructor() : Loading @@ -439,7 +440,7 @@ private constructor( AppIdAppOpModesReference(MutableAppIdAppOpModes()), PackageAppOpModesReference(MutablePackageAppOpModes()), null, WriteMode.NONE WriteMode.NONE, ) internal constructor( Loading @@ -451,7 +452,7 @@ private constructor( userState.appIdAppOpModesReference.toImmutable(), userState.packageAppOpModesReference.toImmutable(), userState.defaultPermissionGrantFingerprint, WriteMode.NONE WriteMode.NONE, ) fun mutatePackageVersions(): MutableIndexedMap<String, Int> = packageVersionsReference.mutate() Loading services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt +1 −1 Original line number Diff line number Diff line Loading @@ -83,7 +83,7 @@ class AppIdAppOpPersistence : BaseAppOpPersistence() { private fun BinaryXmlSerializer.serializeAppId( appId: Int, appOpModes: IndexedMap<String, Int> appOpModes: IndexedMap<String, Int>, ) { tag(TAG_APP_ID) { attributeInt(ATTR_ID, appId) Loading services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt +2 −2 Original line number Diff line number Diff line Loading @@ -83,7 +83,7 @@ class AppIdAppOpPolicy : BaseAppOpPolicy(AppIdAppOpPersistence()) { appId: Int, userId: Int, appOpName: String, mode: Int mode: Int, ): Boolean { if (userId !in newState.userStates) { Slog.e(LOG_TAG, "Unable to set app op mode for missing user $userId") Loading Loading @@ -147,7 +147,7 @@ class AppIdAppOpPolicy : BaseAppOpPolicy(AppIdAppOpPersistence()) { userId: Int, appOpName: String, oldMode: Int, newMode: Int newMode: Int, ) /** Loading Loading
services/permission/java/com/android/server/permission/access/AccessCheckingService.kt +42 −41 Original line number Diff line number Diff line Loading @@ -68,7 +68,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { LocalManagerRegistry.addManager( PermissionManagerLocal::class.java, PermissionManagerLocalImpl(this) PermissionManagerLocalImpl(this), ) } Loading Loading @@ -100,7 +100,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { configPermissions, privilegedPermissionAllowlistPackages, permissionAllowlist, implicitToSourcePermissions implicitToSourcePermissions, ) persistence.initialize() persistence.read(state) Loading Loading @@ -153,7 +153,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { internal fun onStorageVolumeMounted( volumeUuid: String?, packageNames: List<String>, isSystemUpdated: Boolean isSystemUpdated: Boolean, ) { val (packageStates, disabledSystemPackageStates) = packageManagerLocal.allPackageStates val knownPackages = packageManagerInternal.knownPackages Loading @@ -165,7 +165,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { knownPackages, volumeUuid, packageNames, isSystemUpdated isSystemUpdated, ) } } Loading @@ -180,7 +180,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { packageStates, disabledSystemPackageStates, knownPackages, packageName packageName, ) } } Loading @@ -196,7 +196,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { disabledSystemPackageStates, knownPackages, packageName, appId appId, ) } } Loading @@ -212,7 +212,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { disabledSystemPackageStates, knownPackages, packageName, userId userId, ) } } Loading @@ -229,7 +229,7 @@ class AccessCheckingService(context: Context) : SystemService(context) { knownPackages, packageName, appId, userId userId, ) } } Loading @@ -246,39 +246,40 @@ class AccessCheckingService(context: Context) : SystemService(context) { private val PackageManagerInternal.knownPackages: IntMap<Array<String>> get() = MutableIntMap<Array<String>>().apply { this[KnownPackages.PACKAGE_INSTALLER] = getKnownPackageNames( KnownPackages.PACKAGE_INSTALLER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_PERMISSION_CONTROLLER] = getKnownPackageNames( KnownPackages.PACKAGE_PERMISSION_CONTROLLER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_VERIFIER] = getKnownPackageNames( KnownPackages.PACKAGE_VERIFIER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_SETUP_WIZARD] = getKnownPackageNames( KnownPackages.PACKAGE_SETUP_WIZARD, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER] = getKnownPackageNames( KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_CONFIGURATOR] = getKnownPackageNames( KnownPackages.PACKAGE_CONFIGURATOR, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER] = getKnownPackageNames( KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER, UserHandle.USER_SYSTEM ) this[KnownPackages.PACKAGE_APP_PREDICTOR] = getKnownPackageNames( KnownPackages.PACKAGE_APP_PREDICTOR, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_INSTALLER] = getKnownPackageNames(KnownPackages.PACKAGE_INSTALLER, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_PERMISSION_CONTROLLER] = getKnownPackageNames( KnownPackages.PACKAGE_PERMISSION_CONTROLLER, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_COMPANION] = getKnownPackageNames( KnownPackages.PACKAGE_COMPANION, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_VERIFIER] = getKnownPackageNames(KnownPackages.PACKAGE_VERIFIER, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_SETUP_WIZARD] = getKnownPackageNames(KnownPackages.PACKAGE_SETUP_WIZARD, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER] = getKnownPackageNames( KnownPackages.PACKAGE_SYSTEM_TEXT_CLASSIFIER, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_RETAIL_DEMO] = getKnownPackageNames( KnownPackages.PACKAGE_RETAIL_DEMO, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_CONFIGURATOR] = getKnownPackageNames(KnownPackages.PACKAGE_CONFIGURATOR, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER] = getKnownPackageNames( KnownPackages.PACKAGE_INCIDENT_REPORT_APPROVER, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_RECENTS] = getKnownPackageNames( KnownPackages.PACKAGE_RECENTS, UserHandle.USER_SYSTEM this[KnownPackages.PACKAGE_APP_PREDICTOR] = getKnownPackageNames( KnownPackages.PACKAGE_APP_PREDICTOR, UserHandle.USER_SYSTEM, ) this[KnownPackages.PACKAGE_COMPANION] = getKnownPackageNames(KnownPackages.PACKAGE_COMPANION, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_RETAIL_DEMO] = getKnownPackageNames(KnownPackages.PACKAGE_RETAIL_DEMO, UserHandle.USER_SYSTEM) this[KnownPackages.PACKAGE_RECENTS] = getKnownPackageNames(KnownPackages.PACKAGE_RECENTS, UserHandle.USER_SYSTEM) } @OptIn(ExperimentalContracts::class) Loading
services/permission/java/com/android/server/permission/access/AccessPolicy.kt +10 −10 Original line number Diff line number Diff line Loading @@ -71,7 +71,7 @@ private constructor( configPermissions: Map<String, SystemConfig.PermissionEntry>, privilegedPermissionAllowlistPackages: IndexedListSet<String>, permissionAllowlist: PermissionAllowlist, implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>> implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>, ) { state.mutateExternalState().apply { mutateUserIds() += userIds Loading Loading @@ -125,7 +125,7 @@ private constructor( knownPackages: IntMap<Array<String>>, volumeUuid: String?, packageNames: List<String>, isSystemUpdated: Boolean isSystemUpdated: Boolean, ) { val addedAppIds = MutableIntSet() newState.mutateExternalState().apply { Loading Loading @@ -175,7 +175,7 @@ private constructor( packageStates: Map<String, PackageState>, disabledSystemPackageStates: Map<String, PackageState>, knownPackages: IntMap<Array<String>>, packageName: String packageName: String, ) { val packageState = packageStates[packageName] checkNotNull(packageState) { Loading Loading @@ -206,7 +206,7 @@ private constructor( disabledSystemPackageStates: Map<String, PackageState>, knownPackages: IntMap<Array<String>>, packageName: String, appId: Int appId: Int, ) { check(packageName !in packageStates) { "Removed package $packageName is still in packageStates in onPackageRemoved()" Loading Loading @@ -240,7 +240,7 @@ private constructor( disabledSystemPackageStates: Map<String, PackageState>, knownPackages: IntMap<Array<String>>, packageName: String, userId: Int userId: Int, ) { newState.mutateExternalState().apply { setPackageStates(packageStates) Loading @@ -260,7 +260,7 @@ private constructor( knownPackages: IntMap<Array<String>>, packageName: String, appId: Int, userId: Int userId: Int, ) { newState.mutateExternalState().apply { setPackageStates(packageStates) Loading Loading @@ -308,7 +308,7 @@ private constructor( Slog.w( LOG_TAG, "Unexpected version $version for package $packageName," + "latest version is $VERSION_LATEST" "latest version is $VERSION_LATEST", ) } } Loading Loading @@ -346,7 +346,7 @@ private constructor( else -> { Slog.w( LOG_TAG, "Ignoring unknown tag $tagName when parsing user state for user $userId" "Ignoring unknown tag $tagName when parsing user state for user $userId", ) } } Loading Loading @@ -381,7 +381,7 @@ private constructor( private fun BinaryXmlPullParser.parseDefaultPermissionGrant( state: MutableAccessState, userId: Int userId: Int, ) { val userState = state.mutateUserState(userId, WriteMode.NONE)!! val fingerprint = getAttributeValueOrThrow(ATTR_FINGERPRINT).intern() Loading Loading @@ -482,7 +482,7 @@ abstract class SchemePolicy { open fun MutateStateScope.upgradePackageState( packageState: PackageState, userId: Int, version: Int version: Int, ) {} open fun BinaryXmlPullParser.parseSystemState(state: MutableAccessState) {} Loading
services/permission/java/com/android/server/permission/access/AccessState.kt +21 −20 Original line number Diff line number Diff line Loading @@ -36,7 +36,7 @@ private typealias UserStatesReference = MutableReference<UserStates, MutableUser sealed class AccessState( internal val externalStateReference: ExternalStateReference, internal val systemStateReference: SystemStateReference, internal val userStatesReference: UserStatesReference internal val userStatesReference: UserStatesReference, ) : Immutable<MutableAccessState> { val externalState: ExternalState get() = externalStateReference.get() Loading @@ -54,13 +54,13 @@ class MutableAccessState private constructor( externalStateReference: ExternalStateReference, systemStateReference: SystemStateReference, userStatesReference: UserStatesReference userStatesReference: UserStatesReference, ) : AccessState(externalStateReference, systemStateReference, userStatesReference) { constructor() : this( ExternalStateReference(MutableExternalState()), SystemStateReference(MutableSystemState()), UserStatesReference(MutableUserStates()) UserStatesReference(MutableUserStates()), ) internal constructor( Loading @@ -68,7 +68,7 @@ private constructor( ) : this( accessState.externalStateReference.toImmutable(), accessState.systemStateReference.toImmutable(), accessState.userStatesReference.toImmutable() accessState.userStatesReference.toImmutable(), ) fun mutateExternalState(): MutableExternalState = externalStateReference.mutate() Loading Loading @@ -106,7 +106,7 @@ sealed class ExternalState( privilegedPermissionAllowlistPackages: IndexedListSet<String>, permissionAllowlist: PermissionAllowlist, implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>, isSystemReady: Boolean isSystemReady: Boolean, ) : Immutable<MutableExternalState> { val userIds: IntSet get() = userIdsReference.get() Loading Loading @@ -158,7 +158,7 @@ private constructor( privilegedPermissionAllowlistPackages: IndexedListSet<String>, permissionAllowlist: PermissionAllowlist, implicitToSourcePermissions: IndexedMap<String, IndexedListSet<String>>, isSystemReady: Boolean isSystemReady: Boolean, ) : ExternalState( userIdsReference, Loading @@ -171,7 +171,7 @@ private constructor( privilegedPermissionAllowlistPackages, permissionAllowlist, implicitToSourcePermissions, isSystemReady isSystemReady, ) { constructor() : this( Loading @@ -185,7 +185,7 @@ private constructor( MutableIndexedListSet(), PermissionAllowlist(), MutableIndexedMap(), false false, ) internal constructor( Loading @@ -201,7 +201,7 @@ private constructor( externalState.privilegedPermissionAllowlistPackages, externalState.permissionAllowlist, externalState.implicitToSourcePermissions, externalState.isSystemReady externalState.isSystemReady, ) fun mutateUserIds(): MutableIntSet = userIdsReference.mutate() Loading Loading @@ -260,7 +260,8 @@ private constructor( private typealias PermissionGroupsReference = MutableReference< IndexedMap<String, PermissionGroupInfo>, MutableIndexedMap<String, PermissionGroupInfo> IndexedMap<String, PermissionGroupInfo>, MutableIndexedMap<String, PermissionGroupInfo>, > private typealias PermissionTreesReference = Loading @@ -273,7 +274,7 @@ sealed class SystemState( val permissionGroupsReference: PermissionGroupsReference, val permissionTreesReference: PermissionTreesReference, val permissionsReference: PermissionsReference, writeMode: Int writeMode: Int, ) : WritableState, Immutable<MutableSystemState> { val permissionGroups: IndexedMap<String, PermissionGroupInfo> get() = permissionGroupsReference.get() Loading @@ -295,13 +296,13 @@ private constructor( permissionGroupsReference: PermissionGroupsReference, permissionTreesReference: PermissionTreesReference, permissionsReference: PermissionsReference, writeMode: Int writeMode: Int, ) : SystemState( permissionGroupsReference, permissionTreesReference, permissionsReference, writeMode writeMode, ), MutableWritableState { constructor() : Loading @@ -309,7 +310,7 @@ private constructor( PermissionGroupsReference(MutableIndexedMap()), PermissionTreesReference(MutableIndexedMap()), PermissionsReference(MutableIndexedMap()), WriteMode.NONE WriteMode.NONE, ) internal constructor( Loading @@ -318,7 +319,7 @@ private constructor( systemState.permissionGroupsReference.toImmutable(), systemState.permissionTreesReference.toImmutable(), systemState.permissionsReference.toImmutable(), WriteMode.NONE WriteMode.NONE, ) fun mutatePermissionGroups(): MutableIndexedMap<String, PermissionGroupInfo> = Loading Loading @@ -385,7 +386,7 @@ sealed class UserState( internal val appIdAppOpModesReference: AppIdAppOpModesReference, internal val packageAppOpModesReference: PackageAppOpModesReference, defaultPermissionGrantFingerprint: String?, writeMode: Int writeMode: Int, ) : WritableState, Immutable<MutableUserState> { val packageVersions: IndexedMap<String, Int> get() = packageVersionsReference.get() Loading Loading @@ -419,7 +420,7 @@ private constructor( appIdAppOpModesReference: AppIdAppOpModesReference, packageAppOpModesReference: PackageAppOpModesReference, defaultPermissionGrantFingerprint: String?, writeMode: Int writeMode: Int, ) : UserState( packageVersionsReference, Loading @@ -428,7 +429,7 @@ private constructor( appIdAppOpModesReference, packageAppOpModesReference, defaultPermissionGrantFingerprint, writeMode writeMode, ), MutableWritableState { constructor() : Loading @@ -439,7 +440,7 @@ private constructor( AppIdAppOpModesReference(MutableAppIdAppOpModes()), PackageAppOpModesReference(MutablePackageAppOpModes()), null, WriteMode.NONE WriteMode.NONE, ) internal constructor( Loading @@ -451,7 +452,7 @@ private constructor( userState.appIdAppOpModesReference.toImmutable(), userState.packageAppOpModesReference.toImmutable(), userState.defaultPermissionGrantFingerprint, WriteMode.NONE WriteMode.NONE, ) fun mutatePackageVersions(): MutableIndexedMap<String, Int> = packageVersionsReference.mutate() Loading
services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPersistence.kt +1 −1 Original line number Diff line number Diff line Loading @@ -83,7 +83,7 @@ class AppIdAppOpPersistence : BaseAppOpPersistence() { private fun BinaryXmlSerializer.serializeAppId( appId: Int, appOpModes: IndexedMap<String, Int> appOpModes: IndexedMap<String, Int>, ) { tag(TAG_APP_ID) { attributeInt(ATTR_ID, appId) Loading
services/permission/java/com/android/server/permission/access/appop/AppIdAppOpPolicy.kt +2 −2 Original line number Diff line number Diff line Loading @@ -83,7 +83,7 @@ class AppIdAppOpPolicy : BaseAppOpPolicy(AppIdAppOpPersistence()) { appId: Int, userId: Int, appOpName: String, mode: Int mode: Int, ): Boolean { if (userId !in newState.userStates) { Slog.e(LOG_TAG, "Unable to set app op mode for missing user $userId") Loading Loading @@ -147,7 +147,7 @@ class AppIdAppOpPolicy : BaseAppOpPolicy(AppIdAppOpPersistence()) { userId: Int, appOpName: String, oldMode: Int, newMode: Int newMode: Int, ) /** Loading