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 58fd95f04f8b56f9287b1c9d50432436e84e12e0..5f1bfe04e690843e3bd49427198d9ff1b43062ed 100644 |
--- a/content/renderer/input/input_handler_manager.cc |
+++ b/content/renderer/input/input_handler_manager.cc |
@@ -48,9 +48,11 @@ InputEventAckState InputEventDispositionToAck( |
InputHandlerManager::InputHandlerManager( |
const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, |
InputHandlerManagerClient* client, |
+ SynchronousInputHandlerProxyClient* sync_handler_client, |
scheduler::RendererScheduler* renderer_scheduler) |
: task_runner_(task_runner), |
client_(client), |
+ synchronous_handler_proxy_client_(sync_handler_client), |
renderer_scheduler_(renderer_scheduler) { |
DCHECK(client_); |
client_->SetBoundHandler(base::Bind(&InputHandlerManager::HandleInputEvent, |
@@ -105,7 +107,11 @@ void InputHandlerManager::AddInputHandlerOnCompositorThread( |
scoped_ptr<InputHandlerWrapper> wrapper(new InputHandlerWrapper( |
this, routing_id, main_task_runner, input_handler, render_view_impl, |
enable_smooth_scrolling, enable_wheel_gestures)); |
- client_->DidAddInputHandler(routing_id, wrapper->input_handler_proxy()); |
+ client_->DidAddInputHandler(routing_id); |
+ if (synchronous_handler_proxy_client_) { |
+ synchronous_handler_proxy_client_->DidAddSynchronousHandlerProxy( |
+ routing_id, wrapper->input_handler_proxy()); |
+ } |
input_handlers_.add(routing_id, std::move(wrapper)); |
} |
@@ -116,6 +122,10 @@ void InputHandlerManager::RemoveInputHandler(int routing_id) { |
TRACE_EVENT0("input", "InputHandlerManager::RemoveInputHandler"); |
client_->DidRemoveInputHandler(routing_id); |
+ if (synchronous_handler_proxy_client_) { |
+ synchronous_handler_proxy_client_->DidRemoveSynchronousHandlerProxy( |
+ routing_id); |
+ } |
input_handlers_.erase(routing_id); |
} |