Merge "Immediately trigger face-auth on udfps bouncer" into sc-dev

This commit is contained in:
Beverly Tai
2021-05-14 13:13:32 +00:00
committed by Android (Google) Code Review
4 changed files with 23 additions and 6 deletions

View File

@@ -2199,7 +2199,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
&& !mSwitchingUser && !isFaceDisabled(user) && becauseCannotSkipBouncer
&& !mKeyguardGoingAway && mBiometricEnabledForUser.get(user) && !mLockIconPressed
&& strongAuthAllowsScanning && mIsPrimaryUser
&& !mSecureCameraLaunched;
&& (!mSecureCameraLaunched || mOccludingAppRequestingFace);
// Aggregate relevant fields for debug logging.
if (DEBUG_FACE || DEBUG_SPEW) {

View File

@@ -148,7 +148,7 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
/**
* Animates in the bg protection circle behind the fp icon to highlight the icon.
*/
void animateUdfpsBouncer() {
void animateUdfpsBouncer(Runnable onEndAnimation) {
if (mBgProtection.getVisibility() == View.VISIBLE && mBgProtection.getAlpha() == 1f) {
// already fully highlighted, don't re-animate
return;
@@ -186,6 +186,14 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
ObjectAnimator.ofFloat(mBgProtection, View.SCALE_X, 0f, 1f),
ObjectAnimator.ofFloat(mBgProtection, View.SCALE_Y, 0f, 1f),
fpIconAnim);
mAnimatorSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
if (onEndAnimation != null) {
onEndAnimation.run();
}
}
});
mAnimatorSet.start();
}

View File

@@ -129,6 +129,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
mStatusBarStateController.removeCallback(mStateListener);
mKeyguardViewManager.setAlternateAuthInterceptor(null);
mTransitioningFromHome = false;
mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
if (mCancelRunnable != null) {
mCancelRunnable.run();
@@ -165,11 +166,13 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
mShowingUdfpsBouncer = show;
updatePauseAuth();
if (mShowingUdfpsBouncer) {
mView.animateUdfpsBouncer();
mView.animateUdfpsBouncer(() ->
mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(true));
mView.announceForAccessibility(mView.getContext().getString(
R.string.accessibility_fingerprint_bouncer));
} else {
mView.animateAwayUdfpsBouncer(null);
mKeyguardUpdateMonitor.requestFaceAuthOnOccludingApp(false);
}
return true;
}

View File

@@ -114,7 +114,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
public static final int MODE_ONLY_WAKE = 4;
/**
* Mode in which fingerprint unlocks the device.
* Mode in which fingerprint unlocks the device or passive auth (ie face auth) unlocks the
* device while being requested when keyguard is occluded.
*/
public static final int MODE_UNLOCK_COLLAPSING = 5;
@@ -355,8 +356,10 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
Optional.ofNullable(BiometricUiEvent.SUCCESS_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
.ifPresent(UI_EVENT_LOGGER::log);
boolean unlockAllowed = mKeyguardBypassController.onBiometricAuthenticated(
biometricSourceType, isStrongBiometric);
boolean unlockAllowed =
mKeyguardStateController.isOccluded()
|| mKeyguardBypassController.onBiometricAuthenticated(
biometricSourceType, isStrongBiometric);
if (unlockAllowed) {
mKeyguardViewMediator.userActivity();
startWakeAndUnlock(biometricSourceType, isStrongBiometric);
@@ -581,6 +584,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
if (unlockingAllowed && deviceDreaming) {
return bypass ? MODE_WAKE_AND_UNLOCK_FROM_DREAM : MODE_ONLY_WAKE;
}
if (unlockingAllowed && mKeyguardStateController.isOccluded()) {
return MODE_UNLOCK_COLLAPSING;
}
if (mKeyguardViewController.isShowing()) {
if (mKeyguardViewController.bouncerIsOrWillBeShowing() && unlockingAllowed) {
if (bypass && mKeyguardBypassController.canPlaySubtleWindowAnimations()) {