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

Commit 68ea9cbb authored by Ming-Shin Lu's avatar Ming-Shin Lu
Browse files

Add a unit test to test hiding IME when dismissing biometrics UI

For verifying CL[1] fixed IME flicker issue during biometrics UI
dismissed by focus-lost.

[1]: I541f41832753ea1f4f48f6c4745649606b37d207

Bug: 247705580
Test: atest AuthContainerViewTest#t\
        estDismissesOnFocusLoss_hidesKeyboardWhenVisible
Change-Id: I7622a30778677ed712bbe46d3ea30a0ddb89dfbb
parent a918fd17
Loading
Loading
Loading
Loading
+31 −0
Original line number Diff line number Diff line
@@ -35,6 +35,8 @@ import android.view.WindowInsets
import android.view.WindowManager
import android.widget.ScrollView
import androidx.test.filters.SmallTest
import com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn
import com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn
import com.android.internal.jank.InteractionJankMonitor
import com.android.internal.widget.LockPatternUtils
import com.android.systemui.R
@@ -142,6 +144,35 @@ class AuthContainerViewTest : SysuiTestCase() {
        assertThat(container.parent).isNull()
    }

    @Test
    fun testDismissesOnFocusLoss_hidesKeyboardWhenVisible() {
        val container = initializeFingerprintContainer(
            authenticators = BiometricManager.Authenticators.DEVICE_CREDENTIAL
        )
        waitForIdleSync()

        val requestID = authContainer?.requestId ?: 0L

        // Simulate keyboard was shown on the credential view
        val windowInsetsController = container.windowInsetsController
        spyOn(windowInsetsController)
        spyOn(container.rootWindowInsets)
        doReturn(true).`when`(container.rootWindowInsets).isVisible(WindowInsets.Type.ime())

        container.onWindowFocusChanged(false)
        waitForIdleSync()

        // Expect hiding IME request will be invoked when dismissing the view
        verify(windowInsetsController)?.hide(WindowInsets.Type.ime())

        verify(callback).onDismissed(
            eq(AuthDialogCallback.DISMISSED_USER_CANCELED),
            eq<ByteArray?>(null), /* credentialAttestation */
            eq(requestID)
        )
        assertThat(container.parent).isNull()
    }

    @Test
    fun testActionAuthenticated_sendsDismissedAuthenticated() {
        val container = initializeFingerprintContainer()