| 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..0718098cfb3637edafbefe2aa9c012315d9c69e1 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"
|
|
|
| @@ -13,24 +16,42 @@ namespace client {
|
| BlimpDocument::BlimpDocument(int document_id,
|
| BlimpCompositorDependencies* compositor_deps,
|
| BlimpDocumentManager* document_manager)
|
| - : document_id_(document_id), manager_(document_manager) {
|
| - compositor_ = base::MakeUnique<BlimpCompositor>(compositor_deps, this);
|
| + : BlimpDocument(document_id,
|
| + base::MakeUnique<BlimpCompositor>(compositor_deps, this),
|
| + compositor_deps,
|
| + document_manager) {}
|
| +
|
| +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) {
|
| + input_manager_ =
|
| + BlimpInputManager::Create(this, base::ThreadTaskRunnerHandle::Get(),
|
| + compositor_deps->GetCompositorTaskRunner(),
|
| + compositor_->GetInputHandler());
|
| }
|
|
|
| -BlimpDocument::~BlimpDocument() = default;
|
| +BlimpDocument::~BlimpDocument() {
|
| + compositor_.reset();
|
|
|
| -BlimpCompositor* BlimpDocument::GetCompositor() {
|
| - return compositor_.get();
|
| + // 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();
|
| }
|
|
|
| -void BlimpDocument::SetCompositorForTest(
|
| - std::unique_ptr<BlimpCompositor> compositor) {
|
| - compositor_ = std::move(compositor);
|
| +BlimpCompositor* BlimpDocument::GetCompositor() {
|
| + return compositor_.get();
|
| }
|
|
|
| -void BlimpDocument::SendWebGestureEvent(
|
| - const blink::WebGestureEvent& gesture_event) {
|
| - manager_->SendWebGestureEvent(document_id_, gesture_event);
|
| +bool BlimpDocument::OnTouchEvent(const ui::MotionEvent& motion_event) {
|
| + if (input_manager_)
|
| + return input_manager_->OnTouchEvent(motion_event);
|
| + return false;
|
| }
|
|
|
| void BlimpDocument::SendCompositorMessage(
|
| @@ -38,5 +59,10 @@ void BlimpDocument::SendCompositorMessage(
|
| manager_->SendCompositorMessage(document_id_, message);
|
| }
|
|
|
| +void BlimpDocument::SendWebGestureEvent(
|
| + const blink::WebGestureEvent& gesture_event) {
|
| + manager_->SendWebGestureEvent(document_id_, gesture_event);
|
| +}
|
| +
|
| } // namespace client
|
| } // namespace blimp
|
|
|