Fix issues with unlocking during a swipe on the lockscreen.

This could cause keyguard to remain visible if a biometric
auth event arrived while swiping on the lockscreen.

Fixes: 265661878
Test: while a bouncer swipe is in progress, finger/face auth
Test: while swiping away an unlocked lockscreen, fingerprint auth
Change-Id: Ia06f48f092414360c3c9d3cb16cb8fb42591f5b8
This commit is contained in:
Josh Tsuji
2023-01-18 16:42:12 -05:00
parent 76c74ee9f2
commit 09114c3e6e
2 changed files with 6 additions and 0 deletions

View File

@@ -2287,6 +2287,10 @@ public class KeyguardViewMediator implements CoreStartable, Dumpable,
}
if (!mKeyguardDonePending && mHideAnimationRun && !mHideAnimationRunning) {
handleKeyguardDone();
} else if (mSurfaceBehindRemoteAnimationRunning) {
// We're already running the keyguard exit animation, likely due to an in-progress swipe
// to unlock.
exitKeyguardAndFinishSurfaceBehindRemoteAnimation(false /* cancelled */);
} else if (!mHideAnimationRun) {
if (DEBUG) Log.d(TAG, "tryKeyguardDone: starting pre-hide animation");
mHideAnimationRun = true;

View File

@@ -1414,6 +1414,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
// Things that mean we're not swiping to dismiss the keyguard, and should ignore this
// expansion:
// - Keyguard isn't even visible.
// - We're swiping on the bouncer, not the lockscreen.
// - Keyguard is occluded. Expansion changes here are the shade being expanded over the
// occluding activity.
// - Keyguard is visible, but can't be dismissed (swiping up will show PIN/password prompt).
@@ -1423,6 +1424,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
// - QS is expanded and we're swiping - swiping up now will hide QS, not dismiss the
// keyguard.
if (!isKeyguardShowing()
|| mStatusBarKeyguardViewManager.primaryBouncerIsOrWillBeShowing()
|| isOccluded()
|| !mKeyguardStateController.canDismissLockScreen()
|| mKeyguardViewMediator.isAnySimPinSecure()