Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(11)

Unified Diff: blimp/client/core/render_widget/blimp_document.cc

Issue 2400923002: Move BlimpInputManager to BlimpDocument from BlimpCompositor. (Closed)
Patch Set: Removed unused mock class. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..3755e2bd99362d54f302a3280c39a7c2181aebba 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,22 +18,47 @@ BlimpDocument::BlimpDocument(int document_id,
BlimpDocumentManager* document_manager)
: document_id_(document_id), manager_(document_manager) {
compositor_ = base::MakeUnique<BlimpCompositor>(compositor_deps, this);
+
+ scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner =
+ compositor_deps->GetCompositorTaskRunner();
+
+ DCHECK(!input_manager_);
+ input_manager_ = BlimpInputManager::Create(
+ this, base::ThreadTaskRunnerHandle::Get(), compositor_task_runner,
+ compositor_->GetInputHandler());
}
-BlimpDocument::~BlimpDocument() = default;
+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();
}
+bool BlimpDocument::OnTouchEvent(const ui::MotionEvent& motion_event) {
+ if (input_manager_)
+ return input_manager_->OnTouchEvent(motion_event);
+ return false;
+}
+
void BlimpDocument::SetCompositorForTest(
- std::unique_ptr<BlimpCompositor> compositor) {
+ std::unique_ptr<BlimpCompositor> compositor,
+ BlimpCompositorDependencies* compositor_deps) {
compositor_ = std::move(compositor);
-}
-void BlimpDocument::SendWebGestureEvent(
- const blink::WebGestureEvent& gesture_event) {
- manager_->SendWebGestureEvent(document_id_, gesture_event);
+ scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner =
+ compositor_deps->GetCompositorTaskRunner();
+
+ input_manager_ = BlimpInputManager::Create(
+ this, base::ThreadTaskRunnerHandle::Get(), compositor_task_runner,
+ compositor_->GetInputHandler());
}
void BlimpDocument::SendCompositorMessage(
@@ -38,5 +66,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

Powered by Google App Engine
This is Rietveld 408576698