Loading packages/SystemUI/Android.bp +0 −2 Original line number Diff line number Diff line Loading @@ -294,8 +294,6 @@ filegroup { "tests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDreamingTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt", // Keyguard helper Loading packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/FingerprintSensorType.kt +5 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,11 @@ enum class FingerprintSensorType { UDFPS_ULTRASONIC, UDFPS_OPTICAL, POWER_BUTTON, HOME_BUTTON HOME_BUTTON; fun isUdfps(): Boolean { return (this == UDFPS_OPTICAL) || (this == UDFPS_ULTRASONIC) } } /** Convert [this] to corresponding [FingerprintSensorType] */ Loading packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest Loading @@ -46,6 +47,7 @@ import kotlinx.coroutines.launch * Device entry occurs when the user successfully dismisses (or bypasses) the lockscreen, regardless * of the authentication method used. */ @ExperimentalCoroutinesApi @SysUISingleton class DeviceEntryInteractor @Inject Loading packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractor.kt 0 → 100644 +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.deviceentry.domain.interactor import com.android.systemui.biometrics.data.repository.FingerprintPropertyRepository import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map /** Encapsulates business logic for device entry under-display fingerprint state changes. */ @ExperimentalCoroutinesApi @SysUISingleton class DeviceEntryUdfpsInteractor @Inject constructor( // TODO (b/309655554): create & use interactors for these repositories fingerprintPropertyRepository: FingerprintPropertyRepository, fingerprintAuthRepository: DeviceEntryFingerprintAuthRepository, biometricSettingsRepository: BiometricSettingsRepository, ) { /** Whether the device supports an under display fingerprint sensor. */ val isUdfpsSupported: Flow<Boolean> = fingerprintPropertyRepository.sensorType.map { it.isUdfps() } /** Whether the under-display fingerprint sensor is enrolled and enabled for device entry. */ val isUdfpsEnrolledAndEnabled: Flow<Boolean> = combine(isUdfpsSupported, biometricSettingsRepository.isFingerprintEnrolledAndEnabled) { udfps, fpEnrolledAndEnabled -> udfps && fpEnrolledAndEnabled } /** Whether the under display fingerprint sensor is currently running. */ val isListeningForUdfps = isUdfpsSupported.flatMapLatest { isUdfps -> if (isUdfps) { fingerprintAuthRepository.isRunning } else { flowOf(false) } } } packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +2 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import com.android.systemui.keyguard.data.repository.KeyguardRepositoryModule; import com.android.systemui.keyguard.domain.interactor.StartKeyguardTransitionModule; import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger; import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLoggerImpl; import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransitionModule; import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel; import com.android.systemui.log.SessionTracker; import com.android.systemui.navigationbar.NavigationModeController; Loading Loading @@ -94,6 +95,7 @@ import kotlinx.coroutines.CoroutineDispatcher; KeyguardStatusViewComponent.class, KeyguardUserSwitcherComponent.class}, includes = { DeviceEntryIconTransitionModule.class, FalsingModule.class, KeyguardDataQuickAffordanceModule.class, KeyguardRepositoryModule.class, Loading Loading
packages/SystemUI/Android.bp +0 −2 Original line number Diff line number Diff line Loading @@ -294,8 +294,6 @@ filegroup { "tests/src/com/android/systemui/bouncer/ui/viewmodel/KeyguardBouncerViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/DreamingToLockscreenTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/GoneToDreamingTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToDreamingTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/LockscreenToOccludedTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/OccludedToLockscreenTransitionViewModelTest.kt", "tests/src/com/android/systemui/keyguard/ui/viewmodel/PrimaryBouncerToGoneTransitionViewModelTest.kt", // Keyguard helper Loading
packages/SystemUI/shared/biometrics/src/com/android/systemui/biometrics/shared/model/FingerprintSensorType.kt +5 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,11 @@ enum class FingerprintSensorType { UDFPS_ULTRASONIC, UDFPS_OPTICAL, POWER_BUTTON, HOME_BUTTON HOME_BUTTON; fun isUdfps(): Boolean { return (this == UDFPS_OPTICAL) || (this == UDFPS_ULTRASONIC) } } /** Convert [this] to corresponding [FingerprintSensorType] */ Loading
packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryInteractor.kt +2 −0 Original line number Diff line number Diff line Loading @@ -29,6 +29,7 @@ import com.android.systemui.scene.shared.model.SceneKey import com.android.systemui.scene.shared.model.SceneModel import javax.inject.Inject import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.collectLatest Loading @@ -46,6 +47,7 @@ import kotlinx.coroutines.launch * Device entry occurs when the user successfully dismisses (or bypasses) the lockscreen, regardless * of the authentication method used. */ @ExperimentalCoroutinesApi @SysUISingleton class DeviceEntryInteractor @Inject Loading
packages/SystemUI/src/com/android/systemui/deviceentry/domain/interactor/DeviceEntryUdfpsInteractor.kt 0 → 100644 +62 −0 Original line number Diff line number Diff line /* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.deviceentry.domain.interactor import com.android.systemui.biometrics.data.repository.FingerprintPropertyRepository import com.android.systemui.dagger.SysUISingleton import com.android.systemui.keyguard.data.repository.BiometricSettingsRepository import com.android.systemui.keyguard.data.repository.DeviceEntryFingerprintAuthRepository import javax.inject.Inject import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map /** Encapsulates business logic for device entry under-display fingerprint state changes. */ @ExperimentalCoroutinesApi @SysUISingleton class DeviceEntryUdfpsInteractor @Inject constructor( // TODO (b/309655554): create & use interactors for these repositories fingerprintPropertyRepository: FingerprintPropertyRepository, fingerprintAuthRepository: DeviceEntryFingerprintAuthRepository, biometricSettingsRepository: BiometricSettingsRepository, ) { /** Whether the device supports an under display fingerprint sensor. */ val isUdfpsSupported: Flow<Boolean> = fingerprintPropertyRepository.sensorType.map { it.isUdfps() } /** Whether the under-display fingerprint sensor is enrolled and enabled for device entry. */ val isUdfpsEnrolledAndEnabled: Flow<Boolean> = combine(isUdfpsSupported, biometricSettingsRepository.isFingerprintEnrolledAndEnabled) { udfps, fpEnrolledAndEnabled -> udfps && fpEnrolledAndEnabled } /** Whether the under display fingerprint sensor is currently running. */ val isListeningForUdfps = isUdfpsSupported.flatMapLatest { isUdfps -> if (isUdfps) { fingerprintAuthRepository.isRunning } else { flowOf(false) } } }
packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +2 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,7 @@ import com.android.systemui.keyguard.data.repository.KeyguardRepositoryModule; import com.android.systemui.keyguard.domain.interactor.StartKeyguardTransitionModule; import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLogger; import com.android.systemui.keyguard.shared.quickaffordance.KeyguardQuickAffordancesMetricsLoggerImpl; import com.android.systemui.keyguard.ui.transitions.DeviceEntryIconTransitionModule; import com.android.systemui.keyguard.ui.viewmodel.DreamingToLockscreenTransitionViewModel; import com.android.systemui.log.SessionTracker; import com.android.systemui.navigationbar.NavigationModeController; Loading Loading @@ -94,6 +95,7 @@ import kotlinx.coroutines.CoroutineDispatcher; KeyguardStatusViewComponent.class, KeyguardUserSwitcherComponent.class}, includes = { DeviceEntryIconTransitionModule.class, FalsingModule.class, KeyguardDataQuickAffordanceModule.class, KeyguardRepositoryModule.class, Loading