From 4de1c13fe7db50215ab35f6bb33c7d7c83595553 Mon Sep 17 00:00:00 2001 From: Bryce Lee Date: Fri, 22 Apr 2022 14:28:06 -0700 Subject: [PATCH] Tie bouncer over dream state to visibility. This changelist migrates whether the bouncer is showing over dream away from the expansion state to visibility. This allows other cases to be recognized. For example, swiping away the bouncer will affect the visibility but not necessarily the expansion. Test: atest StatusBarKeyguardViewManagerTest Change-Id: Ib140941e72534c75eb3014d64166eca909e96d0e --- .../touch/BouncerSwipeTouchHandler.java | 3 +- .../phone/StatusBarKeyguardViewManager.java | 4 +++ .../touch/BouncerSwipeTouchHandlerTest.java | 2 -- .../StatusBarKeyguardViewManagerTest.java | 28 +++++++++++++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java b/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java index f5575a25aec30..f769a23554099 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java @@ -44,6 +44,7 @@ import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.wm.shell.animation.FlingAnimationUtils; import java.util.Optional; + import javax.inject.Inject; import javax.inject.Named; @@ -153,8 +154,6 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { private void setPanelExpansion(float expansion, float dragDownAmount) { mCurrentExpansion = expansion; - mCentralSurfaces.ifPresent(centralSurfaces -> centralSurfaces.setBouncerShowingOverDream( - mCurrentExpansion != KeyguardBouncer.EXPANSION_HIDDEN)); PanelExpansionChangeEvent event = new PanelExpansionChangeEvent( /* fraction= */ mCurrentExpansion, 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..c2194815b77ad 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -164,6 +164,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb @Override public void onVisibilityChanged(boolean isVisible) { + mCentralSurfaces + .setBouncerShowingOverDream( + isVisible && mDreamOverlayStateController.isOverlayActive()); + if (!isVisible) { mCentralSurfaces.setBouncerHiddenFraction(KeyguardBouncer.EXPANSION_HIDDEN); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java index 442e41c9b8d3d..c3fca29a9883b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java @@ -428,7 +428,6 @@ public class BouncerSwipeTouchHandlerTest extends SysuiTestCase { @Test public void testInformBouncerShowingOnExpand() { swipeToPosition(1f, Direction.UP, 0); - verify(mCentralSurfaces).setBouncerShowingOverDream(true); } /** @@ -441,7 +440,6 @@ public class BouncerSwipeTouchHandlerTest extends SysuiTestCase { Mockito.clearInvocations(mCentralSurfaces); swipeToPosition(0f, Direction.DOWN, 0); - verify(mCentralSurfaces).setBouncerShowingOverDream(false); } 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..a265a63794ec1 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 @@ -61,7 +61,9 @@ import com.google.common.truth.Truth; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import java.util.Optional; @@ -97,6 +99,7 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { @Mock private LatencyTracker mLatencyTracker; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; + private KeyguardBouncer.BouncerExpansionCallback mBouncerExpansionCallback; @Before public void setUp() { @@ -136,6 +139,11 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { mBypassController); when(mKeyguardStateController.isOccluded()).thenReturn(false); mStatusBarKeyguardViewManager.show(null); + ArgumentCaptor callbackArgumentCaptor = + ArgumentCaptor.forClass(KeyguardBouncer.BouncerExpansionCallback.class); + verify(mKeyguardBouncerFactory).create(any(ViewGroup.class), + callbackArgumentCaptor.capture()); + mBouncerExpansionCallback = callbackArgumentCaptor.getValue(); } @Test @@ -417,4 +425,24 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { return new PanelExpansionChangeEvent( fraction, expanded, tracking, /* dragDownPxAmount= */ 0f); } + + @Test + public void testReportBouncerOnDreamWhenVisible() { + mBouncerExpansionCallback.onVisibilityChanged(true); + verify(mCentralSurfaces).setBouncerShowingOverDream(false); + Mockito.clearInvocations(mCentralSurfaces); + when(mDreamOverlayStateController.isOverlayActive()).thenReturn(true); + mBouncerExpansionCallback.onVisibilityChanged(true); + verify(mCentralSurfaces).setBouncerShowingOverDream(true); + } + + @Test + public void testReportBouncerOnDreamWhenNotVisible() { + mBouncerExpansionCallback.onVisibilityChanged(false); + verify(mCentralSurfaces).setBouncerShowingOverDream(false); + Mockito.clearInvocations(mCentralSurfaces); + when(mDreamOverlayStateController.isOverlayActive()).thenReturn(true); + mBouncerExpansionCallback.onVisibilityChanged(false); + verify(mCentralSurfaces).setBouncerShowingOverDream(false); + } }