Index: content/renderer/input/main_thread_event_queue.cc |
diff --git a/content/renderer/input/main_thread_event_queue.cc b/content/renderer/input/main_thread_event_queue.cc |
index 721f538f9fc8e2a43812fe041b062914d93962c4..15c83500253cecaca40140ffc35b5668a45f03c1 100644 |
--- a/content/renderer/input/main_thread_event_queue.cc |
+++ b/content/renderer/input/main_thread_event_queue.cc |
@@ -30,21 +30,33 @@ bool MainThreadEventQueue::HandleEvent( |
: DISPATCH_TYPE_BLOCKING_NOTIFY_MAIN; |
if (event->type == blink::WebInputEvent::MouseWheel) { |
+ PendingMouseWheelEvent modified_dispatch_type_event = |
+ PendingMouseWheelEvent( |
+ *static_cast<const blink::WebMouseWheelEvent*>(event), latency, |
+ dispatch_type); |
+ |
+ // Adjust the |dispatchType| on the event since the compositor |
+ // determined all event listeners are passive. |
+ if (non_blocking) { |
+ modified_dispatch_type_event.event.dispatchType = |
+ blink::WebInputEvent::ListenersNonBlockingPassive; |
+ } |
+ |
if (wheel_events_.state() == WebInputEventQueueState::ITEM_PENDING) { |
- wheel_events_.Queue(PendingMouseWheelEvent( |
- *static_cast<const blink::WebMouseWheelEvent*>(event), latency, |
- dispatch_type)); |
+ wheel_events_.Queue(modified_dispatch_type_event); |
} else { |
if (non_blocking) { |
wheel_events_.set_state(WebInputEventQueueState::ITEM_PENDING); |
- client_->SendEventToMainThread(routing_id_, event, latency, |
- dispatch_type); |
+ client_->SendEventToMainThread(routing_id_, |
+ &modified_dispatch_type_event.event, |
+ latency, dispatch_type); |
} else { |
// If there is nothing in the event queue and the event is |
// blocking pass the |original_dispatch_type| to avoid |
// having the main thread call us back as an optimization. |
- client_->SendEventToMainThread(routing_id_, event, latency, |
- original_dispatch_type); |
+ client_->SendEventToMainThread(routing_id_, |
+ &modified_dispatch_type_event.event, |
+ latency, original_dispatch_type); |
} |
} |
} else if (blink::WebInputEvent::isTouchEventType(event->type)) { |