| Index: content/renderer/input/input_handler_manager.cc
|
| diff --git a/content/renderer/input/input_handler_manager.cc b/content/renderer/input/input_handler_manager.cc
|
| index 7fd9096da2b44bdaea666f727f5c9ae14b29611d..69354f6ac6b3a56a6b1c52f27332859299ef5c9a 100644
|
| --- a/content/renderer/input/input_handler_manager.cc
|
| +++ b/content/renderer/input/input_handler_manager.cc
|
| @@ -13,7 +13,6 @@
|
| #include "base/trace_event/trace_event.h"
|
| #include "cc/input/input_handler.h"
|
| #include "content/renderer/input/input_event_filter.h"
|
| -#include "content/renderer/input/input_handler_manager_client.h"
|
| #include "content/renderer/input/input_handler_wrapper.h"
|
| #include "third_party/WebKit/public/platform/scheduler/renderer/renderer_scheduler.h"
|
| #include "ui/events/blink/did_overscroll_params.h"
|
| @@ -193,10 +192,11 @@ void InputHandlerManager::NotifyInputEventHandledOnMainThread(
|
| client_->NotifyInputEventHandled(routing_id, type, ack_result);
|
| }
|
|
|
| -InputEventAckState InputHandlerManager::HandleInputEvent(
|
| +void InputHandlerManager::HandleInputEvent(
|
| int routing_id,
|
| - const WebInputEvent* input_event,
|
| - ui::LatencyInfo* latency_info) {
|
| + ui::ScopedWebInputEvent input_event,
|
| + const ui::LatencyInfo& latency_info,
|
| + const InputEventAckStateCallback& callback) {
|
| DCHECK(task_runner_->BelongsToCurrentThread());
|
| TRACE_EVENT1("input,benchmark,rail", "InputHandlerManager::HandleInputEvent",
|
| "type", ui::WebInputEventTraits::GetName(input_event->type));
|
| @@ -206,14 +206,28 @@ InputEventAckState InputHandlerManager::HandleInputEvent(
|
| TRACE_EVENT1("input,rail", "InputHandlerManager::HandleInputEvent",
|
| "result", "NoInputHandlerFound");
|
| // Oops, we no longer have an interested input handler..
|
| - return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
|
| + callback.Run(INPUT_EVENT_ACK_STATE_NOT_CONSUMED, std::move(input_event),
|
| + latency_info, nullptr);
|
| + return;
|
| }
|
|
|
| TRACE_EVENT1("input,rail", "InputHandlerManager::HandleInputEvent",
|
| "result", "EventSentToInputHandlerProxy");
|
| InputHandlerProxy* proxy = it->second->input_handler_proxy();
|
| - InputEventAckState input_event_ack_state = InputEventDispositionToAck(
|
| - proxy->HandleInputEventWithLatencyInfo(*input_event, latency_info));
|
| + proxy->HandleInputEventWithLatencyInfo(
|
| + std::move(input_event), latency_info,
|
| + base::Bind(&InputHandlerManager::DidHandleInputEvent,
|
| + base::Unretained(this), callback));
|
| +}
|
| +
|
| +void InputHandlerManager::DidHandleInputEvent(
|
| + const InputEventAckStateCallback& callback,
|
| + EventDisposition event_disposition,
|
| + ui::ScopedWebInputEvent input_event,
|
| + const ui::LatencyInfo& latency_info,
|
| + std::unique_ptr<ui::DidOverscrollParams> overscroll_params) {
|
| + InputEventAckState input_event_ack_state =
|
| + InputEventDispositionToAck(event_disposition);
|
| switch (input_event_ack_state) {
|
| case INPUT_EVENT_ACK_STATE_CONSUMED:
|
| renderer_scheduler_->DidHandleInputEventOnCompositorThread(
|
| @@ -228,12 +242,14 @@ InputEventAckState InputHandlerManager::HandleInputEvent(
|
| default:
|
| break;
|
| }
|
| - return input_event_ack_state;
|
| + callback.Run(input_event_ack_state, std::move(input_event), latency_info,
|
| + std::move(overscroll_params));
|
| }
|
|
|
| void InputHandlerManager::DidOverscroll(int routing_id,
|
| - const ui::DidOverscrollParams& params) {
|
| - client_->DidOverscroll(routing_id, params);
|
| + const ui::DidOverscrollParams& params,
|
| + bool bundle_ack_with_triggering_event) {
|
| + client_->DidOverscroll(routing_id, params, bundle_ack_with_triggering_event);
|
| }
|
|
|
| void InputHandlerManager::DidStartFlinging(int routing_id) {
|
|
|