Index: content/renderer/gpu/input_handler_manager.cc |
=================================================================== |
--- content/renderer/gpu/input_handler_manager.cc (revision 221161) |
+++ content/renderer/gpu/input_handler_manager.cc (working copy) |
@@ -93,6 +93,25 @@ |
routing_id, main_loop, input_handler, render_view_impl)); |
} |
+void InputHandlerManager::SetInputEventRewriter( |
+ int routing_id, |
+ scoped_ptr<InputEventRewriter> rewriter) { |
+ message_loop_proxy_->PostTask( |
+ FROM_HERE, |
+ base::Bind(&InputHandlerManager::SetInputEventRewriterOnCompositorThread, |
+ base::Unretained(this), |
+ routing_id, |
+ base::Passed(&rewriter))); |
+} |
+ |
+void InputHandlerManager::SetInputEventRewriterOnCompositorThread( |
+ int routing_id, |
+ scoped_ptr<InputEventRewriter> rewriter) { |
+ InputHandlerMap::iterator it = input_handlers_.find(routing_id); |
+ if (it != input_handlers_.end()) |
+ it->second->SetRewriter(rewriter.Pass()); |
+} |
+ |
void InputHandlerManager::RemoveInputHandler(int routing_id) { |
DCHECK(message_loop_proxy_->BelongsToCurrentThread()); |
@@ -116,6 +135,16 @@ |
return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; |
} |
+ scoped_ptr<WebInputEvent> rewritten_event_owner; |
+ InputEventRewriter* rewriter = it->second->rewriter(); |
+ if (rewriter) { |
+ WebInputEvent* rewritten = rewriter->RewriteInputEvent(input_event); |
+ if (rewritten) { |
+ rewritten_event_owner.reset(rewritten); |
+ input_event = rewritten; |
+ } |
+ } |
+ |
InputHandlerProxy* proxy = it->second->input_handler_proxy(); |
return InputEventDispositionToAck( |
proxy->HandleInputEventWithLatencyInfo(*input_event, latency_info)); |