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

Side by Side Diff: blimp/client/feature/compositor/blimp_compositor_unittest.cc

Issue 2274323002: Expose Blimp dependencies to the embedder (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@khushal_baseline_1
Patch Set: Addressed Khushal's initial comments Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <blimp/client/feature/compositor/blimp_gpu_memory_buffer_manager.h>
6 #include "blimp/client/feature/compositor/blimp_compositor.h" 5 #include "blimp/client/feature/compositor/blimp_compositor.h"
7 6
8 #include "base/threading/thread_task_runner_handle.h" 7 #include "base/threading/thread_task_runner_handle.h"
8 #include "blimp/client/core/compositor/blimp_compositor_dependencies.h"
9 #include "blimp/client/core/compositor/blimp_task_graph_runner.h"
9 #include "blimp/client/core/compositor/blob_image_serialization_processor.h" 10 #include "blimp/client/core/compositor/blob_image_serialization_processor.h"
10 #include "blimp/common/compositor/blimp_task_graph_runner.h" 11 #include "blimp/client/feature/compositor/mock_compositor_dependencies.h"
11 #include "cc/layers/layer.h" 12 #include "cc/layers/layer.h"
12 #include "cc/proto/compositor_message.pb.h" 13 #include "cc/proto/compositor_message.pb.h"
13 #include "cc/surfaces/surface_manager.h" 14 #include "cc/surfaces/surface_manager.h"
14 #include "testing/gmock/include/gmock/gmock.h" 15 #include "testing/gmock/include/gmock/gmock.h"
15 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
16 17
17 using testing::_; 18 using testing::_;
18 19
19 namespace blimp { 20 namespace blimp {
20 namespace client { 21 namespace client {
21 22
22 class MockBlimpCompositorClient : public BlimpCompositorClient { 23 class MockBlimpCompositorClient : public BlimpCompositorClient {
23 public: 24 public:
24 MockBlimpCompositorClient() : compositor_thread_("Compositor") { 25 MockBlimpCompositorClient() = default;
25 compositor_thread_.Start(); 26 ~MockBlimpCompositorClient() override = default;
26 }
27 ~MockBlimpCompositorClient() override { compositor_thread_.Stop(); }
28
29 cc::LayerTreeSettings* GetLayerTreeSettings() override { return &settings_; }
30 scoped_refptr<base::SingleThreadTaskRunner> GetCompositorTaskRunner() override
31 { return compositor_thread_.task_runner(); }
32 cc::TaskGraphRunner* GetTaskGraphRunner() override {
33 return &task_graph_runner_; }
34 gpu::GpuMemoryBufferManager* GetGpuMemoryBufferManager() override {
35 return &gpu_memory_buffer_manager_;
36 }
37 cc::ImageSerializationProcessor* GetImageSerializationProcessor() override {
38 return BlobImageSerializationProcessor::current();
39 }
40 27
41 void SendWebGestureEvent( 28 void SendWebGestureEvent(
42 int render_widget_id, 29 int render_widget_id,
43 const blink::WebGestureEvent& gesture_event) override { 30 const blink::WebGestureEvent& gesture_event) override {
44 MockableSendWebGestureEvent(render_widget_id); 31 MockableSendWebGestureEvent(render_widget_id);
45 } 32 }
46 void SendCompositorMessage( 33 void SendCompositorMessage(
47 int render_widget_id, 34 int render_widget_id,
48 const cc::proto::CompositorMessage& message) override { 35 const cc::proto::CompositorMessage& message) override {
49 MockableSendCompositorMessage(render_widget_id); 36 MockableSendCompositorMessage(render_widget_id);
50 } 37 }
51 38
52 MOCK_METHOD1(MockableSendWebGestureEvent, void(int)); 39 MOCK_METHOD1(MockableSendWebGestureEvent, void(int));
53 MOCK_METHOD1(MockableSendCompositorMessage, void(int)); 40 MOCK_METHOD1(MockableSendCompositorMessage, void(int));
54 41
55 cc::LayerTreeSettings settings_;
56 base::Thread compositor_thread_;
57 BlimpTaskGraphRunner task_graph_runner_;
58 BlimpGpuMemoryBufferManager gpu_memory_buffer_manager_;
59 BlobImageSerializationProcessor serialization_processor_;
60
61 private: 42 private:
62 DISALLOW_COPY_AND_ASSIGN(MockBlimpCompositorClient); 43 DISALLOW_COPY_AND_ASSIGN(MockBlimpCompositorClient);
63 }; 44 };
64 45
65 class BlimpCompositorForTesting : public BlimpCompositor { 46 class BlimpCompositorForTesting : public BlimpCompositor {
66 public: 47 public:
67 BlimpCompositorForTesting(int render_widget_id, 48 BlimpCompositorForTesting(
68 cc::SurfaceManager* surface_manager, 49 int render_widget_id,
69 uint32_t surface_client_id, 50 BlimpCompositorDependencies* compositor_dependencies,
70 BlimpCompositorClient* client) 51 BlimpCompositorClient* client)
71 : BlimpCompositor(render_widget_id, 52 : BlimpCompositor(render_widget_id, compositor_dependencies, client) {}
72 surface_manager,
73 surface_client_id,
74 client) {}
75 53
76 void SendProto(const cc::proto::CompositorMessage& proto) { 54 void SendProto(const cc::proto::CompositorMessage& proto) {
77 SendCompositorProto(proto); 55 SendCompositorProto(proto);
78 } 56 }
79 57
80 void SendGestureEvent(const blink::WebGestureEvent& gesture_event) { 58 void SendGestureEvent(const blink::WebGestureEvent& gesture_event) {
81 SendWebGestureEvent(gesture_event); 59 SendWebGestureEvent(gesture_event);
82 } 60 }
83 61
84 cc::LayerTreeHost* host() const { return host_.get(); } 62 cc::LayerTreeHost* host() const { return host_.get(); }
85 }; 63 };
86 64
87 class BlimpCompositorTest : public testing::Test { 65 class BlimpCompositorTest : public testing::Test {
88 public: 66 public:
89 BlimpCompositorTest() : render_widget_id_(1), loop_(new base::MessageLoop) {} 67 BlimpCompositorTest() : render_widget_id_(1), loop_(new base::MessageLoop) {}
90 68
91 void SetUp() override { 69 void SetUp() override {
92 surface_manager_ = base::MakeUnique<cc::SurfaceManager>(); 70 compositor_dependencies_ = base::WrapUnique(new BlimpCompositorDependencies(
Khushal 2016/08/25 05:02:54 MakeUnique. :(
David Trainor- moved to gerrit 2016/08/26 17:15:54 Sorry still hadn't done a personal final pass on t
93 compositor_.reset(new BlimpCompositorForTesting( 71 base::WrapUnique(new MockCompositorDependencies())));
94 render_widget_id_, surface_manager_.get(), surface_client_id_++, 72
95 &compositor_client_)); 73 compositor_ = base::MakeUnique<BlimpCompositorForTesting>(
74 render_widget_id_, compositor_dependencies_.get(), &compositor_client_);
96 } 75 }
97 76
98 void TearDown() override { 77 void TearDown() override {
99 compositor_.reset(); 78 compositor_.reset();
100 surface_manager_.reset(); 79 compositor_dependencies_.reset();
101 } 80 }
102 81
103 ~BlimpCompositorTest() override {} 82 ~BlimpCompositorTest() override {}
104 83
105 void SendInitializeMessage() { 84 void SendInitializeMessage() {
106 std::unique_ptr<cc::proto::CompositorMessage> message; 85 std::unique_ptr<cc::proto::CompositorMessage> message;
107 message.reset(new cc::proto::CompositorMessage); 86 message.reset(new cc::proto::CompositorMessage);
108 cc::proto::CompositorMessageToImpl* to_impl = 87 cc::proto::CompositorMessageToImpl* to_impl =
109 message->mutable_to_impl(); 88 message->mutable_to_impl();
110 to_impl->set_message_type( 89 to_impl->set_message_type(
111 cc::proto::CompositorMessageToImpl::INITIALIZE_IMPL); 90 cc::proto::CompositorMessageToImpl::INITIALIZE_IMPL);
112 cc::proto::InitializeImpl* initialize_message = 91 cc::proto::InitializeImpl* initialize_message =
113 to_impl->mutable_initialize_impl_message(); 92 to_impl->mutable_initialize_impl_message();
114 cc::LayerTreeSettings settings; 93 cc::LayerTreeSettings settings;
115 settings.ToProtobuf(initialize_message->mutable_layer_tree_settings()); 94 settings.ToProtobuf(initialize_message->mutable_layer_tree_settings());
116 compositor_->OnCompositorMessageReceived(std::move(message)); 95 compositor_->OnCompositorMessageReceived(std::move(message));
117 } 96 }
118 97
119 void SendShutdownMessage() { 98 void SendShutdownMessage() {
120 std::unique_ptr<cc::proto::CompositorMessage> message; 99 std::unique_ptr<cc::proto::CompositorMessage> message;
121 message.reset(new cc::proto::CompositorMessage); 100 message.reset(new cc::proto::CompositorMessage);
122 cc::proto::CompositorMessageToImpl* to_impl = 101 cc::proto::CompositorMessageToImpl* to_impl =
123 message->mutable_to_impl(); 102 message->mutable_to_impl();
124 to_impl->set_message_type(cc::proto::CompositorMessageToImpl::CLOSE_IMPL); 103 to_impl->set_message_type(cc::proto::CompositorMessageToImpl::CLOSE_IMPL);
125 compositor_->OnCompositorMessageReceived(std::move(message)); 104 compositor_->OnCompositorMessageReceived(std::move(message));
126 } 105 }
127 106
128 int render_widget_id_; 107 int render_widget_id_;
129 std::unique_ptr<cc::SurfaceManager> surface_manager_;
130 uint32_t surface_client_id_ = 1;
131 std::unique_ptr<base::MessageLoop> loop_; 108 std::unique_ptr<base::MessageLoop> loop_;
132 MockBlimpCompositorClient compositor_client_; 109 MockBlimpCompositorClient compositor_client_;
110 std::unique_ptr<BlimpCompositorDependencies> compositor_dependencies_;
133 std::unique_ptr<BlimpCompositorForTesting> compositor_; 111 std::unique_ptr<BlimpCompositorForTesting> compositor_;
112 BlobImageSerializationProcessor blob_image_serialization_processor_;
134 }; 113 };
135 114
136 TEST_F(BlimpCompositorTest, ToggleVisibilityWithHost) { 115 TEST_F(BlimpCompositorTest, ToggleVisibilityWithHost) {
137 // Make the compositor visible when we don't have a host. 116 // Make the compositor visible when we don't have a host.
138 compositor_->SetVisible(true); 117 compositor_->SetVisible(true);
139 SendInitializeMessage(); 118 SendInitializeMessage();
140 119
141 // Check that the visibility is set correctly on the host. 120 // Check that the visibility is set correctly on the host.
142 EXPECT_NE(compositor_->host(), nullptr); 121 EXPECT_NE(compositor_->host(), nullptr);
143 EXPECT_TRUE(compositor_->host()->visible()); 122 EXPECT_TRUE(compositor_->host()->visible());
(...skipping 24 matching lines...) Expand all
168 MockableSendCompositorMessage(render_widget_id_)).Times(1); 147 MockableSendCompositorMessage(render_widget_id_)).Times(1);
169 EXPECT_CALL(compositor_client_, 148 EXPECT_CALL(compositor_client_,
170 MockableSendWebGestureEvent(render_widget_id_)).Times(1); 149 MockableSendWebGestureEvent(render_widget_id_)).Times(1);
171 150
172 compositor_->SendProto(cc::proto::CompositorMessage()); 151 compositor_->SendProto(cc::proto::CompositorMessage());
173 compositor_->SendGestureEvent(blink::WebGestureEvent()); 152 compositor_->SendGestureEvent(blink::WebGestureEvent());
174 } 153 }
175 154
176 } // namespace client 155 } // namespace client
177 } // namespace blimp 156 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698