| 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 "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/location.h" | 9 #include "base/location.h" |
| 10 #include "base/message_loop/message_loop_proxy.h" | 10 #include "base/message_loop/message_loop_proxy.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 namespace { | 21 namespace { |
| 22 | 22 |
| 23 // These tests deal with damage tracking. | 23 // These tests deal with damage tracking. |
| 24 class LayerTreeHostDamageTest : public LayerTreeTest {}; | 24 class LayerTreeHostDamageTest : public LayerTreeTest {}; |
| 25 | 25 |
| 26 // LayerTreeHost::SetNeedsRedraw should damage the whole viewport. | 26 // LayerTreeHost::SetNeedsRedraw should damage the whole viewport. |
| 27 class LayerTreeHostDamageTestSetNeedsRedraw | 27 class LayerTreeHostDamageTestSetNeedsRedraw |
| 28 : public LayerTreeHostDamageTest { | 28 : public LayerTreeHostDamageTest { |
| 29 void SetupTree() override { | 29 void SetupTree() override { |
| 30 // Viewport is 10x10. | 30 // Viewport is 10x10. |
| 31 scoped_refptr<FakeContentLayer> root = FakeContentLayer::Create(&client_); | 31 scoped_refptr<FakeContentLayer> root = |
| 32 FakeContentLayer::Create(layer_settings(), &client_); |
| 32 root->SetBounds(gfx::Size(10, 10)); | 33 root->SetBounds(gfx::Size(10, 10)); |
| 33 | 34 |
| 34 layer_tree_host()->SetRootLayer(root); | 35 layer_tree_host()->SetRootLayer(root); |
| 35 LayerTreeHostDamageTest::SetupTree(); | 36 LayerTreeHostDamageTest::SetupTree(); |
| 36 } | 37 } |
| 37 | 38 |
| 38 void BeginTest() override { | 39 void BeginTest() override { |
| 39 draw_count_ = 0; | 40 draw_count_ = 0; |
| 40 PostSetNeedsCommitToMainThread(); | 41 PostSetNeedsCommitToMainThread(); |
| 41 } | 42 } |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 82 FakeContentLayerClient client_; | 83 FakeContentLayerClient client_; |
| 83 }; | 84 }; |
| 84 | 85 |
| 85 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestSetNeedsRedraw); | 86 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestSetNeedsRedraw); |
| 86 | 87 |
| 87 // LayerTreeHost::SetViewportSize should damage the whole viewport. | 88 // LayerTreeHost::SetViewportSize should damage the whole viewport. |
| 88 class LayerTreeHostDamageTestSetViewportSize | 89 class LayerTreeHostDamageTestSetViewportSize |
| 89 : public LayerTreeHostDamageTest { | 90 : public LayerTreeHostDamageTest { |
| 90 void SetupTree() override { | 91 void SetupTree() override { |
| 91 // Viewport is 10x10. | 92 // Viewport is 10x10. |
| 92 scoped_refptr<FakeContentLayer> root = FakeContentLayer::Create(&client_); | 93 scoped_refptr<FakeContentLayer> root = |
| 94 FakeContentLayer::Create(layer_settings(), &client_); |
| 93 root->SetBounds(gfx::Size(10, 10)); | 95 root->SetBounds(gfx::Size(10, 10)); |
| 94 | 96 |
| 95 layer_tree_host()->SetRootLayer(root); | 97 layer_tree_host()->SetRootLayer(root); |
| 96 LayerTreeHostDamageTest::SetupTree(); | 98 LayerTreeHostDamageTest::SetupTree(); |
| 97 } | 99 } |
| 98 | 100 |
| 99 void BeginTest() override { | 101 void BeginTest() override { |
| 100 draw_count_ = 0; | 102 draw_count_ = 0; |
| 101 PostSetNeedsCommitToMainThread(); | 103 PostSetNeedsCommitToMainThread(); |
| 102 } | 104 } |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 class LayerTreeHostDamageTestNoDamageDoesNotSwap | 150 class LayerTreeHostDamageTestNoDamageDoesNotSwap |
| 149 : public LayerTreeHostDamageTest { | 151 : public LayerTreeHostDamageTest { |
| 150 void BeginTest() override { | 152 void BeginTest() override { |
| 151 expect_swap_and_succeed_ = 0; | 153 expect_swap_and_succeed_ = 0; |
| 152 did_swaps_ = 0; | 154 did_swaps_ = 0; |
| 153 did_swap_and_succeed_ = 0; | 155 did_swap_and_succeed_ = 0; |
| 154 PostSetNeedsCommitToMainThread(); | 156 PostSetNeedsCommitToMainThread(); |
| 155 } | 157 } |
| 156 | 158 |
| 157 void SetupTree() override { | 159 void SetupTree() override { |
| 158 scoped_refptr<FakeContentLayer> root = FakeContentLayer::Create(&client_); | 160 scoped_refptr<FakeContentLayer> root = |
| 161 FakeContentLayer::Create(layer_settings(), &client_); |
| 159 root->SetBounds(gfx::Size(10, 10)); | 162 root->SetBounds(gfx::Size(10, 10)); |
| 160 | 163 |
| 161 // Most of the layer isn't visible. | 164 // Most of the layer isn't visible. |
| 162 content_ = FakeContentLayer::Create(&client_); | 165 content_ = FakeContentLayer::Create(layer_settings(), &client_); |
| 163 content_->SetBounds(gfx::Size(2000, 100)); | 166 content_->SetBounds(gfx::Size(2000, 100)); |
| 164 root->AddChild(content_); | 167 root->AddChild(content_); |
| 165 | 168 |
| 166 layer_tree_host()->SetRootLayer(root); | 169 layer_tree_host()->SetRootLayer(root); |
| 167 LayerTreeHostDamageTest::SetupTree(); | 170 LayerTreeHostDamageTest::SetupTree(); |
| 168 } | 171 } |
| 169 | 172 |
| 170 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 173 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 171 LayerTreeHostImpl::FrameData* frame_data, | 174 LayerTreeHostImpl::FrameData* frame_data, |
| 172 DrawResult draw_result) override { | 175 DrawResult draw_result) override { |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 233 int did_swap_and_succeed_; | 236 int did_swap_and_succeed_; |
| 234 }; | 237 }; |
| 235 | 238 |
| 236 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F( | 239 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F( |
| 237 LayerTreeHostDamageTestNoDamageDoesNotSwap); | 240 LayerTreeHostDamageTestNoDamageDoesNotSwap); |
| 238 | 241 |
| 239 class LayerTreeHostDamageTestForcedFullDamage : public LayerTreeHostDamageTest { | 242 class LayerTreeHostDamageTestForcedFullDamage : public LayerTreeHostDamageTest { |
| 240 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 243 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 241 | 244 |
| 242 void SetupTree() override { | 245 void SetupTree() override { |
| 243 root_ = FakeContentLayer::Create(&client_); | 246 root_ = FakeContentLayer::Create(layer_settings(), &client_); |
| 244 child_ = FakeContentLayer::Create(&client_); | 247 child_ = FakeContentLayer::Create(layer_settings(), &client_); |
| 245 | 248 |
| 246 root_->SetBounds(gfx::Size(500, 500)); | 249 root_->SetBounds(gfx::Size(500, 500)); |
| 247 child_->SetPosition(gfx::Point(100, 100)); | 250 child_->SetPosition(gfx::Point(100, 100)); |
| 248 child_->SetBounds(gfx::Size(30, 30)); | 251 child_->SetBounds(gfx::Size(30, 30)); |
| 249 | 252 |
| 250 root_->AddChild(child_); | 253 root_->AddChild(child_); |
| 251 layer_tree_host()->SetRootLayer(root_); | 254 layer_tree_host()->SetRootLayer(root_); |
| 252 LayerTreeHostDamageTest::SetupTree(); | 255 LayerTreeHostDamageTest::SetupTree(); |
| 253 } | 256 } |
| 254 | 257 |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 FakeContentLayerClient client_; | 345 FakeContentLayerClient client_; |
| 343 scoped_refptr<FakeContentLayer> root_; | 346 scoped_refptr<FakeContentLayer> root_; |
| 344 scoped_refptr<FakeContentLayer> child_; | 347 scoped_refptr<FakeContentLayer> child_; |
| 345 gfx::Rect child_damage_rect_; | 348 gfx::Rect child_damage_rect_; |
| 346 }; | 349 }; |
| 347 | 350 |
| 348 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F(LayerTreeHostDamageTestForcedFullDamage); | 351 SINGLE_AND_MULTI_THREAD_NOIMPL_TEST_F(LayerTreeHostDamageTestForcedFullDamage); |
| 349 | 352 |
| 350 class LayerTreeHostScrollbarDamageTest : public LayerTreeHostDamageTest { | 353 class LayerTreeHostScrollbarDamageTest : public LayerTreeHostDamageTest { |
| 351 void SetupTree() override { | 354 void SetupTree() override { |
| 352 scoped_refptr<Layer> root_layer = Layer::Create(); | 355 scoped_refptr<Layer> root_layer = Layer::Create(layer_settings()); |
| 353 root_layer->SetBounds(gfx::Size(400, 400)); | 356 root_layer->SetBounds(gfx::Size(400, 400)); |
| 354 root_layer->SetMasksToBounds(true); | 357 root_layer->SetMasksToBounds(true); |
| 355 layer_tree_host()->SetRootLayer(root_layer); | 358 layer_tree_host()->SetRootLayer(root_layer); |
| 356 | 359 |
| 357 scoped_refptr<Layer> scroll_clip_layer = Layer::Create(); | 360 scoped_refptr<Layer> scroll_clip_layer = Layer::Create(layer_settings()); |
| 358 scoped_refptr<Layer> content_layer = FakeContentLayer::Create(&client_); | 361 scoped_refptr<Layer> content_layer = |
| 362 FakeContentLayer::Create(layer_settings(), &client_); |
| 359 content_layer->SetScrollClipLayerId(scroll_clip_layer->id()); | 363 content_layer->SetScrollClipLayerId(scroll_clip_layer->id()); |
| 360 content_layer->SetScrollOffset(gfx::ScrollOffset(10, 20)); | 364 content_layer->SetScrollOffset(gfx::ScrollOffset(10, 20)); |
| 361 content_layer->SetBounds(gfx::Size(100, 200)); | 365 content_layer->SetBounds(gfx::Size(100, 200)); |
| 362 scroll_clip_layer->SetBounds( | 366 scroll_clip_layer->SetBounds( |
| 363 gfx::Size(content_layer->bounds().width() - 30, | 367 gfx::Size(content_layer->bounds().width() - 30, |
| 364 content_layer->bounds().height() - 50)); | 368 content_layer->bounds().height() - 50)); |
| 365 scroll_clip_layer->AddChild(content_layer); | 369 scroll_clip_layer->AddChild(content_layer); |
| 366 root_layer->AddChild(scroll_clip_layer); | 370 root_layer->AddChild(scroll_clip_layer); |
| 367 | 371 |
| 368 scoped_refptr<Layer> scrollbar_layer = | 372 scoped_refptr<Layer> scrollbar_layer = FakePaintedScrollbarLayer::Create( |
| 369 FakePaintedScrollbarLayer::Create(false, true, content_layer->id()); | 373 layer_settings(), false, true, content_layer->id()); |
| 370 scrollbar_layer->SetPosition(gfx::Point(300, 300)); | 374 scrollbar_layer->SetPosition(gfx::Point(300, 300)); |
| 371 scrollbar_layer->SetBounds(gfx::Size(10, 100)); | 375 scrollbar_layer->SetBounds(gfx::Size(10, 100)); |
| 372 scrollbar_layer->ToScrollbarLayer()->SetClipLayer(scroll_clip_layer->id()); | 376 scrollbar_layer->ToScrollbarLayer()->SetClipLayer(scroll_clip_layer->id()); |
| 373 scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(content_layer->id()); | 377 scrollbar_layer->ToScrollbarLayer()->SetScrollLayer(content_layer->id()); |
| 374 root_layer->AddChild(scrollbar_layer); | 378 root_layer->AddChild(scrollbar_layer); |
| 375 | 379 |
| 376 gfx::RectF content_rect(content_layer->position(), | 380 gfx::RectF content_rect(content_layer->position(), |
| 377 content_layer->bounds()); | 381 content_layer->bounds()); |
| 378 gfx::RectF scrollbar_rect(scrollbar_layer->position(), | 382 gfx::RectF scrollbar_rect(scrollbar_layer->position(), |
| 379 scrollbar_layer->bounds()); | 383 scrollbar_layer->bounds()); |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 | 529 |
| 526 void AfterTest() override { EXPECT_EQ(3, did_swaps_); } | 530 void AfterTest() override { EXPECT_EQ(3, did_swaps_); } |
| 527 | 531 |
| 528 int did_swaps_; | 532 int did_swaps_; |
| 529 }; | 533 }; |
| 530 | 534 |
| 531 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarCommitDoesNoDamage); | 535 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarCommitDoesNoDamage); |
| 532 | 536 |
| 533 } // namespace | 537 } // namespace |
| 534 } // namespace cc | 538 } // namespace cc |
| OLD | NEW |