From c43e240f6a255e48e8acd5a6c3d6a02b883f1651 Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Tue, 26 Apr 2022 18:57:49 -0700 Subject: [PATCH] Fix scrims not fading in If the keyguard dismissal animation finishes before the last panel expansion event, the expansion would never be propagated to the bouncer, causing it to be stuck in transit forever. Test: manual with udfps Test: atest StatusBarKeyguardViewManagerTest Fixes: 228048755 Fixes: 230195693 Bug: 228361057 Change-Id: I8167b8ab534f2c7e5676d9f2a9f0199f8b952f83 --- .../statusbar/phone/StatusBarKeyguardViewManager.java | 5 +++++ .../phone/StatusBarKeyguardViewManagerTest.java | 9 +++++++++ 2 files changed, 14 insertions(+) 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 052a4f7c5f7cf..639be24ac46e3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -390,6 +390,11 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb && !mBouncer.isShowing() && !mBouncer.isAnimatingAway()) { mBouncer.show(false /* resetSecuritySelection */, false /* scrimmed */); } + } else if (!mShowing && mBouncer.inTransit()) { + // Keyguard is not visible anymore, but expansion animation was still running. + // We need to keep propagating the expansion state to the bouncer, otherwise it will be + // stuck in transit. + mBouncer.setExpansion(fraction); } else if (mPulsing && fraction == KeyguardBouncer.EXPANSION_VISIBLE) { // Panel expanded while pulsing but didn't translate the bouncer (because we are // unlocked.) Let's simply wake-up to dismiss the lock screen. 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 a94ad0b763aa1..38e018b429856 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 @@ -191,6 +191,15 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { verify(mBouncer).setExpansion(eq(0.5f)); } + @Test + public void onPanelExpansionChanged_propagatesToBouncer_evenAfterHidden() { + mStatusBarKeyguardViewManager.hide(0, 0); + when(mBouncer.inTransit()).thenReturn(true); + + mStatusBarKeyguardViewManager.onPanelExpansionChanged(EXPANSION_EVENT); + verify(mBouncer).setExpansion(eq(EXPANSION_EVENT.getFraction())); + } + @Test public void onPanelExpansionChanged_showsBouncerWhenSwiping() { when(mKeyguardStateController.canDismissLockScreen()).thenReturn(false);