Chromium Code Reviews| 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 a65a6d46447ebea97f67afe8f4ae0b45c9aa0da6..fb6319ec1ddccb8feb8738a8a670750de30d4bb9 100644 |
| --- a/content/renderer/input/input_handler_manager.cc |
| +++ b/content/renderer/input/input_handler_manager.cc |
| @@ -196,10 +196,11 @@ void InputHandlerManager::ProcessRafAlignedInputOnMainThread(int routing_id) { |
| client_->ProcessRafAlignedInput(routing_id); |
| } |
| -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", WebInputEvent::GetName(input_event->type)); |
| @@ -209,14 +210,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::DidHandleInputEventAndOverscroll, |
| + base::Unretained(this), callback)); |
|
dtapuska
2016/08/30 18:33:50
What is the life cycle here?
chongz
2016/08/30 19:47:03
According to my knowledge |InputHandlerManager| wa
|
| +} |
| + |
| +void InputHandlerManager::DidHandleInputEventAndOverscroll( |
| + 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( |
| @@ -231,7 +246,8 @@ 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, |