Merge "Show fingerprint icon when face fails on BiometricPrompt" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
a69ceda9c4
@@ -44,11 +44,17 @@ public class AuthBiometricFaceToFingerprintView extends AuthBiometricFaceView {
|
|||||||
private static final String TAG = "BiometricPrompt/AuthBiometricFaceToFingerprintView";
|
private static final String TAG = "BiometricPrompt/AuthBiometricFaceToFingerprintView";
|
||||||
|
|
||||||
protected static class UdfpsIconController extends IconController {
|
protected static class UdfpsIconController extends IconController {
|
||||||
|
@BiometricState private int mIconState = STATE_IDLE;
|
||||||
|
|
||||||
protected UdfpsIconController(
|
protected UdfpsIconController(
|
||||||
@NonNull Context context, @NonNull ImageView iconView, @NonNull TextView textView) {
|
@NonNull Context context, @NonNull ImageView iconView, @NonNull TextView textView) {
|
||||||
super(context, iconView, textView);
|
super(context, iconView, textView);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void updateState(@BiometricState int newState) {
|
||||||
|
updateState(mIconState, newState);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void updateState(int lastState, int newState) {
|
protected void updateState(int lastState, int newState) {
|
||||||
final boolean lastStateIsErrorIcon =
|
final boolean lastStateIsErrorIcon =
|
||||||
@@ -86,6 +92,7 @@ public class AuthBiometricFaceToFingerprintView extends AuthBiometricFaceView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mState = newState;
|
mState = newState;
|
||||||
|
mIconState = newState;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,11 +198,11 @@ public class AuthBiometricFaceToFingerprintView extends AuthBiometricFaceView {
|
|||||||
|
|
||||||
// Deactivate the face icon controller so it stops drawing to the view
|
// Deactivate the face icon controller so it stops drawing to the view
|
||||||
mFaceIconController.deactivate();
|
mFaceIconController.deactivate();
|
||||||
// Then, activate this icon controller. We need to start in the "error" state
|
// Then, activate this icon controller. We need to start in the "idle" state
|
||||||
mUdfpsIconController.updateState(mState, newState);
|
mUdfpsIconController.updateState(STATE_IDLE);
|
||||||
}
|
}
|
||||||
} else { // Fingerprint
|
} else { // Fingerprint
|
||||||
mUdfpsIconController.updateState(mState, newState);
|
mUdfpsIconController.updateState(newState);
|
||||||
}
|
}
|
||||||
|
|
||||||
super.updateState(newState);
|
super.updateState(newState);
|
||||||
|
|||||||
@@ -101,7 +101,7 @@ public class AuthBiometricFaceToFingerprintViewTest extends SysuiTestCase {
|
|||||||
mFaceToFpView.onDialogAnimatedIn();
|
mFaceToFpView.onDialogAnimatedIn();
|
||||||
verify(mFaceToFpView.mFaceIconController)
|
verify(mFaceToFpView.mFaceIconController)
|
||||||
.updateState(anyInt(), eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING));
|
.updateState(anyInt(), eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING));
|
||||||
verify(mFaceToFpView.mUdfpsIconController, never()).updateState(anyInt(), anyInt());
|
verify(mFaceToFpView.mUdfpsIconController, never()).updateState(anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -109,13 +109,13 @@ public class AuthBiometricFaceToFingerprintViewTest extends SysuiTestCase {
|
|||||||
mFaceToFpView.onDialogAnimatedIn();
|
mFaceToFpView.onDialogAnimatedIn();
|
||||||
verify(mFaceToFpView.mFaceIconController)
|
verify(mFaceToFpView.mFaceIconController)
|
||||||
.updateState(anyInt(), eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING));
|
.updateState(anyInt(), eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING));
|
||||||
verify(mFaceToFpView.mUdfpsIconController, never()).updateState(anyInt(), anyInt());
|
verify(mFaceToFpView.mUdfpsIconController, never()).updateState(anyInt());
|
||||||
|
|
||||||
mFaceToFpView.updateState(AuthBiometricFaceView.STATE_AUTHENTICATED);
|
mFaceToFpView.updateState(AuthBiometricFaceView.STATE_AUTHENTICATED);
|
||||||
verify(mFaceToFpView.mFaceIconController).updateState(
|
verify(mFaceToFpView.mFaceIconController).updateState(
|
||||||
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING),
|
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING),
|
||||||
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATED));
|
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATED));
|
||||||
verify(mFaceToFpView.mUdfpsIconController, never()).updateState(anyInt(), anyInt());
|
verify(mFaceToFpView.mUdfpsIconController, never()).updateState(anyInt());
|
||||||
|
|
||||||
assertEquals(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATED, mFaceToFpView.mState);
|
assertEquals(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATED, mFaceToFpView.mState);
|
||||||
}
|
}
|
||||||
@@ -130,14 +130,12 @@ public class AuthBiometricFaceToFingerprintViewTest extends SysuiTestCase {
|
|||||||
|
|
||||||
verify(mFaceToFpView.mFaceIconController).deactivate();
|
verify(mFaceToFpView.mFaceIconController).deactivate();
|
||||||
verify(mFaceToFpView.mUdfpsIconController).updateState(
|
verify(mFaceToFpView.mUdfpsIconController).updateState(
|
||||||
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING),
|
eq(AuthBiometricFaceToFingerprintView.STATE_IDLE));
|
||||||
eq(AuthBiometricFaceToFingerprintView.STATE_ERROR));
|
|
||||||
verify(mConfirmButton).setVisibility(eq(View.GONE));
|
verify(mConfirmButton).setVisibility(eq(View.GONE));
|
||||||
|
|
||||||
mFaceToFpView.updateState(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING);
|
mFaceToFpView.updateState(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING);
|
||||||
|
|
||||||
verify(mFaceToFpView.mUdfpsIconController).updateState(
|
verify(mFaceToFpView.mUdfpsIconController).updateState(
|
||||||
eq(AuthBiometricFaceToFingerprintView.STATE_ERROR),
|
|
||||||
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING));
|
eq(AuthBiometricFaceToFingerprintView.STATE_AUTHENTICATING));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user