Chromium Code Reviews| Index: content/browser/renderer_host/input/immediate_input_router.cc |
| diff --git a/content/browser/renderer_host/input/immediate_input_router.cc b/content/browser/renderer_host/input/immediate_input_router.cc |
| index b2a4e9234a556a86ea5b5af77af75a4eff518800..4768c61db5cd0d8837e6f540ea63df0d92e279fe 100644 |
| --- a/content/browser/renderer_host/input/immediate_input_router.cc |
| +++ b/content/browser/renderer_host/input/immediate_input_router.cc |
| @@ -85,6 +85,9 @@ ImmediateInputRouter::ImmediateInputRouter( |
| has_touch_handler_(false), |
| touch_event_queue_(new TouchEventQueue(this)), |
| gesture_event_filter_(new GestureEventFilter(this)) { |
| + enable_no_touch_to_renderer_while_scrolling_ = |
| + CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| + switches::kNoTouchToRendererWhileScrolling) == "1"; |
| DCHECK(process); |
| DCHECK(client); |
| } |
| @@ -199,6 +202,7 @@ void ImmediateInputRouter::SendKeyboardEvent( |
| void ImmediateInputRouter::SendGestureEvent( |
| const GestureEventWithLatencyInfo& gesture_event) { |
| + HandleGestureScroll(gesture_event); |
| if (!client_->OnSendGestureEvent(gesture_event)) |
| return; |
| FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false); |
| @@ -252,6 +256,7 @@ void ImmediateInputRouter::SendTouchEventImmediately( |
| void ImmediateInputRouter::SendGestureEventImmediately( |
| const GestureEventWithLatencyInfo& gesture_event) { |
| + HandleGestureScroll(gesture_event); |
| if (!client_->OnSendGestureEventImmediately(gesture_event)) |
| return; |
| FilterAndSendWebInputEvent(gesture_event.event, gesture_event.latency, false); |
| @@ -549,4 +554,19 @@ void ImmediateInputRouter::ProcessTouchAck(InputEventAckState ack_result) { |
| touch_event_queue_->ProcessTouchAck(ack_result); |
| } |
| +void ImmediateInputRouter::HandleGestureScroll( |
| + const GestureEventWithLatencyInfo& gesture_event) { |
| + if (!enable_no_touch_to_renderer_while_scrolling_) |
| + return; |
| + |
| + // Once scrolling is started stop forwarding touch move events to renderer. |
| + if (gesture_event.event.type == WebInputEvent::GestureScrollUpdate) |
|
sadrul
2013/08/13 19:40:04
Please consider using GestureScrollBegin instead o
Yufeng Shen (Slow to review)
2013/08/13 20:17:27
Done.
|
| + touch_event_queue_->set_no_touch_move_to_renderer(true); |
| + |
| + if (gesture_event.event.type == WebInputEvent::GestureScrollEnd || |
| + gesture_event.event.type == WebInputEvent::GestureFlingStart) { |
| + touch_event_queue_->set_no_touch_move_to_renderer(false); |
| + } |
| +} |
| + |
| } // namespace content |