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

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

Issue 2382733007: Add BlimpDocument, pull out functions in BlimpCompositor. (Closed)
Patch Set: Remove Webkit DEPS modification. 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_manager_unittest.cc
diff --git a/blimp/client/core/compositor/blimp_compositor_manager_unittest.cc b/blimp/client/core/render_widget/blimp_document_manager_unittest.cc
similarity index 53%
rename from blimp/client/core/compositor/blimp_compositor_manager_unittest.cc
rename to blimp/client/core/render_widget/blimp_document_manager_unittest.cc
index bee56b569c51b91eed6d27d1409e0bfd6718b03f..d38fe64525e293d399db653100a8abbfdc645591 100644
--- a/blimp/client/core/compositor/blimp_compositor_manager_unittest.cc
+++ b/blimp/client/core/render_widget/blimp_document_manager_unittest.cc
@@ -2,12 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "blimp/client/core/compositor/blimp_compositor_manager.h"
+#include "blimp/client/core/render_widget/blimp_document_manager.h"
#include "base/memory/ptr_util.h"
#include "base/message_loop/message_loop.h"
#include "blimp/client/core/compositor/blimp_compositor_dependencies.h"
#include "blimp/client/core/compositor/blob_image_serialization_processor.h"
+#include "blimp/client/core/render_widget/blimp_document.h"
+#include "blimp/client/core/render_widget/mock_render_widget_feature.h"
#include "blimp/client/test/compositor/mock_compositor_dependencies.h"
#include "cc/proto/compositor_message.pb.h"
#include "cc/surfaces/surface_manager.h"
@@ -25,23 +27,12 @@ namespace {
const int kDummyBlimpContentsId = 0;
-class MockRenderWidgetFeature : public RenderWidgetFeature {
- public:
- MOCK_METHOD3(SendCompositorMessage,
- void(const int, const int, const cc::proto::CompositorMessage&));
- MOCK_METHOD3(SendInputEvent,
- void(const int, const int, const blink::WebInputEvent&));
- MOCK_METHOD2(SetDelegate, void(int, RenderWidgetFeatureDelegate*));
- MOCK_METHOD1(RemoveDelegate, void(const int));
-};
-
class MockBlimpCompositor : public BlimpCompositor {
public:
explicit MockBlimpCompositor(
- const int render_widget_id,
BlimpCompositorDependencies* compositor_dependencies,
BlimpCompositorClient* client)
- : BlimpCompositor(render_widget_id, compositor_dependencies, client) {}
+ : BlimpCompositor(compositor_dependencies, client) {}
MOCK_METHOD1(SetVisible, void(bool));
MOCK_METHOD1(OnTouchEvent, bool(const ui::MotionEvent& motion_event));
@@ -54,28 +45,43 @@ class MockBlimpCompositor : public BlimpCompositor {
void(const cc::proto::CompositorMessage&));
};
-class BlimpCompositorManagerForTesting : public BlimpCompositorManager {
+class MockBlimpDocument : public BlimpDocument {
+ public:
+ explicit MockBlimpDocument(const int render_widget_id,
+ BlimpCompositorDependencies* compositor_deps,
+ BlimpDocumentManager* document_manager)
+ : BlimpDocument(render_widget_id, compositor_deps, document_manager) {
+ SetCompositorForTest(
+ base::MakeUnique<MockBlimpCompositor>(compositor_deps, this));
+ }
+
+ using BlimpDocument::GetCompositor;
+
+ MOCK_METHOD1(SetVisible, void(bool));
+ MOCK_METHOD1(OnTouchEvent, bool(const ui::MotionEvent& motion_event));
+};
+
+class BlimpDocumentManagerForTesting : public BlimpDocumentManager {
public:
- explicit BlimpCompositorManagerForTesting(
+ BlimpDocumentManagerForTesting(
int blimp_contents_id,
RenderWidgetFeature* render_widget_feature,
BlimpCompositorDependencies* compositor_dependencies)
- : BlimpCompositorManager(blimp_contents_id,
- render_widget_feature,
- compositor_dependencies) {}
+ : BlimpDocumentManager(blimp_contents_id,
+ render_widget_feature,
+ compositor_dependencies) {}
- using BlimpCompositorManager::GetCompositor;
+ using BlimpDocumentManager::GetDocument;
- std::unique_ptr<BlimpCompositor> CreateBlimpCompositor(
+ std::unique_ptr<BlimpDocument> CreateBlimpDocument(
int render_widget_id,
- BlimpCompositorDependencies* compositor_dependencies,
- BlimpCompositorClient* client) override {
- return base::MakeUnique<MockBlimpCompositor>(
- render_widget_id, compositor_dependencies, client);
+ BlimpCompositorDependencies* compositor_dependencies) override {
+ return base::MakeUnique<MockBlimpDocument>(render_widget_id,
+ compositor_dependencies, this);
}
};
-class BlimpCompositorManagerTest : public testing::Test {
+class BlimpDocumentManagerTest : public testing::Test {
public:
void SetUp() override {
EXPECT_CALL(render_widget_feature_, SetDelegate(_, _)).Times(1);
@@ -84,7 +90,7 @@ class BlimpCompositorManagerTest : public testing::Test {
compositor_dependencies_ = base::MakeUnique<BlimpCompositorDependencies>(
base::MakeUnique<MockCompositorDependencies>());
- compositor_manager_ = base::MakeUnique<BlimpCompositorManagerForTesting>(
+ document_manager_ = base::MakeUnique<BlimpDocumentManagerForTesting>(
kDummyBlimpContentsId, &render_widget_feature_,
compositor_dependencies_.get());
}
@@ -92,46 +98,53 @@ class BlimpCompositorManagerTest : public testing::Test {
void TearDown() override {
mock_compositor1_ = nullptr;
mock_compositor2_ = nullptr;
- compositor_manager_.reset();
+ document_manager_.reset();
compositor_dependencies_.reset();
}
- void SetUpCompositors() {
+ void SetUpDocuments() {
delegate()->OnRenderWidgetCreated(1);
delegate()->OnRenderWidgetCreated(2);
- mock_compositor1_ = static_cast<MockBlimpCompositor*>(
- compositor_manager_->GetCompositor(1));
- mock_compositor2_ = static_cast<MockBlimpCompositor*>(
- compositor_manager_->GetCompositor(2));
+ mock_document1_ =
+ static_cast<MockBlimpDocument*>(document_manager_->GetDocument(1));
+ mock_document2_ =
+ static_cast<MockBlimpDocument*>(document_manager_->GetDocument(2));
+
+ mock_compositor1_ =
+ static_cast<MockBlimpCompositor*>(mock_document1_->GetCompositor());
+ mock_compositor2_ =
+ static_cast<MockBlimpCompositor*>(mock_document2_->GetCompositor());
EXPECT_NE(mock_compositor1_, nullptr);
EXPECT_NE(mock_compositor2_, nullptr);
- EXPECT_EQ(mock_compositor1_->render_widget_id(), 1);
- EXPECT_EQ(mock_compositor2_->render_widget_id(), 2);
+ EXPECT_EQ(mock_document1_->document_id(), 1);
+ EXPECT_EQ(mock_document2_->document_id(), 2);
}
RenderWidgetFeature::RenderWidgetFeatureDelegate* delegate() const {
- DCHECK(compositor_manager_);
+ DCHECK(document_manager_);
return static_cast<RenderWidgetFeature::RenderWidgetFeatureDelegate*>(
- compositor_manager_.get());
+ document_manager_.get());
}
base::MessageLoop loop_;
std::unique_ptr<BlimpCompositorDependencies> compositor_dependencies_;
- std::unique_ptr<BlimpCompositorManagerForTesting> compositor_manager_;
+ std::unique_ptr<BlimpDocumentManagerForTesting> document_manager_;
BlobImageSerializationProcessor blob_image_serialization_processor_;
MockRenderWidgetFeature render_widget_feature_;
+ MockBlimpDocument* mock_document1_;
+ MockBlimpDocument* mock_document2_;
MockBlimpCompositor* mock_compositor1_;
MockBlimpCompositor* mock_compositor2_;
};
-TEST_F(BlimpCompositorManagerTest, ForwardsMessagesToCorrectCompositor) {
- SetUpCompositors();
+TEST_F(BlimpDocumentManagerTest, IncomingMessagesToCompositor) {
+ SetUpDocuments();
- // Ensure that the compositor messages for a render widget are forwarded to
- // the correct compositor.
+ // When receiving a compositor message from the engine, ensure that the
+ // messages are forwarded to the correct compositor.
EXPECT_CALL(*mock_compositor1_, MockableOnCompositorMessageReceived(_))
.Times(2);
EXPECT_CALL(*mock_compositor2_, MockableOnCompositorMessageReceived(_))
@@ -147,12 +160,27 @@ TEST_F(BlimpCompositorManagerTest, ForwardsMessagesToCorrectCompositor) {
1, base::WrapUnique(new cc::proto::CompositorMessage));
delegate()->OnRenderWidgetDeleted(1);
- EXPECT_EQ(compositor_manager_->GetCompositor(1), nullptr);
+ EXPECT_EQ(document_manager_->GetDocument(1), nullptr);
}
-TEST_F(BlimpCompositorManagerTest, ForwardsViewEventsToCorrectCompositor) {
+TEST_F(BlimpDocumentManagerTest, OutgoingMessagesToMessageProcessor) {
+ SetUpDocuments();
+
+ // When sending message to the engine, ensure that the messages are forwarded
+ // to the message processor.
+ EXPECT_CALL(render_widget_feature_, SendCompositorMessage(_, _, _)).Times(1);
+ EXPECT_CALL(render_widget_feature_, SendWebGestureEvent(_, _, _)).Times(1);
+
+ cc::proto::CompositorMessage fake_message;
+ document_manager_->SendCompositorMessage(1, fake_message);
+
+ blink::WebGestureEvent fake_gesture;
+ document_manager_->SendWebGestureEvent(1, fake_gesture);
+}
+
+TEST_F(BlimpDocumentManagerTest, ForwardsViewEventsToCorrectCompositor) {
InSequence sequence;
- SetUpCompositors();
+ SetUpDocuments();
EXPECT_CALL(*mock_compositor1_, SetVisible(true));
EXPECT_CALL(*mock_compositor1_, OnTouchEvent(_));
@@ -163,12 +191,18 @@ TEST_F(BlimpCompositorManagerTest, ForwardsViewEventsToCorrectCompositor) {
// Make the compositor manager visible while we don't have any render widget
// initialized.
- compositor_manager_->SetVisible(true);
+ document_manager_->SetVisible(true);
// Initialize the first render widget. This should propagate the visibility,
// and the touch events to the corresponding compositor.
delegate()->OnRenderWidgetInitialized(1);
- compositor_manager_->OnTouchEvent(
+
+ // Ensure the |document_manager_| holds the correct compositor layer.
+ // And the root layer only has one child.
+ EXPECT_EQ(document_manager_->layer(), mock_compositor1_->layer()->parent());
+ EXPECT_EQ(static_cast<int>(document_manager_->layer()->children().size()), 1);
+
+ document_manager_->OnTouchEvent(
ui::MotionEventGeneric(ui::MotionEvent::Action::ACTION_NONE,
base::TimeTicks::Now(), ui::PointerProperties()));
@@ -176,16 +210,24 @@ TEST_F(BlimpCompositorManagerTest, ForwardsViewEventsToCorrectCompositor) {
// and make the first one invisible.
delegate()->OnRenderWidgetInitialized(2);
+ // Ensure the |document_manager_| swaps to another compositor.
+ EXPECT_EQ(document_manager_->layer(), mock_compositor2_->layer()->parent());
+ EXPECT_EQ(static_cast<int>(document_manager_->layer()->children().size()), 1);
+
// Now make the compositor manager invisible. This should make the current
// compositor invisible.
- compositor_manager_->SetVisible(false);
+ document_manager_->SetVisible(false);
// Destroy all the widgets. We should not be receiving any calls for the view
// events forwarded after this.
delegate()->OnRenderWidgetDeleted(1);
delegate()->OnRenderWidgetDeleted(2);
- compositor_manager_->SetVisible(true);
+ // The |document_manager_| should detach the compositor layer after active
+ // document is destroyed.
+ EXPECT_EQ(static_cast<int>(document_manager_->layer()->children().size()), 0);
+
+ document_manager_->SetVisible(true);
}
} // namespace
« no previous file with comments | « blimp/client/core/render_widget/blimp_document_manager.cc ('k') | blimp/client/core/render_widget/blimp_document_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698