Chromium Code Reviews| Index: blimp/client/core/render_widget/blimp_document.cc |
| diff --git a/blimp/client/core/render_widget/blimp_document.cc b/blimp/client/core/render_widget/blimp_document.cc |
| index 072ca4a5f8530c0063e614e60a4f425d1c1f09c4..5c6a9b8ba13b11f52cd8d56d170f9e1e9c53da08 100644 |
| --- a/blimp/client/core/render_widget/blimp_document.cc |
| +++ b/blimp/client/core/render_widget/blimp_document.cc |
| @@ -4,6 +4,9 @@ |
| #include "blimp/client/core/render_widget/blimp_document.h" |
| +#include "base/threading/thread_task_runner_handle.h" |
| +#include "blimp/client/core/compositor/blimp_compositor_dependencies.h" |
| +#include "blimp/client/core/input/blimp_input_manager.h" |
| #include "blimp/client/core/render_widget/blimp_document_manager.h" |
| #include "cc/layers/layer.h" |
| @@ -15,17 +18,42 @@ BlimpDocument::BlimpDocument(int document_id, |
| BlimpDocumentManager* document_manager) |
|
David Trainor- moved to gerrit
2016/10/10 21:12:20
Can you just call the other constructor with the a
xingliu
2016/10/10 21:48:00
Done.
|
| : document_id_(document_id), manager_(document_manager) { |
| compositor_ = base::MakeUnique<BlimpCompositor>(compositor_deps, this); |
| + CreateInputManager(compositor_deps); |
| } |
| -BlimpDocument::~BlimpDocument() = default; |
| +BlimpDocument::BlimpDocument(int document_id, |
| + std::unique_ptr<BlimpCompositor> compositor, |
| + BlimpCompositorDependencies* compositor_deps, |
| + BlimpDocumentManager* document_manager) |
| + : document_id_(document_id), |
| + compositor_(std::move(compositor)), |
| + manager_(document_manager) { |
| + CreateInputManager(compositor_deps); |
| +} |
| + |
| +BlimpDocument::~BlimpDocument() { |
| + compositor_.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(); |
| +} |
| BlimpCompositor* BlimpDocument::GetCompositor() { |
| return compositor_.get(); |
| } |
| -void BlimpDocument::SetCompositorForTest( |
| - std::unique_ptr<BlimpCompositor> compositor) { |
| - compositor_ = std::move(compositor); |
| +bool BlimpDocument::OnTouchEvent(const ui::MotionEvent& motion_event) { |
| + if (input_manager_) |
| + return input_manager_->OnTouchEvent(motion_event); |
| + return false; |
| +} |
| + |
| +void BlimpDocument::SendCompositorMessage( |
| + const cc::proto::CompositorMessage& message) { |
| + manager_->SendCompositorMessage(document_id_, message); |
| } |
| void BlimpDocument::SendWebGestureEvent( |
| @@ -33,9 +61,13 @@ void BlimpDocument::SendWebGestureEvent( |
| manager_->SendWebGestureEvent(document_id_, gesture_event); |
| } |
| -void BlimpDocument::SendCompositorMessage( |
| - const cc::proto::CompositorMessage& message) { |
| - manager_->SendCompositorMessage(document_id_, message); |
| +void BlimpDocument::CreateInputManager( |
| + BlimpCompositorDependencies* compositor_deps) { |
| + DCHECK(!input_manager_); |
| + input_manager_ = |
| + BlimpInputManager::Create(this, base::ThreadTaskRunnerHandle::Get(), |
| + compositor_deps->GetCompositorTaskRunner(), |
| + compositor_->GetInputHandler()); |
| } |
| } // namespace client |