| Index: content/browser/renderer_host/input/touch_event_queue.cc
|
| diff --git a/content/browser/renderer_host/input/touch_event_queue.cc b/content/browser/renderer_host/input/touch_event_queue.cc
|
| index db4fa9117906215b361ca482cdc7bfbd12cabd12..bbac01c3ebff51081f112419068c5525a4bad5cf 100644
|
| --- a/content/browser/renderer_host/input/touch_event_queue.cc
|
| +++ b/content/browser/renderer_host/input/touch_event_queue.cc
|
| @@ -349,8 +349,7 @@
|
| send_touch_events_async_(false),
|
| needs_async_touchmove_for_outer_slop_region_(false),
|
| last_sent_touch_timestamp_sec_(0),
|
| - touch_scrolling_mode_(config.touch_scrolling_mode),
|
| - seen_scroll_update_this_sequence_(false) {
|
| + touch_scrolling_mode_(config.touch_scrolling_mode) {
|
| DCHECK(client);
|
| if (ack_timeout_enabled_) {
|
| timeout_handler_.reset(
|
| @@ -535,37 +534,31 @@
|
|
|
| void TouchEventQueue::OnGestureScrollEvent(
|
| const GestureEventWithLatencyInfo& gesture_event) {
|
| - if (gesture_event.event.type == blink::WebInputEvent::GestureScrollBegin) {
|
| - seen_scroll_update_this_sequence_ = false;
|
| -
|
| + if (gesture_event.event.type != blink::WebInputEvent::GestureScrollBegin)
|
| + return;
|
| +
|
| + if (touch_filtering_state_ != DROP_ALL_TOUCHES &&
|
| + touch_filtering_state_ != DROP_TOUCHES_IN_SEQUENCE) {
|
| + DCHECK(!touchmove_slop_suppressor_->suppressing_touchmoves())
|
| + << "The renderer should be offered a touchmove before scrolling begins";
|
| + }
|
| +
|
| + if (touch_scrolling_mode_ == TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE) {
|
| if (touch_filtering_state_ != DROP_ALL_TOUCHES &&
|
| touch_filtering_state_ != DROP_TOUCHES_IN_SEQUENCE) {
|
| - DCHECK(!touchmove_slop_suppressor_->suppressing_touchmoves())
|
| - << "The renderer should be offered a touchmove before scrolling "
|
| - "begins";
|
| - }
|
| -
|
| - if (touch_scrolling_mode_ == TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE &&
|
| - touch_filtering_state_ != DROP_ALL_TOUCHES &&
|
| - touch_filtering_state_ != DROP_TOUCHES_IN_SEQUENCE &&
|
| - (touch_ack_states_.empty() ||
|
| - AllTouchAckStatesHaveState(
|
| - INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS))) {
|
| // If no touch points have a consumer, prevent all subsequent touch events
|
| // received during the scroll from reaching the renderer. This ensures
|
| // that the first touchstart the renderer sees in any given sequence can
|
| // always be preventDefault'ed (cancelable == true).
|
| // TODO(jdduke): Revisit if touchstarts during scroll are made cancelable.
|
| - touch_filtering_state_ = DROP_TOUCHES_IN_SEQUENCE;
|
| - }
|
| - return;
|
| - }
|
| -
|
| - if (gesture_event.event.type != blink::WebInputEvent::GestureScrollUpdate ||
|
| - seen_scroll_update_this_sequence_)
|
| - return;
|
| -
|
| - if (touch_scrolling_mode_ == TOUCH_SCROLLING_MODE_ASYNC_TOUCHMOVE) {
|
| + if (touch_ack_states_.empty() ||
|
| + AllTouchAckStatesHaveState(
|
| + INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS)) {
|
| + touch_filtering_state_ = DROP_TOUCHES_IN_SEQUENCE;
|
| + return;
|
| + }
|
| + }
|
| +
|
| pending_async_touchmove_.reset();
|
| send_touch_events_async_ = true;
|
| needs_async_touchmove_for_outer_slop_region_ = true;
|
|
|