OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/trees/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include "cc/test/fake_content_layer.h" | 7 #include "cc/test/fake_content_layer.h" |
8 #include "cc/test/fake_content_layer_client.h" | 8 #include "cc/test/fake_content_layer_client.h" |
9 #include "cc/test/layer_tree_test.h" | 9 #include "cc/test/layer_tree_test.h" |
10 #include "cc/trees/damage_tracker.h" | 10 #include "cc/trees/damage_tracker.h" |
(...skipping 13 matching lines...) Expand all Loading... |
24 did_swap_and_succeed_ = 0; | 24 did_swap_and_succeed_ = 0; |
25 PostSetNeedsCommitToMainThread(); | 25 PostSetNeedsCommitToMainThread(); |
26 } | 26 } |
27 | 27 |
28 virtual void SetupTree() OVERRIDE { | 28 virtual void SetupTree() OVERRIDE { |
29 scoped_refptr<FakeContentLayer> root = FakeContentLayer::Create(&client_); | 29 scoped_refptr<FakeContentLayer> root = FakeContentLayer::Create(&client_); |
30 root->SetBounds(gfx::Size(10, 10)); | 30 root->SetBounds(gfx::Size(10, 10)); |
31 | 31 |
32 // Most of the layer isn't visible. | 32 // Most of the layer isn't visible. |
33 content_ = FakeContentLayer::Create(&client_); | 33 content_ = FakeContentLayer::Create(&client_); |
34 content_->SetBounds(gfx::Size(100, 100)); | 34 content_->SetBounds(gfx::Size(2000, 100)); |
35 root->AddChild(content_); | 35 root->AddChild(content_); |
36 | 36 |
37 layer_tree_host()->SetRootLayer(root); | 37 layer_tree_host()->SetRootLayer(root); |
38 LayerTreeHostDamageTest::SetupTree(); | 38 LayerTreeHostDamageTest::SetupTree(); |
39 } | 39 } |
40 | 40 |
41 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 41 virtual bool PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
42 LayerTreeHostImpl::FrameData* frame_data, | 42 LayerTreeHostImpl::FrameData* frame_data, |
43 bool result) OVERRIDE { | 43 bool result) OVERRIDE { |
44 EXPECT_TRUE(result); | 44 EXPECT_TRUE(result); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
79 case 1: | 79 case 1: |
80 layer_tree_host()->SetNeedsCommit(); | 80 layer_tree_host()->SetNeedsCommit(); |
81 break; | 81 break; |
82 case 2: | 82 case 2: |
83 // Cause visible damage. | 83 // Cause visible damage. |
84 content_->SetNeedsDisplayRect( | 84 content_->SetNeedsDisplayRect( |
85 gfx::Rect(layer_tree_host()->device_viewport_size())); | 85 gfx::Rect(layer_tree_host()->device_viewport_size())); |
86 break; | 86 break; |
87 case 3: | 87 case 3: |
88 // Cause non-visible damage. | 88 // Cause non-visible damage. |
89 content_->SetNeedsDisplayRect(gfx::Rect(90, 90, 10, 10)); | 89 content_->SetNeedsDisplayRect(gfx::Rect(1990, 1990, 10, 10)); |
90 break; | 90 break; |
91 } | 91 } |
92 } | 92 } |
93 | 93 |
94 virtual void AfterTest() OVERRIDE { | 94 virtual void AfterTest() OVERRIDE { |
95 EXPECT_EQ(4, did_swaps_); | 95 EXPECT_EQ(4, did_swaps_); |
96 EXPECT_EQ(2, expect_swap_and_succeed_); | 96 EXPECT_EQ(2, expect_swap_and_succeed_); |
97 EXPECT_EQ(expect_swap_and_succeed_, did_swap_and_succeed_); | 97 EXPECT_EQ(expect_swap_and_succeed_, did_swap_and_succeed_); |
98 } | 98 } |
99 | 99 |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 case 2: | 222 case 2: |
223 // The whole frame should be damaged as requested. | 223 // The whole frame should be damaged as requested. |
224 EXPECT_EQ(gfx::RectF(root_surface->content_rect()).ToString(), | 224 EXPECT_EQ(gfx::RectF(root_surface->content_rect()).ToString(), |
225 root_damage.ToString()); | 225 root_damage.ToString()); |
226 EXPECT_FALSE(frame_data->has_no_damage); | 226 EXPECT_FALSE(frame_data->has_no_damage); |
227 | 227 |
228 // Just a part of the next frame should be damaged. | 228 // Just a part of the next frame should be damaged. |
229 child_damage_rect_ = gfx::RectF(10, 11, 12, 13); | 229 child_damage_rect_ = gfx::RectF(10, 11, 12, 13); |
230 break; | 230 break; |
231 case 3: | 231 case 3: |
232 // The update rect in the child should be damaged. | 232 if (!delegating_renderer()) { |
233 EXPECT_EQ(gfx::RectF(100+10, 100+11, 12, 13).ToString(), | 233 // The update rect in the child should be damaged. |
234 root_damage.ToString()); | 234 EXPECT_EQ(gfx::RectF(100+10, 100+11, 12, 13).ToString(), |
| 235 root_damage.ToString()); |
| 236 } else { |
| 237 // When using a delegating renderer, the entire child is considered |
| 238 // damaged as we need to replace its resources with newly created |
| 239 // ones. |
| 240 EXPECT_EQ(gfx::RectF(child_->position(), child_->bounds()).ToString(), |
| 241 root_damage.ToString()); |
| 242 } |
235 EXPECT_FALSE(frame_data->has_no_damage); | 243 EXPECT_FALSE(frame_data->has_no_damage); |
236 | 244 |
237 // If we damage part of the frame, but also damage the full | 245 // If we damage part of the frame, but also damage the full |
238 // frame, then the whole frame should be damaged. | 246 // frame, then the whole frame should be damaged. |
239 child_damage_rect_ = gfx::RectF(10, 11, 12, 13); | 247 child_damage_rect_ = gfx::RectF(10, 11, 12, 13); |
240 host_impl->SetFullRootLayerDamage(); | 248 host_impl->SetFullRootLayerDamage(); |
241 break; | 249 break; |
242 case 4: | 250 case 4: |
243 // The whole frame is damaged. | 251 // The whole frame is damaged. |
244 EXPECT_EQ(gfx::RectF(root_surface->content_rect()).ToString(), | 252 EXPECT_EQ(gfx::RectF(root_surface->content_rect()).ToString(), |
(...skipping 21 matching lines...) Expand all Loading... |
266 FakeContentLayerClient client_; | 274 FakeContentLayerClient client_; |
267 scoped_refptr<FakeContentLayer> root_; | 275 scoped_refptr<FakeContentLayer> root_; |
268 scoped_refptr<FakeContentLayer> child_; | 276 scoped_refptr<FakeContentLayer> child_; |
269 gfx::RectF child_damage_rect_; | 277 gfx::RectF child_damage_rect_; |
270 }; | 278 }; |
271 | 279 |
272 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestForcedFullDamage); | 280 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestForcedFullDamage); |
273 | 281 |
274 } // namespace | 282 } // namespace |
275 } // namespace cc | 283 } // namespace cc |
OLD | NEW |