| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <set> | 8 #include <set> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 | 195 |
| 196 protected: | 196 protected: |
| 197 FakeLayerTreeHostClient client_; | 197 FakeLayerTreeHostClient client_; |
| 198 scoped_ptr<FakeLayerTreeHost> host_; | 198 scoped_ptr<FakeLayerTreeHost> host_; |
| 199 }; | 199 }; |
| 200 | 200 |
| 201 // Attempts to synchronizes a null tree. This should not crash, and should | 201 // Attempts to synchronizes a null tree. This should not crash, and should |
| 202 // return a null tree. | 202 // return a null tree. |
| 203 TEST_F(TreeSynchronizerTest, SyncNullTree) { | 203 TEST_F(TreeSynchronizerTest, SyncNullTree) { |
| 204 scoped_ptr<LayerImpl> layer_impl_tree_root = | 204 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 205 TreeSynchronizer::SynchronizeTrees(static_cast<Layer*>(NULL), | 205 TreeSynchronizer::SynchronizeTrees( |
| 206 scoped_ptr<LayerImpl>(), | 206 static_cast<Layer*>(NULL), nullptr, host_->active_tree()); |
| 207 host_->active_tree()); | |
| 208 | 207 |
| 209 EXPECT_TRUE(!layer_impl_tree_root.get()); | 208 EXPECT_TRUE(!layer_impl_tree_root.get()); |
| 210 } | 209 } |
| 211 | 210 |
| 212 // Constructs a very simple tree and synchronizes it without trying to reuse any | 211 // Constructs a very simple tree and synchronizes it without trying to reuse any |
| 213 // preexisting layers. | 212 // preexisting layers. |
| 214 TEST_F(TreeSynchronizerTest, SyncSimpleTreeFromEmpty) { | 213 TEST_F(TreeSynchronizerTest, SyncSimpleTreeFromEmpty) { |
| 215 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 214 scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
| 216 layer_tree_root->AddChild(Layer::Create()); | 215 layer_tree_root->AddChild(Layer::Create()); |
| 217 layer_tree_root->AddChild(Layer::Create()); | 216 layer_tree_root->AddChild(Layer::Create()); |
| 218 | 217 |
| 219 host_->SetRootLayer(layer_tree_root); | 218 host_->SetRootLayer(layer_tree_root); |
| 220 | 219 |
| 221 scoped_ptr<LayerImpl> layer_impl_tree_root = | 220 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 222 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 221 TreeSynchronizer::SynchronizeTrees( |
| 223 scoped_ptr<LayerImpl>(), | 222 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 224 host_->active_tree()); | |
| 225 | 223 |
| 226 ExpectTreesAreIdentical(layer_tree_root.get(), | 224 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 227 layer_impl_tree_root.get(), | 225 layer_impl_tree_root.get(), |
| 228 host_->active_tree()); | 226 host_->active_tree()); |
| 229 } | 227 } |
| 230 | 228 |
| 231 // Constructs a very simple tree and synchronizes it attempting to reuse some | 229 // Constructs a very simple tree and synchronizes it attempting to reuse some |
| 232 // layers | 230 // layers |
| 233 TEST_F(TreeSynchronizerTest, SyncSimpleTreeReusingLayers) { | 231 TEST_F(TreeSynchronizerTest, SyncSimpleTreeReusingLayers) { |
| 234 std::vector<int> layer_impl_destruction_list; | 232 std::vector<int> layer_impl_destruction_list; |
| 235 | 233 |
| 236 scoped_refptr<Layer> layer_tree_root = | 234 scoped_refptr<Layer> layer_tree_root = |
| 237 MockLayer::Create(&layer_impl_destruction_list); | 235 MockLayer::Create(&layer_impl_destruction_list); |
| 238 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 236 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
| 239 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 237 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
| 240 | 238 |
| 241 host_->SetRootLayer(layer_tree_root); | 239 host_->SetRootLayer(layer_tree_root); |
| 242 | 240 |
| 243 scoped_ptr<LayerImpl> layer_impl_tree_root = | 241 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 244 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 242 TreeSynchronizer::SynchronizeTrees( |
| 245 scoped_ptr<LayerImpl>(), | 243 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 246 host_->active_tree()); | |
| 247 ExpectTreesAreIdentical(layer_tree_root.get(), | 244 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 248 layer_impl_tree_root.get(), | 245 layer_impl_tree_root.get(), |
| 249 host_->active_tree()); | 246 host_->active_tree()); |
| 250 | 247 |
| 251 // We have to push properties to pick up the destruction list pointer. | 248 // We have to push properties to pick up the destruction list pointer. |
| 252 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 249 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 253 layer_impl_tree_root.get()); | 250 layer_impl_tree_root.get()); |
| 254 | 251 |
| 255 // Add a new layer to the Layer side | 252 // Add a new layer to the Layer side |
| 256 layer_tree_root->children()[0]-> | 253 layer_tree_root->children()[0]-> |
| (...skipping 25 matching lines...) Expand all Loading... |
| 282 // though we remove it to set up the intended scenario. | 279 // though we remove it to set up the intended scenario. |
| 283 scoped_refptr<Layer> layer_tree_root = | 280 scoped_refptr<Layer> layer_tree_root = |
| 284 MockLayer::Create(&layer_impl_destruction_list); | 281 MockLayer::Create(&layer_impl_destruction_list); |
| 285 scoped_refptr<Layer> child2 = MockLayer::Create(&layer_impl_destruction_list); | 282 scoped_refptr<Layer> child2 = MockLayer::Create(&layer_impl_destruction_list); |
| 286 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 283 layer_tree_root->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
| 287 layer_tree_root->AddChild(child2); | 284 layer_tree_root->AddChild(child2); |
| 288 | 285 |
| 289 host_->SetRootLayer(layer_tree_root); | 286 host_->SetRootLayer(layer_tree_root); |
| 290 | 287 |
| 291 scoped_ptr<LayerImpl> layer_impl_tree_root = | 288 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 292 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 289 TreeSynchronizer::SynchronizeTrees( |
| 293 scoped_ptr<LayerImpl>(), | 290 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 294 host_->active_tree()); | |
| 295 ExpectTreesAreIdentical(layer_tree_root.get(), | 291 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 296 layer_impl_tree_root.get(), | 292 layer_impl_tree_root.get(), |
| 297 host_->active_tree()); | 293 host_->active_tree()); |
| 298 | 294 |
| 299 // We have to push properties to pick up the destruction list pointer. | 295 // We have to push properties to pick up the destruction list pointer. |
| 300 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 296 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 301 layer_impl_tree_root.get()); | 297 layer_impl_tree_root.get()); |
| 302 | 298 |
| 303 layer_impl_tree_root->ResetAllChangeTrackingForSubtree(); | 299 layer_impl_tree_root->ResetAllChangeTrackingForSubtree(); |
| 304 | 300 |
| (...skipping 30 matching lines...) Expand all Loading... |
| 335 layer_tree_root->SetPosition(root_position); | 331 layer_tree_root->SetPosition(root_position); |
| 336 | 332 |
| 337 float first_child_opacity = 0.25f; | 333 float first_child_opacity = 0.25f; |
| 338 layer_tree_root->children()[0]->SetOpacity(first_child_opacity); | 334 layer_tree_root->children()[0]->SetOpacity(first_child_opacity); |
| 339 | 335 |
| 340 gfx::Size second_child_bounds = gfx::Size(25, 53); | 336 gfx::Size second_child_bounds = gfx::Size(25, 53); |
| 341 layer_tree_root->children()[1]->SetBounds(second_child_bounds); | 337 layer_tree_root->children()[1]->SetBounds(second_child_bounds); |
| 342 layer_tree_root->children()[1]->SavePaintProperties(); | 338 layer_tree_root->children()[1]->SavePaintProperties(); |
| 343 | 339 |
| 344 scoped_ptr<LayerImpl> layer_impl_tree_root = | 340 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 345 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 341 TreeSynchronizer::SynchronizeTrees( |
| 346 scoped_ptr<LayerImpl>(), | 342 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 347 host_->active_tree()); | |
| 348 ExpectTreesAreIdentical(layer_tree_root.get(), | 343 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 349 layer_impl_tree_root.get(), | 344 layer_impl_tree_root.get(), |
| 350 host_->active_tree()); | 345 host_->active_tree()); |
| 351 | 346 |
| 352 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 347 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 353 layer_impl_tree_root.get()); | 348 layer_impl_tree_root.get()); |
| 354 | 349 |
| 355 // Check that the property values we set on the Layer tree are reflected in | 350 // Check that the property values we set on the Layer tree are reflected in |
| 356 // the LayerImpl tree. | 351 // the LayerImpl tree. |
| 357 gfx::PointF root_layer_impl_position = layer_impl_tree_root->position(); | 352 gfx::PointF root_layer_impl_position = layer_impl_tree_root->position(); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 386 scoped_refptr<Layer> layer_b = layer_a->children()[0].get(); | 381 scoped_refptr<Layer> layer_b = layer_a->children()[0].get(); |
| 387 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 382 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
| 388 | 383 |
| 389 scoped_refptr<Layer> layer_c = layer_b->children()[0].get(); | 384 scoped_refptr<Layer> layer_c = layer_b->children()[0].get(); |
| 390 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); | 385 layer_b->AddChild(MockLayer::Create(&layer_impl_destruction_list)); |
| 391 scoped_refptr<Layer> layer_d = layer_b->children()[1].get(); | 386 scoped_refptr<Layer> layer_d = layer_b->children()[1].get(); |
| 392 | 387 |
| 393 host_->SetRootLayer(layer_tree_root); | 388 host_->SetRootLayer(layer_tree_root); |
| 394 | 389 |
| 395 scoped_ptr<LayerImpl> layer_impl_tree_root = | 390 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 396 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 391 TreeSynchronizer::SynchronizeTrees( |
| 397 scoped_ptr<LayerImpl>(), | 392 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 398 host_->active_tree()); | |
| 399 ExpectTreesAreIdentical(layer_tree_root.get(), | 393 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 400 layer_impl_tree_root.get(), | 394 layer_impl_tree_root.get(), |
| 401 host_->active_tree()); | 395 host_->active_tree()); |
| 402 | 396 |
| 403 // We have to push properties to pick up the destruction list pointer. | 397 // We have to push properties to pick up the destruction list pointer. |
| 404 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 398 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 405 layer_impl_tree_root.get()); | 399 layer_impl_tree_root.get()); |
| 406 | 400 |
| 407 // Now restructure the tree to look like this: | 401 // Now restructure the tree to look like this: |
| 408 // root --- D ---+--- A | 402 // root --- D ---+--- A |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 443 old_layer_tree_root->AddChild( | 437 old_layer_tree_root->AddChild( |
| 444 MockLayer::Create(&layer_impl_destruction_list)); | 438 MockLayer::Create(&layer_impl_destruction_list)); |
| 445 | 439 |
| 446 host_->SetRootLayer(old_layer_tree_root); | 440 host_->SetRootLayer(old_layer_tree_root); |
| 447 | 441 |
| 448 int old_tree_root_layer_id = old_layer_tree_root->id(); | 442 int old_tree_root_layer_id = old_layer_tree_root->id(); |
| 449 int old_tree_first_child_layer_id = old_layer_tree_root->children()[0]->id(); | 443 int old_tree_first_child_layer_id = old_layer_tree_root->children()[0]->id(); |
| 450 int old_tree_second_child_layer_id = old_layer_tree_root->children()[1]->id(); | 444 int old_tree_second_child_layer_id = old_layer_tree_root->children()[1]->id(); |
| 451 | 445 |
| 452 scoped_ptr<LayerImpl> layer_impl_tree_root = | 446 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 453 TreeSynchronizer::SynchronizeTrees(old_layer_tree_root.get(), | 447 TreeSynchronizer::SynchronizeTrees( |
| 454 scoped_ptr<LayerImpl>(), | 448 old_layer_tree_root.get(), nullptr, host_->active_tree()); |
| 455 host_->active_tree()); | |
| 456 ExpectTreesAreIdentical(old_layer_tree_root.get(), | 449 ExpectTreesAreIdentical(old_layer_tree_root.get(), |
| 457 layer_impl_tree_root.get(), | 450 layer_impl_tree_root.get(), |
| 458 host_->active_tree()); | 451 host_->active_tree()); |
| 459 | 452 |
| 460 // We have to push properties to pick up the destruction list pointer. | 453 // We have to push properties to pick up the destruction list pointer. |
| 461 TreeSynchronizer::PushProperties(old_layer_tree_root.get(), | 454 TreeSynchronizer::PushProperties(old_layer_tree_root.get(), |
| 462 layer_impl_tree_root.get()); | 455 layer_impl_tree_root.get()); |
| 463 | 456 |
| 464 // Remove all children on the Layer side. | 457 // Remove all children on the Layer side. |
| 465 old_layer_tree_root->RemoveAllChildren(); | 458 old_layer_tree_root->RemoveAllChildren(); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 510 // Third child gets a replica layer with a mask layer. | 503 // Third child gets a replica layer with a mask layer. |
| 511 scoped_refptr<Layer> replica_layer_with_mask = Layer::Create(); | 504 scoped_refptr<Layer> replica_layer_with_mask = Layer::Create(); |
| 512 scoped_refptr<Layer> replica_mask_layer = Layer::Create(); | 505 scoped_refptr<Layer> replica_mask_layer = Layer::Create(); |
| 513 replica_layer_with_mask->SetMaskLayer(replica_mask_layer.get()); | 506 replica_layer_with_mask->SetMaskLayer(replica_mask_layer.get()); |
| 514 layer_tree_root->children()[2]-> | 507 layer_tree_root->children()[2]-> |
| 515 SetReplicaLayer(replica_layer_with_mask.get()); | 508 SetReplicaLayer(replica_layer_with_mask.get()); |
| 516 | 509 |
| 517 host_->SetRootLayer(layer_tree_root); | 510 host_->SetRootLayer(layer_tree_root); |
| 518 | 511 |
| 519 scoped_ptr<LayerImpl> layer_impl_tree_root = | 512 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 520 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 513 TreeSynchronizer::SynchronizeTrees( |
| 521 scoped_ptr<LayerImpl>(), | 514 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 522 host_->active_tree()); | |
| 523 | 515 |
| 524 ExpectTreesAreIdentical(layer_tree_root.get(), | 516 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 525 layer_impl_tree_root.get(), | 517 layer_impl_tree_root.get(), |
| 526 host_->active_tree()); | 518 host_->active_tree()); |
| 527 | 519 |
| 528 // Remove the mask layer. | 520 // Remove the mask layer. |
| 529 layer_tree_root->children()[0]->SetMaskLayer(NULL); | 521 layer_tree_root->children()[0]->SetMaskLayer(NULL); |
| 530 layer_impl_tree_root = | 522 layer_impl_tree_root = |
| 531 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 523 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), |
| 532 layer_impl_tree_root.Pass(), | 524 layer_impl_tree_root.Pass(), |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 scoped_refptr<Layer> layer_tree_root = Layer::Create(); | 567 scoped_refptr<Layer> layer_tree_root = Layer::Create(); |
| 576 host_->SetRootLayer(layer_tree_root); | 568 host_->SetRootLayer(layer_tree_root); |
| 577 | 569 |
| 578 layer_tree_root->SetLayerAnimationControllerForTest( | 570 layer_tree_root->SetLayerAnimationControllerForTest( |
| 579 FakeLayerAnimationController::Create()); | 571 FakeLayerAnimationController::Create()); |
| 580 | 572 |
| 581 EXPECT_FALSE(static_cast<FakeLayerAnimationController*>( | 573 EXPECT_FALSE(static_cast<FakeLayerAnimationController*>( |
| 582 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); | 574 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); |
| 583 | 575 |
| 584 scoped_ptr<LayerImpl> layer_impl_tree_root = | 576 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 585 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 577 TreeSynchronizer::SynchronizeTrees( |
| 586 scoped_ptr<LayerImpl>(), | 578 layer_tree_root.get(), nullptr, host_->active_tree()); |
| 587 host_->active_tree()); | |
| 588 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 579 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 589 layer_impl_tree_root.get()); | 580 layer_impl_tree_root.get()); |
| 590 layer_impl_tree_root = | 581 layer_impl_tree_root = |
| 591 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 582 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), |
| 592 layer_impl_tree_root.Pass(), | 583 layer_impl_tree_root.Pass(), |
| 593 host_->active_tree()); | 584 host_->active_tree()); |
| 594 | 585 |
| 595 EXPECT_TRUE(static_cast<FakeLayerAnimationController*>( | 586 EXPECT_TRUE(static_cast<FakeLayerAnimationController*>( |
| 596 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); | 587 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); |
| 597 } | 588 } |
| (...skipping 20 matching lines...) Expand all Loading... |
| 618 layer_tree_root->AddChild(Layer::Create()); | 609 layer_tree_root->AddChild(Layer::Create()); |
| 619 layer_tree_root->AddChild(Layer::Create()); | 610 layer_tree_root->AddChild(Layer::Create()); |
| 620 | 611 |
| 621 host_->SetRootLayer(layer_tree_root); | 612 host_->SetRootLayer(layer_tree_root); |
| 622 | 613 |
| 623 // First child is the second and third child's scroll parent. | 614 // First child is the second and third child's scroll parent. |
| 624 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get()); | 615 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get()); |
| 625 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get()); | 616 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get()); |
| 626 | 617 |
| 627 scoped_ptr<LayerImpl> layer_impl_tree_root = | 618 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 628 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 619 TreeSynchronizer::SynchronizeTrees( |
| 629 scoped_ptr<LayerImpl>(), | 620 layer_tree_root.get(), nullptr, host_impl->active_tree()); |
| 630 host_impl->active_tree()); | |
| 631 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 621 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 632 layer_impl_tree_root.get()); | 622 layer_impl_tree_root.get()); |
| 633 { | 623 { |
| 634 SCOPED_TRACE("case one"); | 624 SCOPED_TRACE("case one"); |
| 635 ExpectTreesAreIdentical(layer_tree_root.get(), | 625 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 636 layer_impl_tree_root.get(), | 626 layer_impl_tree_root.get(), |
| 637 host_impl->active_tree()); | 627 host_impl->active_tree()); |
| 638 } | 628 } |
| 639 | 629 |
| 640 // Remove the first scroll child. | 630 // Remove the first scroll child. |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 696 intervening->AddChild(clip_child1); | 686 intervening->AddChild(clip_child1); |
| 697 intervening->AddChild(clip_child2); | 687 intervening->AddChild(clip_child2); |
| 698 | 688 |
| 699 host_->SetRootLayer(layer_tree_root); | 689 host_->SetRootLayer(layer_tree_root); |
| 700 | 690 |
| 701 // First child is the second and third child's scroll parent. | 691 // First child is the second and third child's scroll parent. |
| 702 clip_child1->SetClipParent(clip_parent.get()); | 692 clip_child1->SetClipParent(clip_parent.get()); |
| 703 clip_child2->SetClipParent(clip_parent.get()); | 693 clip_child2->SetClipParent(clip_parent.get()); |
| 704 | 694 |
| 705 scoped_ptr<LayerImpl> layer_impl_tree_root = | 695 scoped_ptr<LayerImpl> layer_impl_tree_root = |
| 706 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), | 696 TreeSynchronizer::SynchronizeTrees( |
| 707 scoped_ptr<LayerImpl>(), | 697 layer_tree_root.get(), nullptr, host_impl->active_tree()); |
| 708 host_impl->active_tree()); | |
| 709 TreeSynchronizer::PushProperties(layer_tree_root.get(), | 698 TreeSynchronizer::PushProperties(layer_tree_root.get(), |
| 710 layer_impl_tree_root.get()); | 699 layer_impl_tree_root.get()); |
| 711 ExpectTreesAreIdentical(layer_tree_root.get(), | 700 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 712 layer_impl_tree_root.get(), | 701 layer_impl_tree_root.get(), |
| 713 host_impl->active_tree()); | 702 host_impl->active_tree()); |
| 714 | 703 |
| 715 // Remove the first clip child. | 704 // Remove the first clip child. |
| 716 clip_child1->RemoveFromParent(); | 705 clip_child1->RemoveFromParent(); |
| 717 clip_child1 = NULL; | 706 clip_child1 = NULL; |
| 718 | 707 |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 host_impl->active_tree()); | 743 host_impl->active_tree()); |
| 755 | 744 |
| 756 // The clip children should have been unhooked. | 745 // The clip children should have been unhooked. |
| 757 EXPECT_EQ(2u, intervening->children().size()); | 746 EXPECT_EQ(2u, intervening->children().size()); |
| 758 EXPECT_FALSE(clip_child2->clip_parent()); | 747 EXPECT_FALSE(clip_child2->clip_parent()); |
| 759 EXPECT_FALSE(additional_clip_child->clip_parent()); | 748 EXPECT_FALSE(additional_clip_child->clip_parent()); |
| 760 } | 749 } |
| 761 | 750 |
| 762 } // namespace | 751 } // namespace |
| 763 } // namespace cc | 752 } // namespace cc |
| OLD | NEW |