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

Commit bee318e3 authored by Bill Lin's avatar Bill Lin Committed by Android (Google) Code Review
Browse files

Merge "Dismiss BiometricPrompt if window focus is lost" into tm-dev

parents 2685de98 f112d19f
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -405,6 +405,15 @@ public class AuthContainerView extends LinearLayout
        maybeUpdatePositionForUdfps(true /* invalidate */);
    }

    @Override
    public void onWindowFocusChanged(boolean hasWindowFocus) {
        super.onWindowFocusChanged(hasWindowFocus);
        if (!hasWindowFocus) {
            Log.v(TAG, "Lost window focus, dismissing the dialog");
            animateAway(AuthDialogCallback.DISMISSED_USER_CANCELED);
        }
    }

    @Override
    public void onAttachedToWindow() {
        super.onAttachedToWindow();
@@ -720,7 +729,7 @@ public class AuthContainerView extends LinearLayout
        final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.TYPE_STATUS_BAR_SUB_PANEL,
                WindowManager.LayoutParams.TYPE_STATUS_BAR_ADDITIONAL,
                windowFlags,
                PixelFormat.TRANSLUCENT);
        lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
+17 −0
Original line number Diff line number Diff line
@@ -105,6 +105,23 @@ class AuthContainerViewTest : SysuiTestCase() {
        verify(callback).onDialogAnimatedIn()
    }

    @Test
    fun testDismissesOnFocusLoss() {
        val container = initializeContainer()
        waitForIdleSync()

        verify(callback).onDialogAnimatedIn()

        container.onWindowFocusChanged(false)
        waitForIdleSync()

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

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