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

Commit 12620257 authored by Vincent Wang's avatar Vincent Wang Committed by Automerger Merge Worker
Browse files

Merge "Fix UDFPS icon of Biometric Prompt has no response after rotation" into...

Merge "Fix UDFPS icon of Biometric Prompt has no response after rotation" into tm-qpr-dev am: d3642c7a am: 7ab591a4

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



Change-Id: I693f98e6aa1fce244fead15c7b6dc71c723da193
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 0fa6e36f 7ab591a4
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -127,7 +127,7 @@ public class AuthContainerView extends LinearLayout
    private final ScrollView mBiometricScrollView;
    private final View mPanelView;
    private final float mTranslationY;
    @ContainerState private int mContainerState = STATE_UNKNOWN;
    @VisibleForTesting @ContainerState int mContainerState = STATE_UNKNOWN;
    private final Set<Integer> mFailedModalities = new HashSet<Integer>();
    private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;

@@ -630,11 +630,25 @@ public class AuthContainerView extends LinearLayout
        wm.addView(this, getLayoutParams(mWindowToken, mConfig.mPromptInfo.getTitle()));
    }

    private void forceExecuteAnimatedIn() {
        if (mContainerState == STATE_ANIMATING_IN) {
            //clear all animators
            if (mCredentialView != null && mCredentialView.isAttachedToWindow()) {
                mCredentialView.animate().cancel();
            }
            mPanelView.animate().cancel();
            mBiometricView.animate().cancel();
            animate().cancel();
            onDialogAnimatedIn();
        }
    }

    @Override
    public void dismissWithoutCallback(boolean animate) {
        if (animate) {
            animateAway(false /* sendReason */, 0 /* reason */);
        } else {
            forceExecuteAnimatedIn();
            removeWindowIfAttached();
        }
    }
+16 −0
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ import org.mockito.Mockito.anyInt
import org.mockito.Mockito.anyLong
import org.mockito.Mockito.eq
import org.mockito.Mockito.never
import org.mockito.Mockito.times
import org.mockito.Mockito.verify
import org.mockito.Mockito.`when` as whenever
import org.mockito.junit.MockitoJUnit
@@ -124,6 +125,21 @@ class AuthContainerViewTest : SysuiTestCase() {
        verify(callback).onDialogAnimatedIn(authContainer?.requestId ?: 0L)
    }

    @Test
    fun testDismissBeforeIntroEnd() {
        val container = initializeFingerprintContainer()
        waitForIdleSync()

        // STATE_ANIMATING_IN = 1
        container?.mContainerState = 1

        container.dismissWithoutCallback(false)

        // the first time is triggered by initializeFingerprintContainer()
        // the second time was triggered by dismissWithoutCallback()
        verify(callback, times(2)).onDialogAnimatedIn(authContainer?.requestId ?: 0L)
    }

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