OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "cc/layer_tree_host.h" | 5 #include "cc/layer_tree_host.h" |
6 | 6 |
7 #include "cc/delegated_frame_data.h" | 7 #include "cc/delegated_frame_data.h" |
8 #include "cc/delegated_renderer_layer.h" | 8 #include "cc/delegated_renderer_layer.h" |
9 #include "cc/delegated_renderer_layer_impl.h" | 9 #include "cc/delegated_renderer_layer_impl.h" |
10 #include "cc/layer_tree_impl.h" | 10 #include "cc/layer_tree_impl.h" |
11 #include "cc/test/layer_tree_test_common.h" | 11 #include "cc/test/layer_tree_test_common.h" |
12 #include "gpu/GLES2/gl2extchromium.h" | 12 #include "gpu/GLES2/gl2extchromium.h" |
13 | 13 |
14 namespace cc { | 14 namespace cc { |
15 namespace { | 15 namespace { |
16 | 16 |
17 // These tests deal with delegated renderer layers. | 17 // These tests deal with delegated renderer layers. |
18 class LayerTreeHostDelegatedTest : public ThreadedTest { | 18 class LayerTreeHostDelegatedTest : public ThreadedTest { |
19 protected: | 19 protected: |
20 class TestDelegatedRendererLayer : public DelegatedRendererLayer { | |
21 public: | |
22 static scoped_refptr<DelegatedRendererLayer> Create( | |
23 LayerTreeHostDelegatedTest* test) { | |
24 return new TestDelegatedRendererLayer(test); | |
25 } | |
26 | |
27 virtual void update(ResourceUpdateQueue& queue, | |
28 const OcclusionTracker* occlusion, | |
29 RenderingStats* stats) OVERRIDE { | |
30 DelegatedRendererLayer::update(queue, occlusion, stats); | |
31 test_->UpdateDelegatedLayer(this); | |
32 | |
33 } | |
34 protected: | |
35 explicit TestDelegatedRendererLayer(LayerTreeHostDelegatedTest* test) | |
36 : DelegatedRendererLayer(), | |
37 test_(test) {} | |
38 virtual ~TestDelegatedRendererLayer() {} | |
39 LayerTreeHostDelegatedTest* test_; | |
40 }; | |
41 | |
42 // Called by each delegated renderer layer when update is called on it. | |
43 virtual void UpdateDelegatedLayer(TestDelegatedRendererLayer* layer) {} | |
44 | |
45 scoped_ptr<DelegatedFrameData> CreateFrameData(gfx::Rect root_output_rect, | 20 scoped_ptr<DelegatedFrameData> CreateFrameData(gfx::Rect root_output_rect, |
46 gfx::Rect root_damage_rect) { | 21 gfx::Rect root_damage_rect) { |
47 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); | 22 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); |
48 | 23 |
49 scoped_ptr<RenderPass> root_pass(RenderPass::Create()); | 24 scoped_ptr<RenderPass> root_pass(RenderPass::Create()); |
50 root_pass->SetNew(RenderPass::Id(1, 1), | 25 root_pass->SetNew(RenderPass::Id(1, 1), |
51 root_output_rect, | 26 root_output_rect, |
52 root_damage_rect, | 27 root_damage_rect, |
53 gfx::Transform()); | 28 gfx::Transform()); |
54 frame->render_pass_list.push_back(root_pass.Pass()); | 29 frame->render_pass_list.push_back(root_pass.Pass()); |
55 return frame.Pass(); | 30 return frame.Pass(); |
56 } | 31 } |
57 | 32 |
58 scoped_ptr<DelegatedFrameData> CreateEmptyFrameData() { | 33 scoped_ptr<DelegatedFrameData> CreateEmptyFrameData() { |
59 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); | 34 scoped_ptr<DelegatedFrameData> frame(new DelegatedFrameData); |
60 return frame.Pass(); | 35 return frame.Pass(); |
61 } | 36 } |
62 }; | 37 }; |
63 | 38 |
64 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer | 39 class LayerTreeHostDelegatedTestCaseSingleDelegatedLayer |
65 : public LayerTreeHostDelegatedTest { | 40 : public LayerTreeHostDelegatedTest { |
66 public: | 41 public: |
67 virtual void setupTree() OVERRIDE { | 42 virtual void setupTree() OVERRIDE { |
68 root_ = Layer::create(); | 43 root_ = Layer::create(); |
69 root_->setAnchorPoint(gfx::PointF()); | 44 root_->setAnchorPoint(gfx::PointF()); |
70 root_->setBounds(gfx::Size(10, 10)); | 45 root_->setBounds(gfx::Size(10, 10)); |
71 | 46 |
72 delegated_ = TestDelegatedRendererLayer::Create(this); | 47 delegated_ = DelegatedRendererLayer::Create(); |
73 delegated_->setAnchorPoint(gfx::PointF()); | 48 delegated_->setAnchorPoint(gfx::PointF()); |
74 delegated_->setBounds(gfx::Size(10, 10)); | 49 delegated_->setBounds(gfx::Size(10, 10)); |
75 delegated_->setIsDrawable(true); | 50 delegated_->setIsDrawable(true); |
76 | 51 |
77 root_->addChild(delegated_); | 52 root_->addChild(delegated_); |
78 m_layerTreeHost->setRootLayer(root_); | 53 m_layerTreeHost->setRootLayer(root_); |
79 LayerTreeHostDelegatedTest::setupTree(); | 54 LayerTreeHostDelegatedTest::setupTree(); |
80 } | 55 } |
81 | 56 |
82 virtual void beginTest() OVERRIDE { | 57 virtual void beginTest() OVERRIDE { |
83 postSetNeedsCommitToMainThread(); | 58 postSetNeedsCommitToMainThread(); |
84 } | 59 } |
85 | 60 |
86 virtual void afterTest() OVERRIDE {} | 61 virtual void afterTest() OVERRIDE {} |
87 | 62 |
88 protected: | 63 protected: |
89 scoped_refptr<Layer> root_; | 64 scoped_refptr<Layer> root_; |
90 scoped_refptr<DelegatedRendererLayer> delegated_; | 65 scoped_refptr<DelegatedRendererLayer> delegated_; |
91 }; | 66 }; |
92 | 67 |
93 class LayerTreeHostDelegatedTestCreateChildId | 68 class LayerTreeHostDelegatedTestCreateChildId |
94 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 69 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
95 public: | 70 public: |
96 LayerTreeHostDelegatedTestCreateChildId() | 71 LayerTreeHostDelegatedTestCreateChildId() |
97 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 72 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
98 num_activates_(0), | 73 num_activates_(0), |
99 did_reset_child_id_(false) {} | 74 did_reset_child_id_(false) {} |
100 | 75 |
101 virtual void UpdateDelegatedLayer(TestDelegatedRendererLayer* layer) | 76 virtual void didCommit() OVERRIDE { |
102 OVERRIDE { | |
103 if (testEnded()) | 77 if (testEnded()) |
104 return; | 78 return; |
105 layer->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), | 79 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), |
106 gfx::Rect(0, 0, 1, 1))); | 80 gfx::Rect(0, 0, 1, 1))); |
107 } | 81 } |
108 | 82 |
109 virtual void treeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { | 83 virtual void treeActivatedOnThread(LayerTreeHostImpl* host_impl) OVERRIDE { |
110 LayerImpl* root_impl = host_impl->activeTree()->RootLayer(); | 84 LayerImpl* root_impl = host_impl->activeTree()->RootLayer(); |
111 DelegatedRendererLayerImpl* delegated_impl = | 85 DelegatedRendererLayerImpl* delegated_impl = |
112 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]); | 86 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]); |
113 | 87 |
114 ++num_activates_; | 88 ++num_activates_; |
115 switch(num_activates_) { | 89 switch(num_activates_) { |
116 case 1: | 90 case 2: |
117 EXPECT_TRUE(delegated_impl->child_id()); | 91 EXPECT_TRUE(delegated_impl->child_id()); |
118 EXPECT_FALSE(did_reset_child_id_); | 92 EXPECT_FALSE(did_reset_child_id_); |
119 | 93 |
120 host_impl->resourceProvider()->graphicsContext3D()->loseContextCHROMIUM( | 94 host_impl->resourceProvider()->graphicsContext3D()->loseContextCHROMIUM( |
121 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); | 95 GL_GUILTY_CONTEXT_RESET_ARB, GL_INNOCENT_CONTEXT_RESET_ARB); |
122 break; | 96 break; |
123 case 2: | 97 case 3: |
124 EXPECT_TRUE(delegated_impl->child_id()); | 98 EXPECT_TRUE(delegated_impl->child_id()); |
125 EXPECT_TRUE(did_reset_child_id_); | 99 EXPECT_TRUE(did_reset_child_id_); |
126 endTest(); | 100 endTest(); |
127 break; | 101 break; |
128 } | 102 } |
129 } | 103 } |
130 | 104 |
131 virtual void initializedRendererOnThread(LayerTreeHostImpl* host_impl, | 105 virtual void initializedRendererOnThread(LayerTreeHostImpl* host_impl, |
132 bool success) OVERRIDE { | 106 bool success) OVERRIDE { |
133 EXPECT_TRUE(success); | 107 EXPECT_TRUE(success); |
134 | 108 |
135 if (!num_activates_) | 109 if (num_activates_ < 2) |
136 return; | 110 return; |
137 | 111 |
138 LayerImpl* root_impl = host_impl->activeTree()->RootLayer(); | 112 LayerImpl* root_impl = host_impl->activeTree()->RootLayer(); |
139 DelegatedRendererLayerImpl* delegated_impl = | 113 DelegatedRendererLayerImpl* delegated_impl = |
140 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]); | 114 static_cast<DelegatedRendererLayerImpl*>(root_impl->children()[0]); |
141 | 115 |
142 EXPECT_EQ(1, num_activates_); | 116 EXPECT_EQ(2, num_activates_); |
143 EXPECT_FALSE(delegated_impl->child_id()); | 117 EXPECT_FALSE(delegated_impl->child_id()); |
144 did_reset_child_id_ = true; | 118 did_reset_child_id_ = true; |
145 } | 119 } |
146 | 120 |
147 virtual void afterTest() OVERRIDE {} | 121 virtual void afterTest() OVERRIDE {} |
148 | 122 |
149 protected: | 123 protected: |
150 int num_activates_; | 124 int num_activates_; |
151 bool did_reset_child_id_; | 125 bool did_reset_child_id_; |
152 }; | 126 }; |
153 | 127 |
154 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId) | 128 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestCreateChildId) |
155 | 129 |
156 class LayerTreeHostDelegatedTestLayerUsesFrameDamage | 130 class LayerTreeHostDelegatedTestLayerUsesFrameDamage |
157 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { | 131 : public LayerTreeHostDelegatedTestCaseSingleDelegatedLayer { |
158 public: | 132 public: |
159 LayerTreeHostDelegatedTestLayerUsesFrameDamage() | 133 LayerTreeHostDelegatedTestLayerUsesFrameDamage() |
160 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), | 134 : LayerTreeHostDelegatedTestCaseSingleDelegatedLayer(), |
161 first_draw_for_source_frame_(true) {} | 135 first_draw_for_source_frame_(true) {} |
162 | 136 |
163 virtual void didCommit() OVERRIDE { | 137 virtual void didCommit() OVERRIDE { |
164 int next_source_frame_number = m_layerTreeHost->commitNumber(); | 138 int next_source_frame_number = m_layerTreeHost->commitNumber(); |
165 switch (next_source_frame_number) { | 139 switch (next_source_frame_number) { |
166 case 1: | 140 case 1: |
| 141 // The first time the layer gets a frame the whole layer should be |
| 142 // damaged. |
| 143 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 1, 1), |
| 144 gfx::Rect(0, 0, 1, 1))); |
| 145 break; |
| 146 case 2: |
167 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage. | 147 // Should create a total amount of gfx::Rect(2, 2, 10, 6) damage. |
168 // The frame size is 20x20 while the layer is 10x10, so this should | 148 // The frame size is 20x20 while the layer is 10x10, so this should |
169 // produce a gfx::Rect(1, 1, 5, 3) damage rect. | 149 // produce a gfx::Rect(1, 1, 5, 3) damage rect. |
170 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), | 150 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), |
171 gfx::Rect(2, 2, 5, 5))); | 151 gfx::Rect(2, 2, 5, 5))); |
172 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), | 152 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 20, 20), |
173 gfx::Rect(7, 2, 5, 6))); | 153 gfx::Rect(7, 2, 5, 6))); |
174 break; | 154 break; |
175 case 2: | 155 case 3: |
176 // Should create zero damage. | 156 // Should create zero damage. |
177 m_layerTreeHost->setNeedsCommit(); | 157 m_layerTreeHost->setNeedsCommit(); |
178 break; | 158 break; |
179 case 3: | 159 case 4: |
180 // Should damage the full viewport. | 160 // Should damage the full viewport. |
181 delegated_->setBounds(gfx::Size(2, 2)); | 161 delegated_->setBounds(gfx::Size(2, 2)); |
182 break; | 162 break; |
183 case 4: | 163 case 5: |
184 // Should create zero damage. | 164 // Should create zero damage. |
185 m_layerTreeHost->setNeedsCommit(); | 165 m_layerTreeHost->setNeedsCommit(); |
186 break; | 166 break; |
187 case 5: | 167 case 6: |
188 // Should damage the full layer. | 168 // Should damage the full layer. |
189 delegated_->setBounds(gfx::Size(6, 6)); | 169 delegated_->setBounds(gfx::Size(6, 6)); |
190 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), | 170 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), |
191 gfx::Rect(1, 1, 2, 2))); | 171 gfx::Rect(1, 1, 2, 2))); |
192 break; | 172 break; |
193 case 6: | 173 case 7: |
194 // Should create zero damage. | 174 // Should create zero damage. |
195 m_layerTreeHost->setNeedsCommit(); | 175 m_layerTreeHost->setNeedsCommit(); |
196 break; | 176 break; |
197 case 7: | 177 case 8: |
198 // Should damage the full layer. | 178 // Should damage the full layer. |
199 delegated_->SetDisplaySize(gfx::Size(10, 10)); | 179 delegated_->SetDisplaySize(gfx::Size(10, 10)); |
200 break; | 180 break; |
201 case 8: | 181 case 9: |
202 // Should create zero damage. | 182 // Should create zero damage. |
203 m_layerTreeHost->setNeedsCommit(); | 183 m_layerTreeHost->setNeedsCommit(); |
204 break; | 184 break; |
205 case 9: | 185 case 10: |
206 // Setting an empty frame should damage the whole layer the | 186 // Setting an empty frame should damage the whole layer the |
207 // first time. | 187 // first time. |
208 delegated_->SetFrameData(CreateEmptyFrameData()); | 188 delegated_->SetFrameData(CreateEmptyFrameData()); |
209 break; | 189 break; |
210 case 10: | 190 case 11: |
211 // Setting an empty frame shouldn't damage anything after the | 191 // Setting an empty frame shouldn't damage anything after the |
212 // first time. | 192 // first time. |
213 delegated_->SetFrameData(CreateEmptyFrameData()); | 193 delegated_->SetFrameData(CreateEmptyFrameData()); |
214 break; | 194 break; |
215 case 11: | 195 case 12: |
| 196 // Having valid content to display agains should damage the whole layer. |
| 197 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 10, 10), |
| 198 gfx::Rect(5, 5, 1, 1))); |
| 199 break; |
| 200 case 13: |
216 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is | 201 // Should create gfx::Rect(1, 1, 2, 2) of damage. The frame size is |
217 // 5x5 and the display size is now set to 10x10, so this should result | 202 // 5x5 and the display size is now set to 10x10, so this should result |
218 // in a gfx::Rect(2, 2, 4, 4) damage rect. | 203 // in a gfx::Rect(2, 2, 4, 4) damage rect. |
219 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), | 204 delegated_->SetFrameData(CreateFrameData(gfx::Rect(0, 0, 5, 5), |
220 gfx::Rect(1, 1, 2, 2))); | 205 gfx::Rect(1, 1, 2, 2))); |
221 break; | 206 break; |
222 case 12: | 207 case 14: |
223 // Should create zero damage. | 208 // Should create zero damage. |
224 m_layerTreeHost->setNeedsCommit(); | 209 m_layerTreeHost->setNeedsCommit(); |
225 break; | 210 break; |
226 } | 211 } |
227 first_draw_for_source_frame_ = true; | 212 first_draw_for_source_frame_ = true; |
228 } | 213 } |
229 | 214 |
230 virtual bool prepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 215 virtual bool prepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
231 LayerTreeHostImpl::FrameData& frame, | 216 LayerTreeHostImpl::FrameData& frame, |
232 bool result) { | 217 bool result) { |
233 EXPECT_TRUE(result); | 218 EXPECT_TRUE(result); |
234 | 219 |
235 if (!first_draw_for_source_frame_) | 220 if (!first_draw_for_source_frame_) |
236 return result; | 221 return result; |
237 | 222 |
238 gfx::RectF damage_rect = frame.renderPasses.back()->damage_rect; | 223 gfx::RectF damage_rect = frame.renderPasses.back()->damage_rect; |
239 | 224 |
240 switch (host_impl->activeTree()->source_frame_number()) { | 225 switch (host_impl->activeTree()->source_frame_number()) { |
241 case 0: | 226 case 0: |
| 227 // Before the layer has a frame to display it should not |
| 228 // be visible at all, and not damage anything. |
| 229 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
| 230 damage_rect.ToString()); |
| 231 break; |
| 232 case 1: |
242 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), | 233 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
243 damage_rect.ToString()); | 234 damage_rect.ToString()); |
244 break; | 235 break; |
245 case 1: | 236 case 2: |
246 EXPECT_EQ(gfx::RectF(1.f, 1.f, 5.f, 3.f).ToString(), | 237 EXPECT_EQ(gfx::RectF(1.f, 1.f, 5.f, 3.f).ToString(), |
247 damage_rect.ToString()); | 238 damage_rect.ToString()); |
248 break; | 239 break; |
249 case 2: | 240 case 3: |
250 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 241 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
251 damage_rect.ToString()); | 242 damage_rect.ToString()); |
252 break; | 243 break; |
253 case 3: | 244 case 4: |
254 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), | 245 EXPECT_EQ(gfx::RectF(0.f, 0.f, 10.f, 10.f).ToString(), |
255 damage_rect.ToString()); | 246 damage_rect.ToString()); |
256 break; | 247 break; |
257 case 4: | 248 case 5: |
258 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 249 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
259 damage_rect.ToString()); | 250 damage_rect.ToString()); |
260 break; | 251 break; |
261 case 5: | 252 case 6: |
262 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 253 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), |
263 damage_rect.ToString()); | 254 damage_rect.ToString()); |
264 break; | 255 break; |
265 case 6: | 256 case 7: |
266 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 257 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
267 damage_rect.ToString()); | 258 damage_rect.ToString()); |
268 break; | 259 break; |
269 case 7: | 260 case 8: |
270 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 261 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), |
271 damage_rect.ToString()); | 262 damage_rect.ToString()); |
272 break; | 263 break; |
273 case 8: | 264 case 9: |
274 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 265 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
275 damage_rect.ToString()); | 266 damage_rect.ToString()); |
276 break; | 267 break; |
277 case 9: | 268 case 10: |
278 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), | 269 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), |
279 damage_rect.ToString()); | 270 damage_rect.ToString()); |
280 break; | 271 break; |
281 case 10: | 272 case 11: |
282 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 273 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
283 damage_rect.ToString()); | 274 damage_rect.ToString()); |
284 break; | 275 break; |
285 case 11: | 276 case 12: |
| 277 EXPECT_EQ(gfx::RectF(0.f, 0.f, 6.f, 6.f).ToString(), |
| 278 damage_rect.ToString()); |
| 279 break; |
| 280 case 13: |
286 EXPECT_EQ(gfx::RectF(2.f, 2.f, 4.f, 4.f).ToString(), | 281 EXPECT_EQ(gfx::RectF(2.f, 2.f, 4.f, 4.f).ToString(), |
287 damage_rect.ToString()); | 282 damage_rect.ToString()); |
288 break; | 283 break; |
289 case 12: | 284 case 14: |
290 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), | 285 EXPECT_EQ(gfx::RectF(0.f, 0.f, 0.f, 0.f).ToString(), |
291 damage_rect.ToString()); | 286 damage_rect.ToString()); |
292 endTest(); | 287 endTest(); |
293 break; | 288 break; |
294 } | 289 } |
295 | 290 |
296 return result; | 291 return result; |
297 } | 292 } |
298 | 293 |
299 protected: | 294 protected: |
300 bool first_draw_for_source_frame_; | 295 bool first_draw_for_source_frame_; |
301 }; | 296 }; |
302 | 297 |
303 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage) | 298 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDelegatedTestLayerUsesFrameDamage) |
304 | 299 |
305 } // namespace | 300 } // namespace |
306 } // namespace cc | 301 } // namespace cc |
OLD | NEW |