From 1de979862bcdd1fe8cb78bc210d4165dd561f45b Mon Sep 17 00:00:00 2001 From: Matt Pietal Date: Tue, 24 May 2022 11:31:46 -0400 Subject: [PATCH] Run cancelAction if bouncer is canceled The cancelAction was never run on non-UDFPS devices when the bouncer was canceled. The check for bouncerIsOrWillBeShowing() will always be true, so move the call to cancel AFTER the bouncer hide() invocation. Fixes: 233741191 Test: atest StatusBarKeyguardViewManagerTest Change-Id: I0ababa6b69cdc3fea558c063a8d3839172470ee1 --- .../phone/StatusBarKeyguardViewManager.java | 2 +- .../phone/StatusBarKeyguardViewManagerTest.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index 124647b81d4a3..61e123a8e42aa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -480,12 +480,12 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb if (mBouncer == null) { return; } + mBouncer.hide(destroyView); if (mShowing) { // If we were showing the bouncer and then aborting, we need to also clear out any // potential actions unless we actually unlocked. cancelPostAuthActions(); } - mBouncer.hide(destroyView); cancelPendingWakeupAction(); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index 38e018b429856..4f2abf263a9b3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -312,12 +312,27 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { mStatusBarKeyguardViewManager.dismissWithAction( action, cancelAction, true /* afterKeyguardGone */); + when(mBouncer.isShowing()).thenReturn(false); mStatusBarKeyguardViewManager.hideBouncer(true); mStatusBarKeyguardViewManager.hide(0, 30); verify(action, never()).onDismiss(); verify(cancelAction).run(); } + @Test + public void testHidingBouncer_cancelsGoneRunnable() { + OnDismissAction action = mock(OnDismissAction.class); + Runnable cancelAction = mock(Runnable.class); + mStatusBarKeyguardViewManager.dismissWithAction( + action, cancelAction, true /* afterKeyguardGone */); + + when(mBouncer.isShowing()).thenReturn(false); + mStatusBarKeyguardViewManager.hideBouncer(true); + + verify(action, never()).onDismiss(); + verify(cancelAction).run(); + } + @Test public void testHiding_doesntCancelWhenShowing() { OnDismissAction action = mock(OnDismissAction.class);