Index: blimp/client/compositor/blimp_compositor.cc |
diff --git a/blimp/client/compositor/blimp_compositor.cc b/blimp/client/compositor/blimp_compositor.cc |
index 9c783dcc9cab919f17fc7194d01ad28f5a5871fb..a585996ddd430ffa8f7823c8ee6eb18df069f066 100644 |
--- a/blimp/client/compositor/blimp_compositor.cc |
+++ b/blimp/client/compositor/blimp_compositor.cc |
@@ -71,6 +71,10 @@ BlimpCompositor::~BlimpCompositor() { |
// tasks on |compositor_thread_|. |
host_.reset(); |
settings_.reset(); |
+ |
+ // We must destroy |host_| before the |input_manager_|. |
+ input_manager_.reset(); |
+ |
if (compositor_thread_) |
compositor_thread_->Stop(); |
} |
@@ -131,6 +135,12 @@ void BlimpCompositor::ReleaseAcceleratedWidget() { |
window_ = gfx::kNullAcceleratedWidget; |
} |
+bool BlimpCompositor::OnTouchEvent(const ui::MotionEvent& motion_event) { |
+ if (input_manager_) |
+ return input_manager_->OnTouchEvent(motion_event); |
+ return false; |
+} |
+ |
void BlimpCompositor::WillBeginMainFrame() {} |
void BlimpCompositor::DidBeginMainFrame() {} |
@@ -189,6 +199,12 @@ void BlimpCompositor::OnRenderWidgetInitialized() { |
// Destroy the old LayerTreeHost state. |
host_.reset(); |
+ // Destroy the old input manager state. |
+ // It is important to destroy the LayerTreeHost before destroying the input |
+ // manager as it has a reference to the cc::InputHandlerClient owned by the |
+ // BlimpInputManager. |
+ input_manager_.reset(); |
+ |
// Reset other state. |
output_surface_request_pending_ = false; |
@@ -212,6 +228,11 @@ void BlimpCompositor::GenerateLayerTreeSettings( |
PopulateCommonLayerTreeSettings(settings); |
} |
+void BlimpCompositor::SendWebInputEvent( |
+ const blink::WebInputEvent& input_event) { |
+ render_widget_processor_.SendInputEvent(kDummyTabId, input_event); |
+} |
+ |
void BlimpCompositor::CreateLayerTreeHost( |
scoped_ptr<cc::proto::CompositorMessage> message) { |
if (!settings_) { |
@@ -244,6 +265,15 @@ void BlimpCompositor::CreateLayerTreeHost( |
cc::Layer::Create(BlimpCompositor::LayerSettings())); |
host_->SetRootLayer(root); |
g_dummy_layer_driver.Pointer()->SetParentLayer(root); |
+ |
+ // TODO(khushalsagar): Create this after successful initialization of the |
+ // remote client compositor when implemented. |
+ DCHECK(!input_manager_); |
+ input_manager_ = |
+ BlimpInputManager::Create(this, |
+ base::ThreadTaskRunnerHandle::Get(), |
+ GetCompositorTaskRunner(), |
+ host_->GetInputHandler()); |
} |
scoped_refptr<base::SingleThreadTaskRunner> |