Fix bouncer swipe touch handler

This fix takes the direction of the swipe into account, depending on if
the bouncer is showing or not. This prevents downward swipes from
showing the bouncer.

Test: atest BouncerSwipeTouchHandlerTest
Test: manually on device
Bug: 224996347
Change-Id: I33a7bbd0ca466bdb3412103454d7a2ad57cdcd09
This commit is contained in:
Lucas Silva
2022-03-24 15:14:16 -04:00
parent 97a0b1d50e
commit d0c700fc61
2 changed files with 6 additions and 4 deletions

View File

@@ -116,8 +116,10 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
// bouncer. As that view's expansion shrinks, the bouncer appears. The bouncer
// is fully hidden at full expansion (1) and fully visible when fully collapsed
// (0).
final float screenTravelPercentage =
Math.abs((e1.getY() - e2.getY()) / mCentralSurfaces.getDisplayHeight());
final float dy = mBouncerInitiallyShowing ? e2.getY() - e1.getY()
: e1.getY() - e2.getY();
final float screenTravelPercentage = Math.max(0,
dy / mCentralSurfaces.getDisplayHeight());
setPanelExpansion(mBouncerInitiallyShowing
? screenTravelPercentage : 1 - screenTravelPercentage);
return true;

View File

@@ -234,9 +234,9 @@ public class BouncerSwipeTouchHandlerTest extends SysuiTestCase {
final float distanceY = SCREEN_HEIGHT_PX * scrollAmount;
final MotionEvent event1 = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE,
0, SCREEN_HEIGHT_PX, 0);
final MotionEvent event2 = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE,
0, SCREEN_HEIGHT_PX - distanceY, 0);
final MotionEvent event2 = MotionEvent.obtain(0, 0, MotionEvent.ACTION_MOVE,
0, SCREEN_HEIGHT_PX, 0);
assertThat(gestureListenerCaptor.getValue().onScroll(event1, event2, 0, distanceY))
.isTrue();