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
This commit is contained in:
Ming-Shin Lu
2022-10-14 21:13:01 +08:00
parent a918fd1767
commit 68ea9cbb16

View File

@@ -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()