Chromium Code Reviews| Index: content/renderer/input/render_widget_input_handler.cc |
| diff --git a/content/renderer/input/render_widget_input_handler.cc b/content/renderer/input/render_widget_input_handler.cc |
| index d5d5255c02f9c864a383a94ca1745f640d47461b..238ad5fe4e1efba35b24f8541a91607ed8814bbe 100644 |
| --- a/content/renderer/input/render_widget_input_handler.cc |
| +++ b/content/renderer/input/render_widget_input_handler.cc |
| @@ -191,9 +191,8 @@ RenderWidgetInputHandler::~RenderWidgetInputHandler() {} |
| void RenderWidgetInputHandler::HandleInputEvent( |
| const WebInputEvent& input_event, |
| - const ui::LatencyInfo& latency_info) { |
| - // TODO(dtapuska): Passive support not implemented yet crbug.com/489802 |
| - bool passive = false; |
| + const ui::LatencyInfo& latency_info, |
| + bool passive) { |
| base::AutoReset<bool> handling_input_event_resetter(&handling_input_event_, |
| true); |
| base::AutoReset<WebInputEvent::Type> handling_event_type_resetter( |
| @@ -356,11 +355,15 @@ void RenderWidgetInputHandler::HandleInputEvent( |
| // Send mouse wheel events and their disposition to the compositor thread, so |
| // that they can be used to produce the elastic overscroll effect on Mac. |
| if (input_event.type == WebInputEvent::MouseWheel) { |
| - delegate_->ObserveWheelEventAndResult( |
| - static_cast<const WebMouseWheelEvent&>(input_event), |
| - event_overscroll ? event_overscroll->latest_overscroll_delta |
| - : gfx::Vector2dF(), |
| - processed != WebInputEventResult::NotHandled); |
| + const WebMouseWheelEvent& wheel_event = |
| + static_cast<const WebMouseWheelEvent&>(input_event); |
| + if (wheel_event.canScroll) { |
|
tdresser
2016/01/26 16:34:37
The canScroll check is unrelated to the rest of yo
dtapuska
2016/01/26 16:53:15
Ultimately yes; for passive wheel listeners; canSc
tdresser
2016/01/26 18:45:42
Acknowledged.
|
| + delegate_->ObserveWheelEventAndResult( |
| + wheel_event, |
| + event_overscroll ? event_overscroll->latest_overscroll_delta |
| + : gfx::Vector2dF(), |
| + processed != WebInputEventResult::NotHandled); |
| + } |
| } |
| bool frame_pending = |
| @@ -384,7 +387,12 @@ void RenderWidgetInputHandler::HandleInputEvent( |
| // by reentrant calls for events after the paused one. |
| bool no_ack = ignore_ack_for_mouse_move_from_debugger_ && |
| input_event.type == WebInputEvent::MouseMove; |
| - if (WebInputEventTraits::WillReceiveAckFromRenderer(input_event) && !no_ack) { |
| + if (passive) { |
| + // Passive means it was ack'd already by the InputHandlerProxy |
| + // so let the delegate know the passive event has been handled. |
| + delegate_->PassiveInputEventHandled(input_event.type); |
| + } else if (WebInputEventTraits::WillReceiveAckFromRenderer(input_event) && |
| + !no_ack) { |
|
tdresser
2016/01/26 16:34:37
Is this indentation correct?
dtapuska
2016/01/26 16:53:15
Done.
|
| scoped_ptr<InputEventAck> response(new InputEventAck( |
| input_event.type, ack_result, swap_latency_info, |
| std::move(event_overscroll), |