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

Commit 7bd097fe authored by Beverly's avatar Beverly
Browse files

Don't animate to AOD variant if udfps isn't enrolled

Test: manually transition from LS => AOD when udfps isn't enrolled
Test: atest UdfpsAccessibilityOverlayViewModelTest
Bug: 325766190
Fixes: 326959500
Flag: ACONFIG com.android.systemui.device_entry_udfps_refactor DEVELOPMENT
Change-Id: I2c5064a382af161a0f3868327fcf28f5f9af4a04
parent be0aeae3
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart

@@ -70,12 +71,13 @@ constructor(

    // While dozing, the display can show the AOD UI; show the AOD udfps when dozing
    private val useAodIconVariant: Flow<Boolean> =
        combine(isShowingAodOrDozing, deviceEntryUdfpsInteractor.isUdfpsSupported) {
                isTransitionToAodOrDozing,
                isUdfps ->
                isTransitionToAodOrDozing && isUdfps
        deviceEntryUdfpsInteractor.isUdfpsEnrolledAndEnabled.flatMapLatest { udfspEnrolled ->
            if (udfspEnrolled) {
                isShowingAodOrDozing.distinctUntilChanged()
            } else {
                flowOf(false)
            }
        }
            .distinctUntilChanged()

    private val padding: Flow<Int> =
        deviceEntryUdfpsInteractor.isUdfpsSupported.flatMapLatest { udfpsSupported ->
+9 −17
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ import com.android.systemui.deviceentry.data.ui.viewmodel.deviceEntryUdfpsAccess
import com.android.systemui.flags.Flags.FULL_SCREEN_USER_SWITCHER
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.deviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeBiometricSettingsRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.TransitionState
@@ -39,6 +39,7 @@ import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlin.test.Test
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.runner.RunWith

@@ -52,7 +53,7 @@ class UdfpsAccessibilityOverlayViewModelTest : SysuiTestCase() {
        }
    private val deviceEntryIconTransition = kosmos.fakeDeviceEntryIconViewModelTransition
    private val testScope = kosmos.testScope
    private val keyguardRepository = kosmos.fakeKeyguardRepository
    private val biometricSettingsRepository = kosmos.fakeBiometricSettingsRepository
    private val accessibilityRepository = kosmos.fakeAccessibilityRepository
    private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
    private val fingerprintPropertyRepository = kosmos.fingerprintPropertyRepository
@@ -85,22 +86,12 @@ class UdfpsAccessibilityOverlayViewModelTest : SysuiTestCase() {
            setupVisibleStateOnLockscreen()

            // AOD
            keyguardTransitionRepository.sendTransitionStep(
                TransitionStep(
            keyguardTransitionRepository.sendTransitionSteps(
                from = KeyguardState.LOCKSCREEN,
                to = KeyguardState.AOD,
                    value = 0f,
                    transitionState = TransitionState.STARTED,
                )
            )
            keyguardTransitionRepository.sendTransitionStep(
                TransitionStep(
                    from = KeyguardState.LOCKSCREEN,
                    to = KeyguardState.AOD,
                    value = 1f,
                    transitionState = TransitionState.FINISHED,
                )
                this,
            )
            runCurrent()
            assertThat(visible).isFalse()
        }
    fun fpNotRunning_overlayNotVisible() =
@@ -129,6 +120,7 @@ class UdfpsAccessibilityOverlayViewModelTest : SysuiTestCase() {

        // Listening for UDFPS
        fingerprintPropertyRepository.supportsUdfps()
        biometricSettingsRepository.setIsFingerprintAuthEnrolledAndEnabled(true)
        deviceEntryFingerprintAuthRepository.setIsRunning(true)
        deviceEntryRepository.setUnlocked(false)