Merge "Fix UDFPS icon of Biometric Prompt has no response after rotation" into tm-qpr-dev
This commit is contained in:
@@ -127,7 +127,7 @@ public class AuthContainerView extends LinearLayout
|
|||||||
private final ScrollView mBiometricScrollView;
|
private final ScrollView mBiometricScrollView;
|
||||||
private final View mPanelView;
|
private final View mPanelView;
|
||||||
private final float mTranslationY;
|
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 Set<Integer> mFailedModalities = new HashSet<Integer>();
|
||||||
private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
|
private final OnBackInvokedCallback mBackCallback = this::onBackInvoked;
|
||||||
|
|
||||||
@@ -657,11 +657,25 @@ public class AuthContainerView extends LinearLayout
|
|||||||
wm.addView(this, getLayoutParams(mWindowToken, mConfig.mPromptInfo.getTitle()));
|
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
|
@Override
|
||||||
public void dismissWithoutCallback(boolean animate) {
|
public void dismissWithoutCallback(boolean animate) {
|
||||||
if (animate) {
|
if (animate) {
|
||||||
animateAway(false /* sendReason */, 0 /* reason */);
|
animateAway(false /* sendReason */, 0 /* reason */);
|
||||||
} else {
|
} else {
|
||||||
|
forceExecuteAnimatedIn();
|
||||||
removeWindowIfAttached();
|
removeWindowIfAttached();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import org.mockito.Mockito.anyInt
|
|||||||
import org.mockito.Mockito.anyLong
|
import org.mockito.Mockito.anyLong
|
||||||
import org.mockito.Mockito.eq
|
import org.mockito.Mockito.eq
|
||||||
import org.mockito.Mockito.never
|
import org.mockito.Mockito.never
|
||||||
|
import org.mockito.Mockito.times
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.`when` as whenever
|
import org.mockito.Mockito.`when` as whenever
|
||||||
import org.mockito.junit.MockitoJUnit
|
import org.mockito.junit.MockitoJUnit
|
||||||
@@ -122,6 +123,21 @@ class AuthContainerViewTest : SysuiTestCase() {
|
|||||||
verify(callback).onDialogAnimatedIn(authContainer?.requestId ?: 0L)
|
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
|
@Test
|
||||||
fun testDismissesOnFocusLoss() {
|
fun testDismissesOnFocusLoss() {
|
||||||
val container = initializeFingerprintContainer()
|
val container = initializeFingerprintContainer()
|
||||||
|
|||||||
Reference in New Issue
Block a user