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 a4c69054fd16cb8838053438b95b287a81ae904c..98582b95b884302e00ffa681c1b3dde75dc9be3b 100644 |
--- a/content/browser/renderer_host/input/immediate_input_router.cc |
+++ b/content/browser/renderer_host/input/immediate_input_router.cc |
@@ -485,7 +485,7 @@ void ImmediateInputRouter::ProcessInputEventAck( |
} else if (WebInputEvent::isTouchEventType(type)) { |
ProcessTouchAck(ack_result, latency_info); |
} else if (WebInputEvent::isGestureEventType(type)) { |
- ProcessGestureAck(type, ack_result); |
+ ProcessGestureAck(event_type, ack_result); |
} |
// WARNING: |this| may be deleted at this point. |
@@ -541,9 +541,13 @@ void ImmediateInputRouter::ProcessWheelAck(InputEventAckState ack_result) { |
} |
} |
-void ImmediateInputRouter::ProcessGestureAck(int type, |
+void ImmediateInputRouter::ProcessGestureAck(WebInputEvent::Type type, |
InputEventAckState ack_result) { |
+ if (GestureEventFilter::IsGestureEventTypeAsync(type)) |
+ return; |
const bool processed = (INPUT_EVENT_ACK_STATE_CONSUMED == ack_result); |
+ // Note: the order the ack is passed to |ack_handler_| and |
+ // |gesture_event_filter_| matters. See crbug.com/302592. |
ack_handler_->OnGestureEventAck( |
gesture_event_filter_->GetGestureEventAwaitingAck(), ack_result); |
gesture_event_filter_->ProcessGestureAck(processed, type); |