From 09114c3e6e32d671fba5fa4ed8d2f21b5749754d Mon Sep 17 00:00:00 2001 From: Josh Tsuji Date: Wed, 18 Jan 2023 16:42:12 -0500 Subject: [PATCH] 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 --- .../com/android/systemui/keyguard/KeyguardViewMediator.java | 4 ++++ .../android/systemui/statusbar/phone/CentralSurfacesImpl.java | 2 ++ 2 files changed, 6 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java index fe84ac5a32bce..2403d79db8549 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java @@ -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; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index 8110b4747b639..adf7cc0731fa1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -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()