| OLD | NEW |
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/location.h" | 10 #include "base/location.h" |
| (...skipping 3267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3278 return new PushPropertiesCountingLayer(); | 3278 return new PushPropertiesCountingLayer(); |
| 3279 } | 3279 } |
| 3280 | 3280 |
| 3281 void PushPropertiesTo(LayerImpl* layer) override { | 3281 void PushPropertiesTo(LayerImpl* layer) override { |
| 3282 Layer::PushPropertiesTo(layer); | 3282 Layer::PushPropertiesTo(layer); |
| 3283 push_properties_count_++; | 3283 push_properties_count_++; |
| 3284 if (persist_needs_push_properties_) | 3284 if (persist_needs_push_properties_) |
| 3285 needs_push_properties_ = true; | 3285 needs_push_properties_ = true; |
| 3286 } | 3286 } |
| 3287 | 3287 |
| 3288 // Something to make this layer push properties, but no other layer. |
| 3289 void MakePushProperties() { SetContentsOpaque(!contents_opaque()); } |
| 3290 |
| 3288 scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override { | 3291 scoped_ptr<LayerImpl> CreateLayerImpl(LayerTreeImpl* tree_impl) override { |
| 3289 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); | 3292 return PushPropertiesCountingLayerImpl::Create(tree_impl, id()); |
| 3290 } | 3293 } |
| 3291 | 3294 |
| 3292 void SetDrawsContent(bool draws_content) { SetIsDrawable(draws_content); } | 3295 void SetDrawsContent(bool draws_content) { SetIsDrawable(draws_content); } |
| 3293 | 3296 |
| 3294 size_t push_properties_count() const { return push_properties_count_; } | 3297 size_t push_properties_count() const { return push_properties_count_; } |
| 3295 void reset_push_properties_count() { push_properties_count_ = 0; } | 3298 void reset_push_properties_count() { push_properties_count_ = 0; } |
| 3296 | 3299 |
| 3297 void set_persist_needs_push_properties(bool persist) { | 3300 void set_persist_needs_push_properties(bool persist) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3337 child2_->AddChild(leaf_always_pushing_layer_); | 3340 child2_->AddChild(leaf_always_pushing_layer_); |
| 3338 | 3341 |
| 3339 other_root_ = PushPropertiesCountingLayer::Create(); | 3342 other_root_ = PushPropertiesCountingLayer::Create(); |
| 3340 other_root_->CreateRenderSurface(); | 3343 other_root_->CreateRenderSurface(); |
| 3341 | 3344 |
| 3342 // Don't set the root layer here. | 3345 // Don't set the root layer here. |
| 3343 LayerTreeHostTest::SetupTree(); | 3346 LayerTreeHostTest::SetupTree(); |
| 3344 } | 3347 } |
| 3345 | 3348 |
| 3346 void DidCommitAndDrawFrame() override { | 3349 void DidCommitAndDrawFrame() override { |
| 3350 EXPECT_EQ(expected_push_properties_root_, root_->push_properties_count()) |
| 3351 << "num_commits: " << num_commits_; |
| 3352 EXPECT_EQ(expected_push_properties_child_, child_->push_properties_count()) |
| 3353 << "num_commits: " << num_commits_; |
| 3354 EXPECT_EQ(expected_push_properties_grandchild_, |
| 3355 grandchild_->push_properties_count()) |
| 3356 << "num_commits: " << num_commits_; |
| 3357 EXPECT_EQ(expected_push_properties_child2_, |
| 3358 child2_->push_properties_count()) |
| 3359 << "num_commits: " << num_commits_; |
| 3360 EXPECT_EQ(expected_push_properties_other_root_, |
| 3361 other_root_->push_properties_count()) |
| 3362 << "num_commits: " << num_commits_; |
| 3363 EXPECT_EQ(expected_push_properties_leaf_layer_, |
| 3364 leaf_always_pushing_layer_->push_properties_count()) |
| 3365 << "num_commits: " << num_commits_; |
| 3366 |
| 3347 ++num_commits_; | 3367 ++num_commits_; |
| 3348 | 3368 |
| 3349 EXPECT_EQ(expected_push_properties_root_, root_->push_properties_count()); | |
| 3350 EXPECT_EQ(expected_push_properties_child_, child_->push_properties_count()); | |
| 3351 EXPECT_EQ(expected_push_properties_grandchild_, | |
| 3352 grandchild_->push_properties_count()); | |
| 3353 EXPECT_EQ(expected_push_properties_child2_, | |
| 3354 child2_->push_properties_count()); | |
| 3355 EXPECT_EQ(expected_push_properties_other_root_, | |
| 3356 other_root_->push_properties_count()); | |
| 3357 EXPECT_EQ(expected_push_properties_leaf_layer_, | |
| 3358 leaf_always_pushing_layer_->push_properties_count()); | |
| 3359 | |
| 3360 // The scrollbar layer always needs to be pushed. | 3369 // The scrollbar layer always needs to be pushed. |
| 3361 if (root_->layer_tree_host()) { | 3370 if (root_->layer_tree_host()) { |
| 3362 EXPECT_TRUE(root_->descendant_needs_push_properties()); | 3371 EXPECT_TRUE(root_->descendant_needs_push_properties()); |
| 3363 EXPECT_FALSE(root_->needs_push_properties()); | 3372 EXPECT_FALSE(root_->needs_push_properties()); |
| 3364 } | 3373 } |
| 3365 if (child2_->layer_tree_host()) { | 3374 if (child2_->layer_tree_host()) { |
| 3366 EXPECT_TRUE(child2_->descendant_needs_push_properties()); | 3375 EXPECT_TRUE(child2_->descendant_needs_push_properties()); |
| 3367 EXPECT_FALSE(child2_->needs_push_properties()); | 3376 EXPECT_FALSE(child2_->needs_push_properties()); |
| 3368 } | 3377 } |
| 3369 if (leaf_always_pushing_layer_->layer_tree_host()) { | 3378 if (leaf_always_pushing_layer_->layer_tree_host()) { |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3438 break; | 3447 break; |
| 3439 case 10: | 3448 case 10: |
| 3440 layer_tree_host()->SetViewportSize(gfx::Size(20, 20)); | 3449 layer_tree_host()->SetViewportSize(gfx::Size(20, 20)); |
| 3441 // No layers need commit. | 3450 // No layers need commit. |
| 3442 break; | 3451 break; |
| 3443 case 11: | 3452 case 11: |
| 3444 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.8f, 1.1f); | 3453 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.8f, 1.1f); |
| 3445 // No layers need commit. | 3454 // No layers need commit. |
| 3446 break; | 3455 break; |
| 3447 case 12: | 3456 case 12: |
| 3448 child_->SetPosition(gfx::Point(1, 1)); | 3457 child_->MakePushProperties(); |
| 3449 // The modified layer needs commit | 3458 // The modified layer needs commit |
| 3450 ++expected_push_properties_child_; | 3459 ++expected_push_properties_child_; |
| 3451 break; | 3460 break; |
| 3452 case 13: | 3461 case 13: |
| 3453 child2_->SetPosition(gfx::Point(1, 1)); | 3462 child2_->MakePushProperties(); |
| 3454 // The modified layer needs commit | 3463 // The modified layer needs commit |
| 3455 ++expected_push_properties_child2_; | 3464 ++expected_push_properties_child2_; |
| 3456 break; | 3465 break; |
| 3457 case 14: | 3466 case 14: |
| 3458 child_->RemoveFromParent(); | 3467 child_->RemoveFromParent(); |
| 3459 root_->AddChild(child_); | 3468 root_->AddChild(child_); |
| 3460 // Layers added to the tree get committed. | 3469 // Layers added to the tree get committed. |
| 3461 ++expected_push_properties_child_; | 3470 ++expected_push_properties_child_; |
| 3462 ++expected_push_properties_grandchild_; | 3471 ++expected_push_properties_grandchild_; |
| 3463 break; | 3472 break; |
| 3464 case 15: | 3473 case 15: |
| 3465 grandchild_->SetPosition(gfx::Point(1, 1)); | 3474 grandchild_->MakePushProperties(); |
| 3466 // The modified layer needs commit | 3475 // The modified layer needs commit |
| 3467 ++expected_push_properties_grandchild_; | 3476 ++expected_push_properties_grandchild_; |
| 3468 break; | 3477 break; |
| 3469 case 16: | 3478 case 16: |
| 3470 // SetNeedsDisplay does not always set needs commit (so call it | 3479 // SetNeedsDisplay does not always set needs commit (so call it |
| 3471 // explicitly), but is a property change. | 3480 // explicitly), but is a property change. |
| 3472 child_->SetNeedsDisplay(); | 3481 child_->SetNeedsDisplay(); |
| 3473 ++expected_push_properties_child_; | 3482 ++expected_push_properties_child_; |
| 3474 layer_tree_host()->SetNeedsCommit(); | 3483 layer_tree_host()->SetNeedsCommit(); |
| 3475 break; | 3484 break; |
| (...skipping 3467 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6943 void AfterTest() override {} | 6952 void AfterTest() override {} |
| 6944 | 6953 |
| 6945 scoped_refptr<FakePictureLayer> content_child_layer_; | 6954 scoped_refptr<FakePictureLayer> content_child_layer_; |
| 6946 FakeContentLayerClient client_; | 6955 FakeContentLayerClient client_; |
| 6947 }; | 6956 }; |
| 6948 | 6957 |
| 6949 SINGLE_AND_MULTI_THREAD_TEST_F( | 6958 SINGLE_AND_MULTI_THREAD_TEST_F( |
| 6950 LayerTreeTestReflectionMaskLayerForSurfaceWithUnclippedChild); | 6959 LayerTreeTestReflectionMaskLayerForSurfaceWithUnclippedChild); |
| 6951 | 6960 |
| 6952 } // namespace cc | 6961 } // namespace cc |
| OLD | NEW |