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

Commit faf9f566 authored by Austin Delgado's avatar Austin Delgado Committed by Android (Google) Code Review
Browse files

Merge "Dismiss biometric prompt on shade expansion" into main

parents 9e3f3e8e e2964ce9
Loading
Loading
Loading
Loading
+14 −1
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ open class AuthContainerViewTest : SysuiTestCase() {
    }

    @Test
    fun testDimissOnLock() {
    fun testDismissOnLock() {
        val container = initializeFingerprintContainer(addToView = true)
        assertThat(container.parent).isNotNull()
        val root = container.rootView
@@ -151,6 +151,19 @@ open class AuthContainerViewTest : SysuiTestCase() {
        assertThat(root.isAttachedToWindow).isFalse()
    }

    @Test
    fun testDismissOnShadeDown() {
        val container = initializeFingerprintContainer(addToView = true)
        assertThat(container.parent).isNotNull()
        val root = container.rootView

        container.mBiometricCallback.onUserCanceled()
        waitForIdleSync()

        assertThat(container.parent).isNull()
        assertThat(root.isAttachedToWindow).isFalse()
    }

    @Test
    fun testCredentialPasswordDismissesOnBack() {
        val container = initializeCredentialPasswordContainer(addToView = true)
+10 −1
Original line number Diff line number Diff line
@@ -9,6 +9,8 @@ import com.android.systemui.biometrics.domain.interactor.FakeCredentialInteracto
import com.android.systemui.biometrics.domain.interactor.PromptCredentialInteractor
import com.android.systemui.biometrics.promptInfo
import com.android.systemui.biometrics.shared.model.PromptKind
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.toList
@@ -34,17 +36,22 @@ class CredentialViewModelTest : SysuiTestCase() {

    private lateinit var viewModel: CredentialViewModel

    private val kosmos = testKosmos()

    @Before
    fun setup() {
        viewModel =
            CredentialViewModel(
                mContext,
                PromptCredentialInteractor(dispatcher, promptRepository, credentialInteractor)
                PromptCredentialInteractor(dispatcher, promptRepository, credentialInteractor),
                kosmos.shadeInteractor,
            )
    }

    @Test fun setsPinInputFlags() = setsInputFlags(PromptKind.Pin, expectFlags = true)

    @Test fun setsPasswordInputFlags() = setsInputFlags(PromptKind.Password, expectFlags = false)

    @Test fun setsPatternInputFlags() = setsInputFlags(PromptKind.Pattern, expectFlags = false)

    private fun setsInputFlags(type: PromptKind, expectFlags: Boolean) =
@@ -61,8 +68,10 @@ class CredentialViewModelTest : SysuiTestCase() {
        }

    @Test fun isStealthIgnoredByPin() = isStealthMode(PromptKind.Pin, expectStealth = false)

    @Test
    fun isStealthIgnoredByPassword() = isStealthMode(PromptKind.Password, expectStealth = false)

    @Test fun isStealthUsedByPattern() = isStealthMode(PromptKind.Pattern, expectStealth = true)

    private fun isStealthMode(type: PromptKind, expectStealth: Boolean) =
+8 −0
Original line number Diff line number Diff line
@@ -301,6 +301,14 @@ object BiometricViewBinder {
                        }
                }

                launch {
                    viewModel.isShadeExpanded.collect { isShadeExpanded ->
                        if (isShadeExpanded) {
                            legacyCallback.onUserCanceled()
                        }
                    }
                }

                // set messages
                launch {
                    viewModel.isIndicatorMessageVisible.collect { show ->
+8 −0
Original line number Diff line number Diff line
@@ -145,6 +145,14 @@ object CredentialViewBinder {
                        }
                }

                launch {
                    viewModel.isShadeExpanded.collect { isShadeExpanded ->
                        if (isShadeExpanded) {
                            host.onCredentialAborted()
                        }
                    }
                }

                try {
                    awaitCancellation()
                } catch (_: Throwable) {
+5 −1
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import com.android.systemui.biometrics.domain.model.BiometricPromptRequest
import com.android.systemui.biometrics.shared.model.BiometricUserInfo
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.res.R
import com.android.systemui.shade.domain.interactor.ShadeInteractor
import javax.inject.Inject
import kotlin.reflect.KClass
import kotlinx.coroutines.flow.Flow
@@ -29,8 +30,8 @@ class CredentialViewModel
constructor(
    @Application private val applicationContext: Context,
    private val credentialInteractor: PromptCredentialInteractor,
    private val shadeInteractor: ShadeInteractor,
) {

    /** Top level information about the prompt. */
    val header: Flow<CredentialHeaderViewModel> =
        combine(
@@ -49,6 +50,9 @@ constructor(
            )
        }

    /** Whether the shade is expanded */
    val isShadeExpanded = shadeInteractor.isShadeAnyExpanded

    /** Input flags for text based credential views */
    val inputFlags: Flow<Int?> =
        credentialInteractor.prompt.map {
Loading