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

Commit 2f0d4331 authored by Ming-Shin Lu's avatar Ming-Shin Lu Committed by Automerger Merge Worker
Browse files

Merge "Request hiding IME before starting dismiss biometric UI animation" into...

Merge "Request hiding IME before starting dismiss biometric UI animation" into tm-qpr-dev am: 52244d06

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/20080175



Change-Id: I50a1db7377e91547e9340e3609fa91a309151023
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 0025c248 52244d06
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -762,6 +762,12 @@ public class AuthContainerView extends LinearLayout
        }
        mContainerState = STATE_ANIMATING_OUT;

        // Request hiding soft-keyboard before animating away credential UI, in case IME insets
        // animation get delayed by dismissing animation.
        if (isAttachedToWindow() && getRootWindowInsets().isVisible(WindowInsets.Type.ime())) {
            getWindowInsetsController().hide(WindowInsets.Type.ime());
        }

        if (sendReason) {
            mPendingCallbackReason = reason;
        } else {
+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
@@ -158,6 +160,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()