| 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/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 class LayerTreeHostDamageTest : public LayerTreeTest {}; | 23 class LayerTreeHostDamageTest : public LayerTreeTest {}; |
| 24 | 24 |
| 25 // LayerTreeHost::SetNeedsRedraw should damage the whole viewport. | 25 // LayerTreeHost::SetNeedsRedraw should damage the whole viewport. |
| 26 class LayerTreeHostDamageTestSetNeedsRedraw | 26 class LayerTreeHostDamageTestSetNeedsRedraw |
| 27 : public LayerTreeHostDamageTest { | 27 : public LayerTreeHostDamageTest { |
| 28 void SetupTree() override { | 28 void SetupTree() override { |
| 29 // Viewport is 10x10. | 29 // Viewport is 10x10. |
| 30 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); | 30 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); |
| 31 root->SetBounds(gfx::Size(10, 10)); | 31 root->SetBounds(gfx::Size(10, 10)); |
| 32 | 32 |
| 33 layer_tree()->SetRootLayer(root); | 33 layer_tree_host()->SetRootLayer(root); |
| 34 LayerTreeHostDamageTest::SetupTree(); | 34 LayerTreeHostDamageTest::SetupTree(); |
| 35 client_.set_bounds(root->bounds()); | 35 client_.set_bounds(root->bounds()); |
| 36 } | 36 } |
| 37 | 37 |
| 38 void BeginTest() override { | 38 void BeginTest() override { |
| 39 draw_count_ = 0; | 39 draw_count_ = 0; |
| 40 PostSetNeedsCommitToMainThread(); | 40 PostSetNeedsCommitToMainThread(); |
| 41 } | 41 } |
| 42 | 42 |
| 43 void DidCommitAndDrawFrame() override { | 43 void DidCommitAndDrawFrame() override { |
| 44 switch (layer_tree_host()->SourceFrameNumber()) { | 44 switch (layer_tree_host()->SourceFrameNumber()) { |
| 45 case 1: | 45 case 1: |
| 46 layer_tree_host()->SetNeedsRedrawRect( | 46 layer_tree_host()->SetNeedsRedrawRect( |
| 47 gfx::Rect(layer_tree()->device_viewport_size())); | 47 gfx::Rect(layer_tree_host()->device_viewport_size())); |
| 48 break; | 48 break; |
| 49 } | 49 } |
| 50 } | 50 } |
| 51 | 51 |
| 52 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* impl, | 52 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* impl, |
| 53 LayerTreeHostImpl::FrameData* frame_data, | 53 LayerTreeHostImpl::FrameData* frame_data, |
| 54 DrawResult draw_result) override { | 54 DrawResult draw_result) override { |
| 55 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 55 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 56 | 56 |
| 57 RenderSurfaceImpl* root_surface = | 57 RenderSurfaceImpl* root_surface = |
| (...skipping 29 matching lines...) Expand all Loading... |
| 87 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestSetNeedsRedraw); | 87 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestSetNeedsRedraw); |
| 88 | 88 |
| 89 // LayerTreeHost::SetViewportSize should damage the whole viewport. | 89 // LayerTreeHost::SetViewportSize should damage the whole viewport. |
| 90 class LayerTreeHostDamageTestSetViewportSize | 90 class LayerTreeHostDamageTestSetViewportSize |
| 91 : public LayerTreeHostDamageTest { | 91 : public LayerTreeHostDamageTest { |
| 92 void SetupTree() override { | 92 void SetupTree() override { |
| 93 // Viewport is 10x10. | 93 // Viewport is 10x10. |
| 94 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); | 94 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); |
| 95 root->SetBounds(gfx::Size(10, 10)); | 95 root->SetBounds(gfx::Size(10, 10)); |
| 96 | 96 |
| 97 layer_tree()->SetRootLayer(root); | 97 layer_tree_host()->SetRootLayer(root); |
| 98 LayerTreeHostDamageTest::SetupTree(); | 98 LayerTreeHostDamageTest::SetupTree(); |
| 99 client_.set_bounds(root->bounds()); | 99 client_.set_bounds(root->bounds()); |
| 100 } | 100 } |
| 101 | 101 |
| 102 void BeginTest() override { | 102 void BeginTest() override { |
| 103 draw_count_ = 0; | 103 draw_count_ = 0; |
| 104 PostSetNeedsCommitToMainThread(); | 104 PostSetNeedsCommitToMainThread(); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void DidCommitAndDrawFrame() override { | 107 void DidCommitAndDrawFrame() override { |
| 108 switch (layer_tree_host()->SourceFrameNumber()) { | 108 switch (layer_tree_host()->SourceFrameNumber()) { |
| 109 case 1: | 109 case 1: |
| 110 layer_tree()->SetViewportSize(gfx::Size(15, 15)); | 110 layer_tree_host()->SetViewportSize(gfx::Size(15, 15)); |
| 111 break; | 111 break; |
| 112 } | 112 } |
| 113 } | 113 } |
| 114 | 114 |
| 115 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* impl, | 115 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* impl, |
| 116 LayerTreeHostImpl::FrameData* frame_data, | 116 LayerTreeHostImpl::FrameData* frame_data, |
| 117 DrawResult draw_result) override { | 117 DrawResult draw_result) override { |
| 118 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 118 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 119 | 119 |
| 120 RenderSurfaceImpl* root_surface = | 120 RenderSurfaceImpl* root_surface = |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 157 | 157 |
| 158 void SetupTree() override { | 158 void SetupTree() override { |
| 159 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); | 159 scoped_refptr<FakePictureLayer> root = FakePictureLayer::Create(&client_); |
| 160 root->SetBounds(gfx::Size(10, 10)); | 160 root->SetBounds(gfx::Size(10, 10)); |
| 161 | 161 |
| 162 // Most of the layer isn't visible. | 162 // Most of the layer isn't visible. |
| 163 content_ = FakePictureLayer::Create(&client_); | 163 content_ = FakePictureLayer::Create(&client_); |
| 164 content_->SetBounds(gfx::Size(2000, 100)); | 164 content_->SetBounds(gfx::Size(2000, 100)); |
| 165 root->AddChild(content_); | 165 root->AddChild(content_); |
| 166 | 166 |
| 167 layer_tree()->SetRootLayer(root); | 167 layer_tree_host()->SetRootLayer(root); |
| 168 LayerTreeHostDamageTest::SetupTree(); | 168 LayerTreeHostDamageTest::SetupTree(); |
| 169 client_.set_bounds(root->bounds()); | 169 client_.set_bounds(root->bounds()); |
| 170 } | 170 } |
| 171 | 171 |
| 172 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 172 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 173 LayerTreeHostImpl::FrameData* frame_data, | 173 LayerTreeHostImpl::FrameData* frame_data, |
| 174 DrawResult draw_result) override { | 174 DrawResult draw_result) override { |
| 175 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 175 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 176 | 176 |
| 177 int source_frame = host_impl->active_tree()->source_frame_number(); | 177 int source_frame = host_impl->active_tree()->source_frame_number(); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 207 | 207 |
| 208 void DidCommit() override { | 208 void DidCommit() override { |
| 209 int next_frame = layer_tree_host()->SourceFrameNumber(); | 209 int next_frame = layer_tree_host()->SourceFrameNumber(); |
| 210 switch (next_frame) { | 210 switch (next_frame) { |
| 211 case 1: | 211 case 1: |
| 212 layer_tree_host()->SetNeedsCommit(); | 212 layer_tree_host()->SetNeedsCommit(); |
| 213 break; | 213 break; |
| 214 case 2: | 214 case 2: |
| 215 // Cause visible damage. | 215 // Cause visible damage. |
| 216 content_->SetNeedsDisplayRect( | 216 content_->SetNeedsDisplayRect( |
| 217 gfx::Rect(layer_tree()->device_viewport_size())); | 217 gfx::Rect(layer_tree_host()->device_viewport_size())); |
| 218 break; | 218 break; |
| 219 case 3: | 219 case 3: |
| 220 // Cause non-visible damage. | 220 // Cause non-visible damage. |
| 221 content_->SetNeedsDisplayRect(gfx::Rect(1990, 1990, 10, 10)); | 221 content_->SetNeedsDisplayRect(gfx::Rect(1990, 1990, 10, 10)); |
| 222 layer_tree_host()->SetNeedsCommit(); | 222 layer_tree_host()->SetNeedsCommit(); |
| 223 break; | 223 break; |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 | 226 |
| 227 void AfterTest() override { | 227 void AfterTest() override { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 242 | 242 |
| 243 void SetupTree() override { | 243 void SetupTree() override { |
| 244 root_ = FakePictureLayer::Create(&client_); | 244 root_ = FakePictureLayer::Create(&client_); |
| 245 child_ = FakePictureLayer::Create(&client_); | 245 child_ = FakePictureLayer::Create(&client_); |
| 246 | 246 |
| 247 root_->SetBounds(gfx::Size(500, 500)); | 247 root_->SetBounds(gfx::Size(500, 500)); |
| 248 child_->SetPosition(gfx::PointF(100.f, 100.f)); | 248 child_->SetPosition(gfx::PointF(100.f, 100.f)); |
| 249 child_->SetBounds(gfx::Size(30, 30)); | 249 child_->SetBounds(gfx::Size(30, 30)); |
| 250 | 250 |
| 251 root_->AddChild(child_); | 251 root_->AddChild(child_); |
| 252 layer_tree()->SetRootLayer(root_); | 252 layer_tree_host()->SetRootLayer(root_); |
| 253 LayerTreeHostDamageTest::SetupTree(); | 253 LayerTreeHostDamageTest::SetupTree(); |
| 254 client_.set_bounds(root_->bounds()); | 254 client_.set_bounds(root_->bounds()); |
| 255 } | 255 } |
| 256 | 256 |
| 257 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, | 257 DrawResult PrepareToDrawOnThread(LayerTreeHostImpl* host_impl, |
| 258 LayerTreeHostImpl::FrameData* frame_data, | 258 LayerTreeHostImpl::FrameData* frame_data, |
| 259 DrawResult draw_result) override { | 259 DrawResult draw_result) override { |
| 260 EXPECT_EQ(DRAW_SUCCESS, draw_result); | 260 EXPECT_EQ(DRAW_SUCCESS, draw_result); |
| 261 | 261 |
| 262 RenderSurfaceImpl* root_surface = | 262 RenderSurfaceImpl* root_surface = |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 329 gfx::Rect child_damage_rect_; | 329 gfx::Rect child_damage_rect_; |
| 330 }; | 330 }; |
| 331 | 331 |
| 332 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestForcedFullDamage); | 332 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostDamageTestForcedFullDamage); |
| 333 | 333 |
| 334 class LayerTreeHostScrollbarDamageTest : public LayerTreeHostDamageTest { | 334 class LayerTreeHostScrollbarDamageTest : public LayerTreeHostDamageTest { |
| 335 void SetupTree() override { | 335 void SetupTree() override { |
| 336 scoped_refptr<Layer> root_layer = Layer::Create(); | 336 scoped_refptr<Layer> root_layer = Layer::Create(); |
| 337 root_layer->SetBounds(gfx::Size(400, 400)); | 337 root_layer->SetBounds(gfx::Size(400, 400)); |
| 338 root_layer->SetMasksToBounds(true); | 338 root_layer->SetMasksToBounds(true); |
| 339 layer_tree()->SetRootLayer(root_layer); | 339 layer_tree_host()->SetRootLayer(root_layer); |
| 340 | 340 |
| 341 scoped_refptr<Layer> scroll_clip_layer = Layer::Create(); | 341 scoped_refptr<Layer> scroll_clip_layer = Layer::Create(); |
| 342 content_layer_ = FakePictureLayer::Create(&client_); | 342 content_layer_ = FakePictureLayer::Create(&client_); |
| 343 content_layer_->SetScrollClipLayerId(scroll_clip_layer->id()); | 343 content_layer_->SetScrollClipLayerId(scroll_clip_layer->id()); |
| 344 content_layer_->SetScrollOffset(gfx::ScrollOffset(10, 20)); | 344 content_layer_->SetScrollOffset(gfx::ScrollOffset(10, 20)); |
| 345 content_layer_->SetBounds(gfx::Size(100, 200)); | 345 content_layer_->SetBounds(gfx::Size(100, 200)); |
| 346 content_layer_->SetIsDrawable(true); | 346 content_layer_->SetIsDrawable(true); |
| 347 scroll_clip_layer->SetBounds( | 347 scroll_clip_layer->SetBounds( |
| 348 gfx::Size(content_layer_->bounds().width() - 30, | 348 gfx::Size(content_layer_->bounds().width() - 30, |
| 349 content_layer_->bounds().height() - 50)); | 349 content_layer_->bounds().height() - 50)); |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 440 } | 440 } |
| 441 } | 441 } |
| 442 | 442 |
| 443 void ModifyContentLayerPosition() { | 443 void ModifyContentLayerPosition() { |
| 444 EXPECT_EQ(1, num_draws_); | 444 EXPECT_EQ(1, num_draws_); |
| 445 content_layer_->SetPosition(gfx::PointF(10.f, 10.f)); | 445 content_layer_->SetPosition(gfx::PointF(10.f, 10.f)); |
| 446 } | 446 } |
| 447 | 447 |
| 448 void ResizeScrollLayer() { | 448 void ResizeScrollLayer() { |
| 449 EXPECT_EQ(3, num_draws_); | 449 EXPECT_EQ(3, num_draws_); |
| 450 Layer* root = layer_tree()->root_layer(); | 450 Layer* root = layer_tree_host()->root_layer(); |
| 451 content_layer_->SetBounds( | 451 content_layer_->SetBounds( |
| 452 gfx::Size(root->bounds().width() + 60, root->bounds().height() + 100)); | 452 gfx::Size(root->bounds().width() + 60, root->bounds().height() + 100)); |
| 453 } | 453 } |
| 454 | 454 |
| 455 void AfterTest() override { EXPECT_EQ(4, num_draws_); } | 455 void AfterTest() override { EXPECT_EQ(4, num_draws_); } |
| 456 | 456 |
| 457 int num_draws_; | 457 int num_draws_; |
| 458 }; | 458 }; |
| 459 | 459 |
| 460 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarDoesDamage); | 460 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarDoesDamage); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 526 | 526 |
| 527 void AfterTest() override { EXPECT_EQ(3, num_draws_); } | 527 void AfterTest() override { EXPECT_EQ(3, num_draws_); } |
| 528 | 528 |
| 529 int num_draws_; | 529 int num_draws_; |
| 530 }; | 530 }; |
| 531 | 531 |
| 532 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarCommitDoesNoDamage); | 532 MULTI_THREAD_TEST_F(LayerTreeHostDamageTestScrollbarCommitDoesNoDamage); |
| 533 | 533 |
| 534 } // namespace | 534 } // namespace |
| 535 } // namespace cc | 535 } // namespace cc |
| OLD | NEW |