Commit 2e586a87 authored by tdresser@chromium.org's avatar tdresser@chromium.org

Prevent fling gesture if most recent touch move was consumed.

BUG=361685
TEST=TouchDispositionFilterTest.ConsumedScrollUpdateMakesFlingScrollEnd

Review URL: https://codereview.chromium.org/231333003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@262823 0039d316-1c4b-4281-b951-d872f2087c98
parent 21b534dd
......@@ -81,7 +81,9 @@ DispositionHandlingInfo GetDispositionHandlingInfo(EventType type) {
case ET_GESTURE_SCROLL_END:
return Info(RT_NONE, ET_GESTURE_SCROLL_BEGIN);
case ET_SCROLL_FLING_START:
return Info(RT_NONE, ET_GESTURE_SCROLL_BEGIN);
// We rely on |EndScrollGestureIfNecessary| to end the scroll if the fling
// start is prevented.
return Info(RT_NONE, ET_GESTURE_SCROLL_UPDATE);
case ET_SCROLL_FLING_CANCEL:
return Info(RT_NONE, ET_SCROLL_FLING_START);
case ET_GESTURE_PINCH_BEGIN:
......
......@@ -229,6 +229,11 @@ TEST_F(TouchDispositionGestureFilterTest, BasicGesturesConsumed) {
SendTouchConsumedAck();
EXPECT_FALSE(GesturesSent());
PushGesture(ET_GESTURE_SCROLL_UPDATE);
MoveTouchPoint(0, 2, 2);
SendTouchConsumedAck();
EXPECT_FALSE(GesturesSent());
PushGesture(ET_SCROLL_FLING_START);
PushGesture(ET_SCROLL_FLING_CANCEL);
PushGesture(ET_GESTURE_END);
......@@ -861,4 +866,37 @@ TEST_F(TouchDispositionGestureFilterTest, TapAndScrollCancelledOnTouchCancel) {
GetAndResetSentGestures()));
}
TEST_F(TouchDispositionGestureFilterTest,
ConsumedScrollUpdateMakesFlingScrollEnd) {
// A consumed touch's gesture should not be sent.
PushGesture(ET_GESTURE_BEGIN);
PushGesture(ET_GESTURE_SCROLL_BEGIN);
PressTouchPoint(1, 1);
SendTouchNotConsumedAck();
EXPECT_TRUE(
GesturesMatch(Gestures(ET_GESTURE_BEGIN, ET_GESTURE_SCROLL_BEGIN),
GetAndResetSentGestures()));
PushGesture(ET_GESTURE_SCROLL_UPDATE);
MoveTouchPoint(0, 2, 2);
SendTouchConsumedAck();
EXPECT_FALSE(GesturesSent());
PushGesture(ET_SCROLL_FLING_START);
PushGesture(ET_SCROLL_FLING_CANCEL);
PushGesture(ET_GESTURE_END);
ReleaseTouchPoint();
SendTouchNotConsumedAck();
EXPECT_TRUE(GesturesMatch(Gestures(ET_GESTURE_END, ET_GESTURE_SCROLL_END),
GetAndResetSentGestures()));
PushGesture(ET_GESTURE_BEGIN);
PushGesture(ET_GESTURE_SCROLL_BEGIN);
PressTouchPoint(1, 1);
SendTouchNotConsumedAck();
EXPECT_TRUE(GesturesMatch(Gestures(ET_GESTURE_BEGIN, ET_GESTURE_SCROLL_BEGIN),
GetAndResetSentGestures()));
}
} // namespace ui
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment