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

Commit 065b3403 authored by Danny Burakov's avatar Danny Burakov Committed by Android (Google) Code Review
Browse files

Merge "[flexiglass] User input on bouncer stops face authentication." into main

parents ad17f8d5 0211493b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.systemui.classifier.FalsingClassifier
import com.android.systemui.classifier.domain.interactor.FalsingInteractor
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.res.R
import com.android.systemui.scene.shared.flag.SceneContainerFlags
@@ -51,6 +52,7 @@ constructor(
    @Application private val applicationContext: Context,
    private val repository: BouncerRepository,
    private val authenticationInteractor: AuthenticationInteractor,
    private val keyguardFaceAuthInteractor: KeyguardFaceAuthInteractor,
    flags: SceneContainerFlags,
    private val falsingInteractor: FalsingInteractor,
    private val powerInteractor: PowerInteractor,
@@ -131,6 +133,7 @@ constructor(
     * user's pocket or by the user's face while holding their device up to their ear.
     */
    fun onIntentionalUserInput() {
        keyguardFaceAuthInteractor.onPrimaryBouncerUserInput()
        powerInteractor.onUserTouch()
        falsingInteractor.updateFalseConfidence(FalsingClassifier.Result.passed(0.6))
    }
+22 −4
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import com.android.systemui.authentication.shared.model.AuthenticationMethodMode
import com.android.systemui.authentication.shared.model.AuthenticationPatternCoordinate
import com.android.systemui.authentication.shared.model.AuthenticationThrottlingModel
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor
import com.android.systemui.res.R
import com.android.systemui.scene.SceneTestUtils
import com.google.common.truth.Truth.assertThat
@@ -37,28 +38,38 @@ import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations

@OptIn(ExperimentalCoroutinesApi::class)
@SmallTest
@RunWith(AndroidJUnit4::class)
class BouncerInteractorTest : SysuiTestCase() {

    @Mock private lateinit var keyguardFaceAuthInteractor: KeyguardFaceAuthInteractor

    private val utils = SceneTestUtils(this)
    private val testScope = utils.testScope
    private val authenticationInteractor = utils.authenticationInteractor()
    private val underTest =
        utils.bouncerInteractor(
            authenticationInteractor = authenticationInteractor,
        )

    private lateinit var underTest: BouncerInteractor

    @Before
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        overrideResource(R.string.keyguard_enter_your_pin, MESSAGE_ENTER_YOUR_PIN)
        overrideResource(R.string.keyguard_enter_your_password, MESSAGE_ENTER_YOUR_PASSWORD)
        overrideResource(R.string.keyguard_enter_your_pattern, MESSAGE_ENTER_YOUR_PATTERN)
        overrideResource(R.string.kg_wrong_pin, MESSAGE_WRONG_PIN)
        overrideResource(R.string.kg_wrong_password, MESSAGE_WRONG_PASSWORD)
        overrideResource(R.string.kg_wrong_pattern, MESSAGE_WRONG_PATTERN)

        underTest =
            utils.bouncerInteractor(
                authenticationInteractor = authenticationInteractor,
                keyguardFaceAuthInteractor = keyguardFaceAuthInteractor,
            )
    }

    @Test
@@ -325,6 +336,13 @@ class BouncerInteractorTest : SysuiTestCase() {
            assertThat(utils.powerRepository.userTouchRegistered).isTrue()
        }

    @Test
    fun intentionalUserInputEvent_notifiesFaceAuthInteractor() =
        testScope.runTest {
            underTest.onIntentionalUserInput()
            verify(keyguardFaceAuthInteractor).onPrimaryBouncerUserInput()
        }

    private fun assertTryAgainMessage(
        message: String?,
        time: Int,
+3 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.FakeTrustRepository
import com.android.systemui.keyguard.data.repository.KeyguardRepository
import com.android.systemui.keyguard.data.repository.TrustRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardFaceAuthInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.testDispatcher
@@ -258,12 +259,14 @@ class SceneTestUtils(

    fun bouncerInteractor(
        authenticationInteractor: AuthenticationInteractor,
        keyguardFaceAuthInteractor: KeyguardFaceAuthInteractor = mock(),
    ): BouncerInteractor {
        return BouncerInteractor(
            applicationScope = applicationScope(),
            applicationContext = context,
            repository = bouncerRepository,
            authenticationInteractor = authenticationInteractor,
            keyguardFaceAuthInteractor = keyguardFaceAuthInteractor,
            flags = sceneContainerFlags,
            falsingInteractor = falsingInteractor(),
            powerInteractor = powerInteractor(),