| Index: content/renderer/gpu/input_handler_manager.cc
|
| diff --git a/content/renderer/gpu/input_handler_manager.cc b/content/renderer/gpu/input_handler_manager.cc
|
| index 15c49ccd3819eab8fc967f174cb104cde435914b..bcb38c90d9ebd0871b96c1b3fd6768ae3e51a437 100644
|
| --- a/content/renderer/gpu/input_handler_manager.cc
|
| +++ b/content/renderer/gpu/input_handler_manager.cc
|
| @@ -8,8 +8,8 @@
|
| #include "base/debug/trace_event.h"
|
| #include "cc/input/input_handler.h"
|
| #include "content/renderer/gpu/input_event_filter.h"
|
| +#include "content/renderer/gpu/input_handler_manager_client.h"
|
| #include "content/renderer/gpu/input_handler_wrapper.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebActiveWheelFlingParameters.h"
|
|
|
| using WebKit::WebInputEvent;
|
|
|
| @@ -34,38 +34,38 @@ InputEventAckState InputEventDispositionToAck(
|
| } // namespace
|
|
|
| InputHandlerManager::InputHandlerManager(
|
| - IPC::Listener* main_listener,
|
| - const scoped_refptr<base::MessageLoopProxy>& message_loop_proxy)
|
| - : message_loop_proxy_(message_loop_proxy) {
|
| - filter_ =
|
| - new InputEventFilter(main_listener,
|
| - message_loop_proxy,
|
| - base::Bind(&InputHandlerManager::HandleInputEvent,
|
| + const scoped_refptr<base::MessageLoopProxy>& message_loop_proxy,
|
| + InputHandlerManagerClient* client)
|
| + : message_loop_proxy_(message_loop_proxy),
|
| + client_(client) {
|
| + DCHECK(client_);
|
| + client_->SetBoundHandler(base::Bind(&InputHandlerManager::HandleInputEvent,
|
| base::Unretained(this)));
|
| }
|
|
|
| InputHandlerManager::~InputHandlerManager() {
|
| -}
|
| -
|
| -IPC::ChannelProxy::MessageFilter*
|
| -InputHandlerManager::GetMessageFilter() const {
|
| - return filter_.get();
|
| + client_->SetBoundHandler(InputHandlerManagerClient::Handler());
|
| }
|
|
|
| void InputHandlerManager::AddInputHandler(
|
| int routing_id,
|
| const base::WeakPtr<cc::InputHandler>& input_handler,
|
| const base::WeakPtr<RenderViewImpl>& render_view_impl) {
|
| - DCHECK(!message_loop_proxy_->BelongsToCurrentThread());
|
| -
|
| - message_loop_proxy_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&InputHandlerManager::AddInputHandlerOnCompositorThread,
|
| - base::Unretained(this),
|
| - routing_id,
|
| - base::MessageLoopProxy::current(),
|
| - input_handler,
|
| - render_view_impl));
|
| + if (message_loop_proxy_->BelongsToCurrentThread()) {
|
| + AddInputHandlerOnCompositorThread(routing_id,
|
| + base::MessageLoopProxy::current(),
|
| + input_handler,
|
| + render_view_impl);
|
| + } else {
|
| + message_loop_proxy_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&InputHandlerManager::AddInputHandlerOnCompositorThread,
|
| + base::Unretained(this),
|
| + routing_id,
|
| + base::MessageLoopProxy::current(),
|
| + input_handler,
|
| + render_view_impl));
|
| + }
|
| }
|
|
|
| void InputHandlerManager::AddInputHandlerOnCompositorThread(
|
| @@ -76,7 +76,7 @@ void InputHandlerManager::AddInputHandlerOnCompositorThread(
|
| DCHECK(message_loop_proxy_->BelongsToCurrentThread());
|
|
|
| // The handler could be gone by this point if the compositor has shut down.
|
| - if (!input_handler.get())
|
| + if (!input_handler)
|
| return;
|
|
|
| // The same handler may be registered for a route multiple times.
|
| @@ -84,7 +84,7 @@ void InputHandlerManager::AddInputHandlerOnCompositorThread(
|
| return;
|
|
|
| TRACE_EVENT0("InputHandlerManager::AddInputHandler", "AddingRoute");
|
| - filter_->AddRoute(routing_id);
|
| + client_->DidAddInputHandler(routing_id);
|
| input_handlers_[routing_id] =
|
| make_scoped_refptr(new InputHandlerWrapper(this,
|
| routing_id, main_loop, input_handler, render_view_impl));
|
| @@ -95,13 +95,13 @@ void InputHandlerManager::RemoveInputHandler(int routing_id) {
|
|
|
| TRACE_EVENT0("InputHandlerManager::RemoveInputHandler", "RemovingRoute");
|
|
|
| - filter_->RemoveRoute(routing_id);
|
| + client_->DidRemoveInputHandler(routing_id);
|
| input_handlers_.erase(routing_id);
|
| }
|
|
|
| InputEventAckState InputHandlerManager::HandleInputEvent(
|
| int routing_id,
|
| - const WebInputEvent* input_event) {
|
| + const WebInputEvent& input_event) {
|
| DCHECK(message_loop_proxy_->BelongsToCurrentThread());
|
|
|
| InputHandlerMap::iterator it = input_handlers_.find(routing_id);
|
| @@ -113,7 +113,7 @@ InputEventAckState InputHandlerManager::HandleInputEvent(
|
| }
|
|
|
| return InputEventDispositionToAck(
|
| - it->second->input_handler_proxy()->HandleInputEvent(*input_event));
|
| + it->second->input_handler_proxy()->HandleInputEvent(input_event));
|
| }
|
|
|
| } // namespace content
|
|
|