| 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/tree_synchronizer.h" | 5 #include "cc/trees/tree_synchronizer.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <set> | 10 #include <set> |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 LayerImpl* layer_impl = *layer_impl_iter; | 89 LayerImpl* layer_impl = *layer_impl_iter; |
| 90 ASSERT_TRUE(layer); | 90 ASSERT_TRUE(layer); |
| 91 ASSERT_TRUE(layer_impl); | 91 ASSERT_TRUE(layer_impl); |
| 92 | 92 |
| 93 EXPECT_EQ(layer->id(), layer_impl->id()); | 93 EXPECT_EQ(layer->id(), layer_impl->id()); |
| 94 EXPECT_EQ(layer_impl->layer_tree_impl(), tree_impl); | 94 EXPECT_EQ(layer_impl->layer_tree_impl(), tree_impl); |
| 95 | 95 |
| 96 EXPECT_EQ(layer->non_fast_scrollable_region(), | 96 EXPECT_EQ(layer->non_fast_scrollable_region(), |
| 97 layer_impl->non_fast_scrollable_region()); | 97 layer_impl->non_fast_scrollable_region()); |
| 98 | 98 |
| 99 ASSERT_EQ(!!layer->mask_layer(), !!layer_impl->mask_layer()); | 99 const EffectTree& effect_tree = tree_impl->property_trees()->effect_tree; |
| 100 if (layer->mask_layer()) { | 100 if (layer->mask_layer()) { |
| 101 SCOPED_TRACE("mask_layer"); | 101 SCOPED_TRACE("mask_layer"); |
| 102 EXPECT_EQ(layer->mask_layer()->id(), layer_impl->mask_layer()->id()); | 102 int mask_layer_id = layer->mask_layer()->id(); |
| 103 EXPECT_TRUE(tree_impl->LayerById(mask_layer_id)); |
| 104 EXPECT_EQ(mask_layer_id, |
| 105 effect_tree.Node(layer_impl->effect_tree_index()) |
| 106 ->data.mask_layer_id); |
| 103 } | 107 } |
| 104 | 108 |
| 105 ASSERT_EQ(!!layer->replica_layer(), !!layer_impl->replica_layer()); | |
| 106 if (layer->replica_layer()) { | 109 if (layer->replica_layer()) { |
| 107 SCOPED_TRACE("replica_layer"); | 110 SCOPED_TRACE("replica_layer"); |
| 108 EXPECT_EQ(layer->replica_layer()->id(), | 111 int replica_layer_id = layer->replica_layer()->id(); |
| 109 layer_impl->replica_layer()->id()); | 112 EXPECT_TRUE(tree_impl->LayerById(layer->replica_layer()->id())); |
| 110 ASSERT_EQ(!!layer->replica_layer()->mask_layer(), | 113 EXPECT_EQ(replica_layer_id, |
| 111 !!layer_impl->replica_layer()->mask_layer()); | 114 effect_tree.Node(layer_impl->effect_tree_index()) |
| 115 ->data.replica_layer_id); |
| 112 if (layer->replica_layer()->mask_layer()) { | 116 if (layer->replica_layer()->mask_layer()) { |
| 113 SCOPED_TRACE("mask_layer"); | 117 SCOPED_TRACE("replica_mask_layer"); |
| 114 EXPECT_EQ(layer->replica_layer()->mask_layer()->id(), | 118 int replica_mask_layer_id = layer->replica_layer()->mask_layer()->id(); |
| 115 layer_impl->replica_layer()->mask_layer()->id()); | 119 EXPECT_TRUE(tree_impl->LayerById(replica_mask_layer_id)); |
| 120 EXPECT_EQ(replica_mask_layer_id, |
| 121 effect_tree.Node(layer_impl->effect_tree_index()) |
| 122 ->data.replica_mask_layer_id); |
| 116 } | 123 } |
| 117 } | 124 } |
| 118 | 125 |
| 119 const Layer* layer_scroll_parent = layer->scroll_parent(); | 126 const Layer* layer_scroll_parent = layer->scroll_parent(); |
| 120 | 127 |
| 121 if (layer_scroll_parent) { | 128 if (layer_scroll_parent) { |
| 122 ASSERT_TRUE(layer_scroll_parent->scroll_children()->find(layer) != | 129 ASSERT_TRUE(layer_scroll_parent->scroll_children()->find(layer) != |
| 123 layer_scroll_parent->scroll_children()->end()); | 130 layer_scroll_parent->scroll_children()->end()); |
| 124 } | 131 } |
| 125 | 132 |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 layer_tree_root->children()[1]->SetReplicaLayer(replica_layer.get()); | 465 layer_tree_root->children()[1]->SetReplicaLayer(replica_layer.get()); |
| 459 | 466 |
| 460 // Third child gets a replica layer with a mask layer. | 467 // Third child gets a replica layer with a mask layer. |
| 461 scoped_refptr<Layer> replica_layer_with_mask = Layer::Create(); | 468 scoped_refptr<Layer> replica_layer_with_mask = Layer::Create(); |
| 462 scoped_refptr<Layer> replica_mask_layer = Layer::Create(); | 469 scoped_refptr<Layer> replica_mask_layer = Layer::Create(); |
| 463 replica_layer_with_mask->SetMaskLayer(replica_mask_layer.get()); | 470 replica_layer_with_mask->SetMaskLayer(replica_mask_layer.get()); |
| 464 layer_tree_root->children()[2]->SetReplicaLayer( | 471 layer_tree_root->children()[2]->SetReplicaLayer( |
| 465 replica_layer_with_mask.get()); | 472 replica_layer_with_mask.get()); |
| 466 | 473 |
| 467 host_->SetRootLayer(layer_tree_root); | 474 host_->SetRootLayer(layer_tree_root); |
| 475 host_->BuildPropertyTreesForTesting(); |
| 476 host_->CommitAndCreateLayerImplTree(); |
| 468 | 477 |
| 469 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | |
| 470 host_->active_tree()); | |
| 471 LayerImpl* layer_impl_tree_root = host_->active_tree()->root_layer(); | 478 LayerImpl* layer_impl_tree_root = host_->active_tree()->root_layer(); |
| 472 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, | 479 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, |
| 473 host_->active_tree()); | 480 host_->active_tree()); |
| 474 | 481 |
| 475 // Remove the mask layer. | 482 // Remove the mask layer. |
| 476 layer_tree_root->children()[0]->SetMaskLayer(NULL); | 483 layer_tree_root->children()[0]->SetMaskLayer(NULL); |
| 477 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 484 host_->BuildPropertyTreesForTesting(); |
| 478 host_->active_tree()); | 485 host_->CommitAndCreateLayerImplTree(); |
| 486 |
| 479 layer_impl_tree_root = host_->active_tree()->root_layer(); | 487 layer_impl_tree_root = host_->active_tree()->root_layer(); |
| 480 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, | 488 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, |
| 481 host_->active_tree()); | 489 host_->active_tree()); |
| 482 | 490 |
| 483 // Remove the replica layer. | 491 // Remove the replica layer. |
| 484 layer_tree_root->children()[1]->SetReplicaLayer(NULL); | 492 layer_tree_root->children()[1]->SetReplicaLayer(NULL); |
| 485 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 493 host_->BuildPropertyTreesForTesting(); |
| 486 host_->active_tree()); | 494 host_->CommitAndCreateLayerImplTree(); |
| 495 |
| 487 layer_impl_tree_root = host_->active_tree()->root_layer(); | 496 layer_impl_tree_root = host_->active_tree()->root_layer(); |
| 488 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, | 497 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, |
| 489 host_->active_tree()); | 498 host_->active_tree()); |
| 490 | 499 |
| 491 // Remove the replica mask. | 500 // Remove the replica mask. |
| 492 replica_layer_with_mask->SetMaskLayer(NULL); | 501 replica_layer_with_mask->SetMaskLayer(NULL); |
| 493 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 502 host_->BuildPropertyTreesForTesting(); |
| 494 host_->active_tree()); | 503 host_->CommitAndCreateLayerImplTree(); |
| 504 |
| 495 layer_impl_tree_root = host_->active_tree()->root_layer(); | 505 layer_impl_tree_root = host_->active_tree()->root_layer(); |
| 496 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, | 506 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, |
| 497 host_->active_tree()); | 507 host_->active_tree()); |
| 498 | 508 |
| 499 host_->active_tree()->DetachLayers(); | 509 host_->active_tree()->DetachLayers(); |
| 500 } | 510 } |
| 501 | 511 |
| 502 TEST_F(TreeSynchronizerTest, SynchronizeCurrentlyScrollingNode) { | 512 TEST_F(TreeSynchronizerTest, SynchronizeCurrentlyScrollingNode) { |
| 503 LayerTreeSettings settings; | 513 LayerTreeSettings settings; |
| 504 FakeLayerTreeHostImplClient client; | 514 FakeLayerTreeHostImplClient client; |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 636 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread(); | 646 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread(); |
| 637 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50)); | 647 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50)); |
| 638 scroll_offset_map[scroll_layer->id()]->PushFromMainThread( | 648 scroll_offset_map[scroll_layer->id()]->PushFromMainThread( |
| 639 gfx::ScrollOffset(100, 100)); | 649 gfx::ScrollOffset(100, 100)); |
| 640 scroll_offset_map[scroll_layer->id()]->PushPendingToActive(); | 650 scroll_offset_map[scroll_layer->id()]->PushPendingToActive(); |
| 641 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map())); | 651 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map())); |
| 642 } | 652 } |
| 643 | 653 |
| 644 } // namespace | 654 } // namespace |
| 645 } // namespace cc | 655 } // namespace cc |
| OLD | NEW |