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

Side by Side Diff: cc/layers/surface_layer_unittest.cc

Issue 2661523003: cc: Merge LayerTree into the LayerTreeHost. (Closed)
Patch Set: auto Created 3 years, 10 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
« no previous file with comments | « cc/layers/scrollbar_layer_unittest.cc ('k') | cc/layers/texture_layer_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 21 matching lines...) Expand all
32 namespace { 32 namespace {
33 33
34 static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1); 34 static constexpr FrameSinkId kArbitraryFrameSinkId(1, 1);
35 35
36 class SurfaceLayerTest : public testing::Test { 36 class SurfaceLayerTest : public testing::Test {
37 protected: 37 protected:
38 void SetUp() override { 38 void SetUp() override {
39 animation_host_ = AnimationHost::CreateForTesting(ThreadInstance::MAIN); 39 animation_host_ = AnimationHost::CreateForTesting(ThreadInstance::MAIN);
40 layer_tree_host_ = FakeLayerTreeHost::Create( 40 layer_tree_host_ = FakeLayerTreeHost::Create(
41 &fake_client_, &task_graph_runner_, animation_host_.get()); 41 &fake_client_, &task_graph_runner_, animation_host_.get());
42 layer_tree_ = layer_tree_host_->GetLayerTree(); 42 layer_tree_host_->SetViewportSize(gfx::Size(10, 10));
43 layer_tree_->SetViewportSize(gfx::Size(10, 10));
44 } 43 }
45 44
46 void TearDown() override { 45 void TearDown() override {
47 if (layer_tree_host_) { 46 if (layer_tree_host_) {
48 layer_tree_->SetRootLayer(nullptr); 47 layer_tree_host_->SetRootLayer(nullptr);
49 layer_tree_host_ = nullptr; 48 layer_tree_host_ = nullptr;
50 } 49 }
51 } 50 }
52 51
53 FakeLayerTreeHostClient fake_client_; 52 FakeLayerTreeHostClient fake_client_;
54 TestTaskGraphRunner task_graph_runner_; 53 TestTaskGraphRunner task_graph_runner_;
55 std::unique_ptr<AnimationHost> animation_host_; 54 std::unique_ptr<AnimationHost> animation_host_;
56 std::unique_ptr<FakeLayerTreeHost> layer_tree_host_; 55 std::unique_ptr<FakeLayerTreeHost> layer_tree_host_;
57 LayerTree* layer_tree_;
58 }; 56 };
59 57
60 class TestSurfaceReferenceFactory : public SequenceSurfaceReferenceFactory { 58 class TestSurfaceReferenceFactory : public SequenceSurfaceReferenceFactory {
61 protected: 59 protected:
62 void SatisfySequence(const SurfaceSequence& seq) const override { 60 void SatisfySequence(const SurfaceSequence& seq) const override {
63 *out_seq_ = seq; 61 *out_seq_ = seq;
64 } 62 }
65 63
66 void RequireSequence(const SurfaceId& id, 64 void RequireSequence(const SurfaceId& id,
67 const SurfaceSequence& seq) const override { 65 const SurfaceSequence& seq) const override {
(...skipping 30 matching lines...) Expand all
98 scoped_refptr<SurfaceReferenceFactory> ref_factory = 96 scoped_refptr<SurfaceReferenceFactory> ref_factory =
99 new TestSurfaceReferenceFactory(&blank_change, &required_id, 97 new TestSurfaceReferenceFactory(&blank_change, &required_id,
100 &required_seq); 98 &required_seq);
101 auto layer = SurfaceLayer::Create(ref_factory); 99 auto layer = SurfaceLayer::Create(ref_factory);
102 SurfaceInfo info( 100 SurfaceInfo info(
103 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f, 101 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
104 gfx::Size(1, 1)); 102 gfx::Size(1, 1));
105 layer->SetSurfaceInfo(info); 103 layer->SetSurfaceInfo(info);
106 layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id( 104 layer_tree_host_->GetSurfaceSequenceGenerator()->set_frame_sink_id(
107 FrameSinkId(1, 1)); 105 FrameSinkId(1, 1));
108 layer_tree_->SetRootLayer(layer); 106 layer_tree_host_->SetRootLayer(layer);
109 107
110 auto animation_host2 = AnimationHost::CreateForTesting(ThreadInstance::MAIN); 108 auto animation_host2 = AnimationHost::CreateForTesting(ThreadInstance::MAIN);
111 std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 = 109 std::unique_ptr<FakeLayerTreeHost> layer_tree_host2 =
112 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_, 110 FakeLayerTreeHost::Create(&fake_client_, &task_graph_runner_,
113 animation_host2.get()); 111 animation_host2.get());
114 auto layer2 = SurfaceLayer::Create(std::move(ref_factory)); 112 auto layer2 = SurfaceLayer::Create(std::move(ref_factory));
115 layer2->SetSurfaceInfo(info); 113 layer2->SetSurfaceInfo(info);
116 layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id( 114 layer_tree_host2->GetSurfaceSequenceGenerator()->set_frame_sink_id(
117 FrameSinkId(2, 2)); 115 FrameSinkId(2, 2));
118 layer_tree_host2->SetRootLayer(layer2); 116 layer_tree_host2->SetRootLayer(layer2);
(...skipping 14 matching lines...) Expand all
133 EXPECT_TRUE(blank_change == expected2); 131 EXPECT_TRUE(blank_change == expected2);
134 132
135 // Set of sequences that need to be satisfied should include sequences from 133 // Set of sequences that need to be satisfied should include sequences from
136 // both trees. 134 // both trees.
137 EXPECT_TRUE(required_id == SurfaceId(kArbitraryFrameSinkId, 135 EXPECT_TRUE(required_id == SurfaceId(kArbitraryFrameSinkId,
138 LocalFrameId(1, kArbitraryToken))); 136 LocalFrameId(1, kArbitraryToken)));
139 EXPECT_EQ(2u, required_seq.size()); 137 EXPECT_EQ(2u, required_seq.size());
140 EXPECT_TRUE(required_seq.count(expected1)); 138 EXPECT_TRUE(required_seq.count(expected1));
141 EXPECT_TRUE(required_seq.count(expected2)); 139 EXPECT_TRUE(required_seq.count(expected2));
142 140
143 layer_tree_->SetRootLayer(nullptr); 141 layer_tree_host_->SetRootLayer(nullptr);
144 layer_tree_host_.reset(); 142 layer_tree_host_.reset();
145 143
146 // Layer was removed so sequence from first LayerTreeHost should be 144 // Layer was removed so sequence from first LayerTreeHost should be
147 // satisfied. 145 // satisfied.
148 base::RunLoop().RunUntilIdle(); 146 base::RunLoop().RunUntilIdle();
149 EXPECT_TRUE(blank_change == expected1); 147 EXPECT_TRUE(blank_change == expected1);
150 148
151 // No more SurfaceSequences should have been generated that need to have be 149 // No more SurfaceSequences should have been generated that need to have be
152 // satisfied. 150 // satisfied.
153 EXPECT_EQ(2u, required_seq.size()); 151 EXPECT_EQ(2u, required_seq.size());
(...skipping 11 matching lines...) Expand all
165 layer_ = SurfaceLayer::Create(new TestSurfaceReferenceFactory( 163 layer_ = SurfaceLayer::Create(new TestSurfaceReferenceFactory(
166 &satisfied_sequence_, &required_id_, &required_set_)); 164 &satisfied_sequence_, &required_id_, &required_set_));
167 SurfaceInfo info( 165 SurfaceInfo info(
168 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f, 166 SurfaceId(kArbitraryFrameSinkId, LocalFrameId(1, kArbitraryToken)), 1.f,
169 gfx::Size(1, 1)); 167 gfx::Size(1, 1));
170 layer_->SetSurfaceInfo(info); 168 layer_->SetSurfaceInfo(info);
171 169
172 // Layer hasn't been added to tree so no SurfaceSequence generated yet. 170 // Layer hasn't been added to tree so no SurfaceSequence generated yet.
173 EXPECT_EQ(0u, required_set_.size()); 171 EXPECT_EQ(0u, required_set_.size());
174 172
175 layer_tree()->SetRootLayer(layer_); 173 layer_tree_host()->SetRootLayer(layer_);
176 174
177 // Should have SurfaceSequence from first tree. 175 // Should have SurfaceSequence from first tree.
178 SurfaceSequence expected(kArbitraryFrameSinkId, 1u); 176 SurfaceSequence expected(kArbitraryFrameSinkId, 1u);
179 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId, 177 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId,
180 LocalFrameId(1, kArbitraryToken))); 178 LocalFrameId(1, kArbitraryToken)));
181 EXPECT_EQ(1u, required_set_.size()); 179 EXPECT_EQ(1u, required_set_.size());
182 EXPECT_TRUE(required_set_.count(expected)); 180 EXPECT_TRUE(required_set_.count(expected));
183 181
184 gfx::Size bounds(100, 100); 182 gfx::Size bounds(100, 100);
185 layer_tree()->SetViewportSize(bounds); 183 layer_tree_host()->SetViewportSize(bounds);
186 184
187 blank_layer_ = SolidColorLayer::Create(); 185 blank_layer_ = SolidColorLayer::Create();
188 blank_layer_->SetIsDrawable(true); 186 blank_layer_->SetIsDrawable(true);
189 blank_layer_->SetBounds(gfx::Size(10, 10)); 187 blank_layer_->SetBounds(gfx::Size(10, 10));
190 188
191 PostSetNeedsCommitToMainThread(); 189 PostSetNeedsCommitToMainThread();
192 } 190 }
193 191
194 virtual void ChangeTree() = 0; 192 virtual void ChangeTree() = 0;
195 193
(...skipping 17 matching lines...) Expand all
213 }; 211 };
214 212
215 // Check that SurfaceSequence is sent through swap promise. 213 // Check that SurfaceSequence is sent through swap promise.
216 class SurfaceLayerSwapPromiseWithDraw : public SurfaceLayerSwapPromise { 214 class SurfaceLayerSwapPromiseWithDraw : public SurfaceLayerSwapPromise {
217 public: 215 public:
218 void ChangeTree() override { 216 void ChangeTree() override {
219 ++commit_count_; 217 ++commit_count_;
220 switch (commit_count_) { 218 switch (commit_count_) {
221 case 1: 219 case 1:
222 // Remove SurfaceLayer from tree to cause SwapPromise to be created. 220 // Remove SurfaceLayer from tree to cause SwapPromise to be created.
223 layer_tree()->SetRootLayer(blank_layer_); 221 layer_tree_host()->SetRootLayer(blank_layer_);
224 break; 222 break;
225 case 2: 223 case 2:
226 EndTest(); 224 EndTest();
227 break; 225 break;
228 default: 226 default:
229 NOTREACHED(); 227 NOTREACHED();
230 break; 228 break;
231 } 229 }
232 } 230 }
233 231
(...skipping 18 matching lines...) Expand all
252 LayerTreeHostImpl::FrameData* frame, 250 LayerTreeHostImpl::FrameData* frame,
253 DrawResult draw_result) override { 251 DrawResult draw_result) override {
254 return DRAW_ABORTED_MISSING_HIGH_RES_CONTENT; 252 return DRAW_ABORTED_MISSING_HIGH_RES_CONTENT;
255 } 253 }
256 254
257 void ChangeTree() override { 255 void ChangeTree() override {
258 ++commit_count_; 256 ++commit_count_;
259 switch (commit_count_) { 257 switch (commit_count_) {
260 case 1: 258 case 1:
261 // Remove SurfaceLayer from tree to cause SwapPromise to be created. 259 // Remove SurfaceLayer from tree to cause SwapPromise to be created.
262 layer_tree()->SetRootLayer(blank_layer_); 260 layer_tree_host()->SetRootLayer(blank_layer_);
263 break; 261 break;
264 case 2: 262 case 2:
265 layer_tree_host()->SetNeedsCommit(); 263 layer_tree_host()->SetNeedsCommit();
266 break; 264 break;
267 default: 265 default:
268 EndTest(); 266 EndTest();
269 break; 267 break;
270 } 268 }
271 } 269 }
272 270
273 void AfterTest() override { 271 void AfterTest() override {
274 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId, 272 EXPECT_TRUE(required_id_ == SurfaceId(kArbitraryFrameSinkId,
275 LocalFrameId(1, kArbitraryToken))); 273 LocalFrameId(1, kArbitraryToken)));
276 EXPECT_EQ(1u, required_set_.size()); 274 EXPECT_EQ(1u, required_set_.size());
277 EXPECT_TRUE(satisfied_sequence_ == 275 EXPECT_TRUE(satisfied_sequence_ ==
278 SurfaceSequence(kArbitraryFrameSinkId, 1u)); 276 SurfaceSequence(kArbitraryFrameSinkId, 1u));
279 } 277 }
280 }; 278 };
281 279
282 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw); 280 MULTI_THREAD_TEST_F(SurfaceLayerSwapPromiseWithoutDraw);
283 281
284 } // namespace 282 } // namespace
285 } // namespace cc 283 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/scrollbar_layer_unittest.cc ('k') | cc/layers/texture_layer_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698