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

Commit ce555411 authored by Austin Delgado's avatar Austin Delgado
Browse files

Allow UDFPS touches when keyguard transitions to dozing

Bug: 391771923
Test: DeviceEntryUdfpsTouchOverlayViewModel
Flag: NONE exempt
Change-Id: I92527034418e86281a09adf3fc73fe05a9603313
parent 9df81ff8
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepositor
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.Flags
import com.android.systemui.flags.fakeFeatureFlagsClassic
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.ui.viewmodel.fakeDeviceEntryIconViewModelTransition
import com.android.systemui.kosmos.testScope
import com.android.systemui.statusbar.phone.SystemUIDialogManager
@@ -48,6 +50,7 @@ class DeviceEntryUdfpsTouchOverlayViewModelTest : SysuiTestCase() {
        }
    private val systemUIDialogManager = kosmos.systemUIDialogManager
    private val bouncerRepository = kosmos.fakeKeyguardBouncerRepository
    private val keyguardTransitionRepository = kosmos.fakeKeyguardTransitionRepository
    private val testScope = kosmos.testScope
    private val deviceEntryIconViewModelTransition = kosmos.fakeDeviceEntryIconViewModelTransition
    private val underTest = kosmos.deviceEntryUdfpsTouchOverlayViewModel
@@ -113,4 +116,19 @@ class DeviceEntryUdfpsTouchOverlayViewModelTest : SysuiTestCase() {
            bouncerRepository.setAlternateVisible(true)
            assertThat(shouldHandleTouches).isTrue()
        }

    @Test
    fun transitioningToDozing_shouldHandleTouchesTrue() =
        testScope.runTest {
            val shouldHandleTouches by collectLastValue(underTest.shouldHandleTouches)

            keyguardTransitionRepository.sendTransitionSteps(
                from = KeyguardState.LOCKSCREEN,
                to = KeyguardState.DOZING,
                testScope = testScope,
            )
            runCurrent()

            assertThat(shouldHandleTouches).isTrue()
        }
}
+9 −3
Original line number Diff line number Diff line
@@ -49,15 +49,21 @@ constructor(
                deviceEntryViewAlphaIsMostlyVisible,
                alternateBouncerInteractor.isVisible,
                systemUIDialogManager.hideAffordancesRequest,
            ) { canTouchDeviceEntryViewAlpha, alternateBouncerVisible, hideAffordancesRequest ->
                deviceEntryIconViewModel.transitioningToDozing,
            ) {
                canTouchDeviceEntryViewAlpha,
                alternateBouncerVisible,
                hideAffordancesRequest,
                toDozing ->
                val shouldHandleTouches =
                    (canTouchDeviceEntryViewAlpha && !hideAffordancesRequest) ||
                        alternateBouncerVisible
                        alternateBouncerVisible ||
                        toDozing
                logger.logDeviceEntryUdfpsTouchOverlayShouldHandleTouches(
                    shouldHandleTouches,
                    canTouchDeviceEntryViewAlpha,
                    alternateBouncerVisible,
                    hideAffordancesRequest
                    hideAffordancesRequest,
                )
                shouldHandleTouches
            }
+5 −0
Original line number Diff line number Diff line
@@ -248,6 +248,11 @@ constructor(

    val isLongPressEnabled: Flow<Boolean> = isInteractive

    val transitioningToDozing: Flow<Boolean> =
        transitionInteractor.startedKeyguardTransitionStep.map { keyguardStep ->
            keyguardStep.to == KeyguardState.DOZING
        }

    val deviceDidNotEnterFromDeviceEntryIcon =
        deviceEntrySourceInteractor.attemptEnterDeviceFromDeviceEntryIcon
            .map { keyguardInteractor.isKeyguardDismissible.value }