Chromium Code Reviews| Index: content/browser/renderer_host/input/input_router_impl.cc |
| diff --git a/content/browser/renderer_host/input/input_router_impl.cc b/content/browser/renderer_host/input/input_router_impl.cc |
| index 54bf892014c80b6884e624cdcdaac312c0817e46..411c6b859fb5d77c7a71b4b7fbfb5b3de5f8179e 100644 |
| --- a/content/browser/renderer_host/input/input_router_impl.cc |
| +++ b/content/browser/renderer_host/input/input_router_impl.cc |
| @@ -347,8 +347,10 @@ void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event, |
| // Touch events should always indicate in the event whether they are |
| // cancelable (respect ACK disposition) or not. |
| bool ignores_ack = WebInputEventTraits::IgnoresAckDisposition(input_event); |
| + uint32 unique_touch_event_id = 0; |
| if (WebInputEvent::isTouchEventType(input_event.type)) { |
| const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(input_event); |
| + unique_touch_event_id= touch.uniqueTouchEventId; |
|
tdresser
2015/03/16 12:24:12
add space before =
lanwei
2015/03/16 19:06:07
Done.
|
| DCHECK_NE(ignores_ack, !!touch.cancelable); |
| } |
| @@ -357,6 +359,7 @@ void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event, |
| ProcessInputEventAck(input_event.type, |
| INPUT_EVENT_ACK_STATE_IGNORED, |
| latency_info, |
| + unique_touch_event_id, |
| IGNORING_DISPOSITION); |
| } |
| } |
| @@ -364,6 +367,7 @@ void InputRouterImpl::OfferToHandlers(const WebInputEvent& input_event, |
| bool InputRouterImpl::OfferToClient(const WebInputEvent& input_event, |
| const ui::LatencyInfo& latency_info) { |
| bool consumed = false; |
| + uint32 unique_touch_event_id = 0; |
| InputEventAckState filter_ack = |
| client_->FilterInputEvent(input_event, latency_info); |
| @@ -372,7 +376,13 @@ bool InputRouterImpl::OfferToClient(const WebInputEvent& input_event, |
| case INPUT_EVENT_ACK_STATE_NO_CONSUMER_EXISTS: |
| // Send the ACK and early exit. |
| next_mouse_move_.reset(); |
| - ProcessInputEventAck(input_event.type, filter_ack, latency_info, CLIENT); |
| + if (WebInputEvent::isTouchEventType(input_event.type)) { |
| + const WebTouchEvent& touch = |
| + static_cast<const WebTouchEvent&>(input_event); |
| + unique_touch_event_id= touch.uniqueTouchEventId; |
|
tdresser
2015/03/16 12:24:12
add space before =
lanwei
2015/03/16 19:06:07
Done.
|
| + } |
| + ProcessInputEventAck(input_event.type, filter_ack, latency_info, |
| + unique_touch_event_id, CLIENT); |
| // WARNING: |this| may be deleted at this point. |
| consumed = true; |
| break; |
| @@ -417,8 +427,8 @@ void InputRouterImpl::OnInputEventAck( |
| ack.type == WebInputEvent::GestureScrollUpdate); |
| OnDidOverscroll(*ack.overscroll); |
| } |
| - |
| - ProcessInputEventAck(ack.type, ack.state, ack.latency, RENDERER); |
| + ProcessInputEventAck(ack.type, ack.state, ack.latency, |
| + ack.unique_touch_event_id, RENDERER); |
| // WARNING: |this| may be deleted at this point. |
| // This is used only for testing, and the other end does not use the |
| @@ -489,6 +499,7 @@ void InputRouterImpl::ProcessInputEventAck( |
| WebInputEvent::Type event_type, |
| InputEventAckState ack_result, |
| const ui::LatencyInfo& latency_info, |
| + uint32 uniqueEventId, |
| AckSource ack_source) { |
| TRACE_EVENT2("input", "InputRouterImpl::ProcessInputEventAck", |
| "type", WebInputEventTraits::GetName(event_type), |
| @@ -511,7 +522,7 @@ void InputRouterImpl::ProcessInputEventAck( |
| } else if (event_type == WebInputEvent::MouseWheel) { |
| ProcessWheelAck(ack_result, latency_info); |
| } else if (WebInputEvent::isTouchEventType(event_type)) { |
| - ProcessTouchAck(ack_result, latency_info); |
| + ProcessTouchAck(ack_result, latency_info, uniqueEventId); |
| } else if (WebInputEvent::isGestureEventType(event_type)) { |
| ProcessGestureAck(event_type, ack_result, latency_info); |
| } else if (event_type != WebInputEvent::Undefined) { |
| @@ -592,9 +603,11 @@ void InputRouterImpl::ProcessGestureAck(WebInputEvent::Type type, |
| void InputRouterImpl::ProcessTouchAck( |
| InputEventAckState ack_result, |
| - const ui::LatencyInfo& latency) { |
| + const ui::LatencyInfo& latency, |
| + uint32 unique_touch_event_id) { |
| // |touch_event_queue_| will forward to OnTouchEventAck when appropriate. |
| - touch_event_queue_.ProcessTouchAck(ack_result, latency); |
| + touch_event_queue_.ProcessTouchAck(ack_result, latency, |
| + unique_touch_event_id); |
| } |
| void InputRouterImpl::UpdateTouchAckTimeoutEnabled() { |