Index: content/renderer/input/input_event_filter.cc |
diff --git a/content/renderer/input/input_event_filter.cc b/content/renderer/input/input_event_filter.cc |
index 6c78d57b0213ecbfbc1ce152e3052783e466807c..319d89f552c41b0898bbd9c42d7762463429a53f 100644 |
--- a/content/renderer/input/input_event_filter.cc |
+++ b/content/renderer/input/input_event_filter.cc |
@@ -21,6 +21,7 @@ |
#include "ui/gfx/geometry/vector2d_f.h" |
using blink::WebInputEvent; |
+using blink::WebTouchEvent; |
#include "ipc/ipc_message_null_macros.h" |
#undef IPC_MESSAGE_DECL |
@@ -177,6 +178,19 @@ void InputEventFilter::ForwardToHandler(const IPC::Message& message) { |
if (!send_ack) |
return; |
+ // Send AsyncTouchEvent_ACK for async touch moves, and InputEvent_ACK for |
+ // all other types of events. |
+ if (event->type == WebInputEvent::TouchMove) { |
+ const WebTouchEvent& touch = static_cast<const WebTouchEvent&>(*event); |
+ if (!touch.cancelable) { |
+ InputHostMsg_HandleUncancelableTouchMoveEvent_ACK_Params ack; |
+ SendMessage(scoped_ptr<IPC::Message>( |
+ new InputHostMsg_HandleUncancelableTouchMoveEvent_ACK(routing_id, |
+ ack))); |
+ return; |
+ } |
+ } |
+ |
InputHostMsg_HandleInputEvent_ACK_Params ack; |
ack.type = event->type; |
ack.state = ack_state; |