Index: content/renderer/render_thread_impl.cc |
diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc |
index 202c5f9302e72873b0d219235c8595f64b5e789d..b1b76c99d2ecdb935e36941246984248e7909b66 100644 |
--- a/content/renderer/render_thread_impl.cc |
+++ b/content/renderer/render_thread_impl.cc |
@@ -1177,10 +1177,13 @@ void RenderThreadImpl::InitializeCompositorThread() { |
#if defined(OS_ANDROID) |
SynchronousCompositorFactory* sync_compositor_factory = |
SynchronousCompositorFactory::GetInstance(); |
+ const base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
bool using_ipc_sync_compositing = |
- base::CommandLine::ForCurrentProcess()->HasSwitch( |
- switches::kIPCSyncCompositing); |
+ cmd_line->HasSwitch(switches::kIPCSyncCompositing); |
+ bool sync_input_for_sync_compositing = |
+ cmd_line->HasSwitch(switches::kSyncInputForSyncCompositor); |
DCHECK(!sync_compositor_factory || !using_ipc_sync_compositing); |
+ DCHECK(!sync_input_for_sync_compositing || using_ipc_sync_compositing); |
if (sync_compositor_factory) { |
compositor_task_runner_ = |
@@ -1201,16 +1204,23 @@ void RenderThreadImpl::InitializeCompositorThread() { |
false)); |
} |
- InputHandlerManagerClient* input_handler_manager_client = NULL; |
+ InputHandlerManagerClient* input_handler_manager_client = nullptr; |
+ SynchronousInputHandlerProxyClient* synchronous_input_handler_proxy_client = |
+ nullptr; |
#if defined(OS_ANDROID) |
if (using_ipc_sync_compositing) { |
sync_compositor_message_filter_ = |
new SynchronousCompositorFilter(compositor_task_runner_); |
AddFilter(sync_compositor_message_filter_.get()); |
- input_handler_manager_client = sync_compositor_message_filter_.get(); |
+ if (sync_input_for_sync_compositing) |
+ input_handler_manager_client = sync_compositor_message_filter_.get(); |
+ synchronous_input_handler_proxy_client = |
+ sync_compositor_message_filter_.get(); |
} else if (sync_compositor_factory) { |
input_handler_manager_client = |
sync_compositor_factory->GetInputHandlerManagerClient(); |
+ synchronous_input_handler_proxy_client = |
+ sync_compositor_factory->GetSynchronousInputHandlerProxyClient(); |
} |
#endif |
if (!input_handler_manager_client) { |
@@ -1223,7 +1233,7 @@ void RenderThreadImpl::InitializeCompositorThread() { |
} |
input_handler_manager_.reset(new InputHandlerManager( |
compositor_task_runner_, input_handler_manager_client, |
- renderer_scheduler_.get())); |
+ synchronous_input_handler_proxy_client, renderer_scheduler_.get())); |
} |
void RenderThreadImpl::EnsureWebKitInitialized() { |