Chromium Code Reviews| Index: content/browser/renderer_host/input/touch_action_filter.cc |
| diff --git a/content/browser/renderer_host/input/touch_action_filter.cc b/content/browser/renderer_host/input/touch_action_filter.cc |
| index e8f23354bd6a27e205fc3d3cad77030a70268ff8..25eef984c91b792bb122d6a74f06971df5fee8bf 100644 |
| --- a/content/browser/renderer_host/input/touch_action_filter.cc |
| +++ b/content/browser/renderer_host/input/touch_action_filter.cc |
| @@ -44,7 +44,18 @@ bool TouchActionFilter::FilterGestureEvent(WebGestureEvent* gesture_event) { |
| switch (gesture_event->type) { |
| case WebInputEvent::GestureScrollBegin: |
| DCHECK(!drop_scroll_gesture_events_); |
| + DCHECK(!drop_pinch_gesture_events_); |
| drop_scroll_gesture_events_ = ShouldSuppressScroll(*gesture_event); |
| + drop_pinch_gesture_events_ = |
| + (allowed_touch_action_ & TOUCH_ACTION_PINCH_ZOOM) == 0; |
| + |
| + // if there are two or more pointers then ensure that we allow panning |
|
Rick Byers
2016/09/14 15:47:51
nit: wouldn't this make more sense in ShouldSuppre
dtapuska
2016/09/21 19:29:37
Done.
|
| + // if pinch-zoom is allowed. |
|
Rick Byers
2016/09/14 15:47:51
You were going to file a bug to track the subtle b
dtapuska
2016/09/21 19:29:37
Done.
|
| + if (!drop_pinch_gesture_events_ && drop_scroll_gesture_events_ && |
| + gesture_event->data.scrollBegin.pointerCount >= 2) { |
| + drop_scroll_gesture_events_ = false; |
| + } |
| + |
| return drop_scroll_gesture_events_; |
| case WebInputEvent::GestureScrollUpdate: |
| @@ -87,17 +98,6 @@ bool TouchActionFilter::FilterGestureEvent(WebGestureEvent* gesture_event) { |
| return FilterScrollEndingGesture(); |
| case WebInputEvent::GesturePinchBegin: |
| - DCHECK(!drop_pinch_gesture_events_); |
| - if (allowed_touch_action_ & TOUCH_ACTION_PINCH_ZOOM) { |
| - // Pinch events are always bracketed by scroll events, and the W3C |
| - // standard touch-action provides no way to disable scrolling without |
| - // also disabling pinching (validated by the IPC ENUM traits). |
| - DCHECK(allowed_touch_action_ == TOUCH_ACTION_AUTO || |
| - allowed_touch_action_ == TOUCH_ACTION_MANIPULATION); |
| - DCHECK(!drop_scroll_gesture_events_); |
| - } else { |
| - drop_pinch_gesture_events_ = true; |
| - } |
| return drop_pinch_gesture_events_; |
| case WebInputEvent::GesturePinchUpdate: |
| @@ -108,7 +108,6 @@ bool TouchActionFilter::FilterGestureEvent(WebGestureEvent* gesture_event) { |
| drop_pinch_gesture_events_ = false; |
| return true; |
| } |
| - DCHECK(!drop_scroll_gesture_events_); |
| break; |
| // The double tap gesture is a tap ending event. If a double tap gesture is |
| @@ -188,6 +187,7 @@ void TouchActionFilter::ResetTouchAction() { |
| bool TouchActionFilter::ShouldSuppressScroll( |
| const blink::WebGestureEvent& gesture_event) { |
| DCHECK_EQ(gesture_event.type, WebInputEvent::GestureScrollBegin); |
| + LOG(ERROR) << "Got scroll begin"; |
|
Rick Byers
2016/09/14 15:47:50
remove
dtapuska
2016/09/21 19:29:37
Done.
|
| if ((allowed_touch_action_ & TOUCH_ACTION_PAN) == TOUCH_ACTION_PAN) |
| // All possible panning is enabled. |
| return false; |