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 |