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 06bbc950e1d798a648fac65502f6c1c57365badc..a52c0ee90428238e9ea58c073bb33c0b28a8a08d 100644 |
--- a/content/browser/renderer_host/input/immediate_input_router.cc |
+++ b/content/browser/renderer_host/input/immediate_input_router.cc |
@@ -339,6 +339,14 @@ void ImmediateInputRouter::OfferToHandlers(const WebInputEvent& input_event, |
return; |
OfferToRenderer(input_event, latency_info, is_keyboard_shortcut); |
+ |
+ // If we don't care about the ack disposition, send the ack immediately. |
+ if (WebInputEventTraits::IgnoresAckDisposition(input_event.type)) { |
+ ProcessInputEventAck(input_event.type, |
+ INPUT_EVENT_ACK_STATE_IGNORED, |
+ latency_info, |
+ IGNORING_DISPOSITION); |
+ } |
} |
bool ImmediateInputRouter::OfferToOverscrollController( |
@@ -424,6 +432,10 @@ void ImmediateInputRouter::OnInputEventAck( |
client_->DecrementInFlightEventCount(); |
+ // A synthetic ack will already have been sent for this event. |
+ if (WebInputEventTraits::IgnoresAckDisposition(event_type)) |
+ return; |
+ |
ProcessInputEventAck(event_type, ack_result, latency_info, RENDERER); |
// WARNING: |this| may be deleted at this point. |