Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(251)

Side by Side Diff: cc/trees/tree_synchronizer_unittest.cc

Issue 1808373002: cc : Make tree synchronization independent of layer tree hierarchy (2) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« cc/trees/tree_synchronizer.cc ('K') | « cc/trees/tree_synchronizer.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 clip_children_impl->end()); 188 clip_children_impl->end());
189 } 189 }
190 190
191 for (size_t i = 0; i < layer_children.size(); ++i) { 191 for (size_t i = 0; i < layer_children.size(); ++i) {
192 SCOPED_TRACE(base::StringPrintf("child layer %" PRIuS, i).c_str()); 192 SCOPED_TRACE(base::StringPrintf("child layer %" PRIuS, i).c_str());
193 ExpectTreesAreIdentical(layer_children[i].get(), 193 ExpectTreesAreIdentical(layer_children[i].get(),
194 layer_impl_children[i].get(), tree_impl); 194 layer_impl_children[i].get(), tree_impl);
195 } 195 }
196 } 196 }
197 197
198 void PushLayerPropertiesTo(LayerTreeHost* tree_host, LayerTreeImpl* tree_impl) {
199 std::unordered_set<Layer*> layers_that_should_push_properties =
200 tree_host->LayersThatShouldPushProperties();
201 for (auto layer : layers_that_should_push_properties) {
202 LayerImpl* impl_layer = tree_impl->LayerById(layer->id());
203 DCHECK(impl_layer) << layer->id();
204 layer->PushPropertiesTo(impl_layer);
205 }
206 }
207
198 class LayerTreeSettingsForTreeSynchronizerTest : public LayerTreeSettings { 208 class LayerTreeSettingsForTreeSynchronizerTest : public LayerTreeSettings {
199 public: 209 public:
200 LayerTreeSettingsForTreeSynchronizerTest() { 210 LayerTreeSettingsForTreeSynchronizerTest() {
201 use_compositor_animation_timelines = true; 211 use_compositor_animation_timelines = true;
202 } 212 }
203 }; 213 };
204 214
205 class TreeSynchronizerTest : public testing::Test { 215 class TreeSynchronizerTest : public testing::Test {
206 public: 216 public:
207 TreeSynchronizerTest() 217 TreeSynchronizerTest()
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 host_->SetRootLayer(layer_tree_root); 292 host_->SetRootLayer(layer_tree_root);
283 293
284 scoped_ptr<LayerImpl> layer_impl_tree_root = 294 scoped_ptr<LayerImpl> layer_impl_tree_root =
285 TreeSynchronizer::SynchronizeTrees( 295 TreeSynchronizer::SynchronizeTrees(
286 layer_tree_root.get(), nullptr, host_->active_tree()); 296 layer_tree_root.get(), nullptr, host_->active_tree());
287 ExpectTreesAreIdentical(layer_tree_root.get(), 297 ExpectTreesAreIdentical(layer_tree_root.get(),
288 layer_impl_tree_root.get(), 298 layer_impl_tree_root.get(),
289 host_->active_tree()); 299 host_->active_tree());
290 300
291 // We have to push properties to pick up the destruction list pointer. 301 // We have to push properties to pick up the destruction list pointer.
292 TreeSynchronizer::PushProperties(layer_tree_root.get(), 302 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
293 layer_impl_tree_root.get()); 303 host_->active_tree());
294 304
295 // Add a new layer to the Layer side 305 // Add a new layer to the Layer side
296 layer_tree_root->children()[0]->AddChild( 306 layer_tree_root->children()[0]->AddChild(
297 MockLayer::Create(layer_settings_, &layer_impl_destruction_list)); 307 MockLayer::Create(layer_settings_, &layer_impl_destruction_list));
298 // Remove one. 308 // Remove one.
299 layer_tree_root->children()[1]->RemoveFromParent(); 309 layer_tree_root->children()[1]->RemoveFromParent();
300 int second_layer_impl_id = layer_impl_tree_root->children()[1]->id(); 310 int second_layer_impl_id = layer_impl_tree_root->children()[1]->id();
301 311
302 // Synchronize again. After the sync the trees should be equivalent and we 312 // Synchronize again. After the sync the trees should be equivalent and we
303 // should have created and destroyed one LayerImpl. 313 // should have created and destroyed one LayerImpl.
(...skipping 26 matching lines...) Expand all
330 host_->SetRootLayer(layer_tree_root); 340 host_->SetRootLayer(layer_tree_root);
331 341
332 scoped_ptr<LayerImpl> layer_impl_tree_root = 342 scoped_ptr<LayerImpl> layer_impl_tree_root =
333 TreeSynchronizer::SynchronizeTrees( 343 TreeSynchronizer::SynchronizeTrees(
334 layer_tree_root.get(), nullptr, host_->active_tree()); 344 layer_tree_root.get(), nullptr, host_->active_tree());
335 ExpectTreesAreIdentical(layer_tree_root.get(), 345 ExpectTreesAreIdentical(layer_tree_root.get(),
336 layer_impl_tree_root.get(), 346 layer_impl_tree_root.get(),
337 host_->active_tree()); 347 host_->active_tree());
338 348
339 // We have to push properties to pick up the destruction list pointer. 349 // We have to push properties to pick up the destruction list pointer.
340 TreeSynchronizer::PushProperties(layer_tree_root.get(), 350 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
341 layer_impl_tree_root.get()); 351 host_->active_tree());
342 352
343 layer_impl_tree_root->ResetAllChangeTrackingForSubtree(); 353 layer_impl_tree_root->ResetAllChangeTrackingForSubtree();
344 354
345 // re-insert the layer and sync again. 355 // re-insert the layer and sync again.
346 child2->RemoveFromParent(); 356 child2->RemoveFromParent();
347 layer_tree_root->AddChild(child2); 357 layer_tree_root->AddChild(child2);
348 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 358 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
349 layer_tree_root.get(), std::move(layer_impl_tree_root), 359 layer_tree_root.get(), std::move(layer_impl_tree_root),
350 host_->active_tree()); 360 host_->active_tree());
351 ExpectTreesAreIdentical(layer_tree_root.get(), 361 ExpectTreesAreIdentical(layer_tree_root.get(),
352 layer_impl_tree_root.get(), 362 layer_impl_tree_root.get(),
353 host_->active_tree()); 363 host_->active_tree());
354 364
355 TreeSynchronizer::PushProperties(layer_tree_root.get(), 365 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
356 layer_impl_tree_root.get()); 366 host_->active_tree());
357 367
358 // Check that the impl thread properly tracked the change. 368 // Check that the impl thread properly tracked the change.
359 EXPECT_FALSE(layer_impl_tree_root->LayerPropertyChanged()); 369 EXPECT_FALSE(layer_impl_tree_root->LayerPropertyChanged());
360 EXPECT_FALSE(layer_impl_tree_root->children()[0]->LayerPropertyChanged()); 370 EXPECT_FALSE(layer_impl_tree_root->children()[0]->LayerPropertyChanged());
361 EXPECT_TRUE(layer_impl_tree_root->children()[1]->LayerPropertyChanged()); 371 EXPECT_TRUE(layer_impl_tree_root->children()[1]->LayerPropertyChanged());
362 } 372 }
363 373
364 TEST_F(TreeSynchronizerTest, SyncSimpleTreeAndProperties) { 374 TEST_F(TreeSynchronizerTest, SyncSimpleTreeAndProperties) {
365 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings_); 375 scoped_refptr<Layer> layer_tree_root = Layer::Create(layer_settings_);
366 layer_tree_root->AddChild(Layer::Create(layer_settings_)); 376 layer_tree_root->AddChild(Layer::Create(layer_settings_));
(...skipping 13 matching lines...) Expand all
380 layer_tree_root->children()[1]->SetBounds(second_child_bounds); 390 layer_tree_root->children()[1]->SetBounds(second_child_bounds);
381 layer_tree_root->children()[1]->SavePaintProperties(); 391 layer_tree_root->children()[1]->SavePaintProperties();
382 392
383 scoped_ptr<LayerImpl> layer_impl_tree_root = 393 scoped_ptr<LayerImpl> layer_impl_tree_root =
384 TreeSynchronizer::SynchronizeTrees( 394 TreeSynchronizer::SynchronizeTrees(
385 layer_tree_root.get(), nullptr, host_->active_tree()); 395 layer_tree_root.get(), nullptr, host_->active_tree());
386 ExpectTreesAreIdentical(layer_tree_root.get(), 396 ExpectTreesAreIdentical(layer_tree_root.get(),
387 layer_impl_tree_root.get(), 397 layer_impl_tree_root.get(),
388 host_->active_tree()); 398 host_->active_tree());
389 399
390 TreeSynchronizer::PushProperties(layer_tree_root.get(), 400 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
391 layer_impl_tree_root.get()); 401 host_->active_tree());
392 402
393 // Check that the property values we set on the Layer tree are reflected in 403 // Check that the property values we set on the Layer tree are reflected in
394 // the LayerImpl tree. 404 // the LayerImpl tree.
395 gfx::PointF root_layer_impl_position = layer_impl_tree_root->position(); 405 gfx::PointF root_layer_impl_position = layer_impl_tree_root->position();
396 EXPECT_EQ(root_position.x(), root_layer_impl_position.x()); 406 EXPECT_EQ(root_position.x(), root_layer_impl_position.x());
397 EXPECT_EQ(root_position.y(), root_layer_impl_position.y()); 407 EXPECT_EQ(root_position.y(), root_layer_impl_position.y());
398 408
399 EXPECT_EQ(first_child_opacity, 409 EXPECT_EQ(first_child_opacity,
400 layer_impl_tree_root->children()[0]->opacity()); 410 layer_impl_tree_root->children()[0]->opacity());
401 411
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 host_->SetRootLayer(layer_tree_root); 445 host_->SetRootLayer(layer_tree_root);
436 446
437 scoped_ptr<LayerImpl> layer_impl_tree_root = 447 scoped_ptr<LayerImpl> layer_impl_tree_root =
438 TreeSynchronizer::SynchronizeTrees( 448 TreeSynchronizer::SynchronizeTrees(
439 layer_tree_root.get(), nullptr, host_->active_tree()); 449 layer_tree_root.get(), nullptr, host_->active_tree());
440 ExpectTreesAreIdentical(layer_tree_root.get(), 450 ExpectTreesAreIdentical(layer_tree_root.get(),
441 layer_impl_tree_root.get(), 451 layer_impl_tree_root.get(),
442 host_->active_tree()); 452 host_->active_tree());
443 453
444 // We have to push properties to pick up the destruction list pointer. 454 // We have to push properties to pick up the destruction list pointer.
445 TreeSynchronizer::PushProperties(layer_tree_root.get(), 455 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
446 layer_impl_tree_root.get()); 456 host_->active_tree());
447 457
448 // Now restructure the tree to look like this: 458 // Now restructure the tree to look like this:
449 // root --- D ---+--- A 459 // root --- D ---+--- A
450 // | 460 // |
451 // +--- C --- B 461 // +--- C --- B
452 layer_tree_root->RemoveAllChildren(); 462 layer_tree_root->RemoveAllChildren();
453 layer_d->RemoveAllChildren(); 463 layer_d->RemoveAllChildren();
454 layer_tree_root->AddChild(layer_d); 464 layer_tree_root->AddChild(layer_d);
455 layer_a->RemoveAllChildren(); 465 layer_a->RemoveAllChildren();
456 layer_d->AddChild(layer_a); 466 layer_d->AddChild(layer_a);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 int old_tree_second_child_layer_id = old_layer_tree_root->children()[1]->id(); 500 int old_tree_second_child_layer_id = old_layer_tree_root->children()[1]->id();
491 501
492 scoped_ptr<LayerImpl> layer_impl_tree_root = 502 scoped_ptr<LayerImpl> layer_impl_tree_root =
493 TreeSynchronizer::SynchronizeTrees( 503 TreeSynchronizer::SynchronizeTrees(
494 old_layer_tree_root.get(), nullptr, host_->active_tree()); 504 old_layer_tree_root.get(), nullptr, host_->active_tree());
495 ExpectTreesAreIdentical(old_layer_tree_root.get(), 505 ExpectTreesAreIdentical(old_layer_tree_root.get(),
496 layer_impl_tree_root.get(), 506 layer_impl_tree_root.get(),
497 host_->active_tree()); 507 host_->active_tree());
498 508
499 // We have to push properties to pick up the destruction list pointer. 509 // We have to push properties to pick up the destruction list pointer.
500 TreeSynchronizer::PushProperties(old_layer_tree_root.get(), 510 PushLayerPropertiesTo(old_layer_tree_root->layer_tree_host(),
501 layer_impl_tree_root.get()); 511 host_->active_tree());
502 512
503 // Remove all children on the Layer side. 513 // Remove all children on the Layer side.
504 old_layer_tree_root->RemoveAllChildren(); 514 old_layer_tree_root->RemoveAllChildren();
505 515
506 // Synchronize again. After the sync all LayerImpls from the old tree should 516 // Synchronize again. After the sync all LayerImpls from the old tree should
507 // be deleted. 517 // be deleted.
508 scoped_refptr<Layer> new_layer_tree_root = Layer::Create(layer_settings_); 518 scoped_refptr<Layer> new_layer_tree_root = Layer::Create(layer_settings_);
509 host_->SetRootLayer(new_layer_tree_root); 519 host_->SetRootLayer(new_layer_tree_root);
510 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 520 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
511 new_layer_tree_root.get(), std::move(layer_impl_tree_root), 521 new_layer_tree_root.get(), std::move(layer_impl_tree_root),
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 620
611 layer_tree_root->SetLayerAnimationControllerForTest( 621 layer_tree_root->SetLayerAnimationControllerForTest(
612 FakeLayerAnimationController::Create()); 622 FakeLayerAnimationController::Create());
613 623
614 EXPECT_FALSE(static_cast<FakeLayerAnimationController*>( 624 EXPECT_FALSE(static_cast<FakeLayerAnimationController*>(
615 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); 625 layer_tree_root->layer_animation_controller())->SynchronizedAnimations());
616 626
617 scoped_ptr<LayerImpl> layer_impl_tree_root = 627 scoped_ptr<LayerImpl> layer_impl_tree_root =
618 TreeSynchronizer::SynchronizeTrees( 628 TreeSynchronizer::SynchronizeTrees(
619 layer_tree_root.get(), nullptr, host_->active_tree()); 629 layer_tree_root.get(), nullptr, host_->active_tree());
620 TreeSynchronizer::PushProperties(layer_tree_root.get(), 630 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
621 layer_impl_tree_root.get()); 631 host_impl->active_tree());
622 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 632 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
623 layer_tree_root.get(), std::move(layer_impl_tree_root), 633 layer_tree_root.get(), std::move(layer_impl_tree_root),
624 host_->active_tree()); 634 host_->active_tree());
625 635
626 EXPECT_TRUE(static_cast<FakeLayerAnimationController*>( 636 EXPECT_TRUE(static_cast<FakeLayerAnimationController*>(
627 layer_tree_root->layer_animation_controller())->SynchronizedAnimations()); 637 layer_tree_root->layer_animation_controller())->SynchronizedAnimations());
628 } 638 }
629 639
630 TEST_F(TreeSynchronizerTest, SynchronizeScrollParent) { 640 TEST_F(TreeSynchronizerTest, SynchronizeScrollParent) {
631 LayerTreeSettings settings; 641 LayerTreeSettings settings;
(...skipping 13 matching lines...) Expand all
645 655
646 host_->SetRootLayer(layer_tree_root); 656 host_->SetRootLayer(layer_tree_root);
647 657
648 // First child is the second and third child's scroll parent. 658 // First child is the second and third child's scroll parent.
649 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get()); 659 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get());
650 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get()); 660 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get());
651 661
652 scoped_ptr<LayerImpl> layer_impl_tree_root = 662 scoped_ptr<LayerImpl> layer_impl_tree_root =
653 TreeSynchronizer::SynchronizeTrees( 663 TreeSynchronizer::SynchronizeTrees(
654 layer_tree_root.get(), nullptr, host_impl->active_tree()); 664 layer_tree_root.get(), nullptr, host_impl->active_tree());
655 TreeSynchronizer::PushProperties(layer_tree_root.get(), 665 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
656 layer_impl_tree_root.get()); 666 host_impl->active_tree());
657 { 667 {
658 SCOPED_TRACE("case one"); 668 SCOPED_TRACE("case one");
659 ExpectTreesAreIdentical(layer_tree_root.get(), 669 ExpectTreesAreIdentical(layer_tree_root.get(),
660 layer_impl_tree_root.get(), 670 layer_impl_tree_root.get(),
661 host_impl->active_tree()); 671 host_impl->active_tree());
662 } 672 }
663 673
664 // Remove the first scroll child. 674 // Remove the first scroll child.
665 layer_tree_root->children()[1]->RemoveFromParent(); 675 layer_tree_root->children()[1]->RemoveFromParent();
666 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 676 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
667 layer_tree_root.get(), std::move(layer_impl_tree_root), 677 layer_tree_root.get(), std::move(layer_impl_tree_root),
668 host_impl->active_tree()); 678 host_impl->active_tree());
669 TreeSynchronizer::PushProperties(layer_tree_root.get(), 679 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
670 layer_impl_tree_root.get()); 680 host_impl->active_tree());
671 { 681 {
672 SCOPED_TRACE("case two"); 682 SCOPED_TRACE("case two");
673 ExpectTreesAreIdentical(layer_tree_root.get(), 683 ExpectTreesAreIdentical(layer_tree_root.get(),
674 layer_impl_tree_root.get(), 684 layer_impl_tree_root.get(),
675 host_impl->active_tree()); 685 host_impl->active_tree());
676 } 686 }
677 687
678 // Add an additional scroll layer. 688 // Add an additional scroll layer.
679 scoped_refptr<Layer> additional_scroll_child = Layer::Create(layer_settings_); 689 scoped_refptr<Layer> additional_scroll_child = Layer::Create(layer_settings_);
680 layer_tree_root->AddChild(additional_scroll_child); 690 layer_tree_root->AddChild(additional_scroll_child);
681 additional_scroll_child->SetScrollParent(scroll_parent.get()); 691 additional_scroll_child->SetScrollParent(scroll_parent.get());
682 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 692 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
683 layer_tree_root.get(), std::move(layer_impl_tree_root), 693 layer_tree_root.get(), std::move(layer_impl_tree_root),
684 host_impl->active_tree()); 694 host_impl->active_tree());
685 TreeSynchronizer::PushProperties(layer_tree_root.get(), 695 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
686 layer_impl_tree_root.get()); 696 host_impl->active_tree());
687 { 697 {
688 SCOPED_TRACE("case three"); 698 SCOPED_TRACE("case three");
689 ExpectTreesAreIdentical(layer_tree_root.get(), 699 ExpectTreesAreIdentical(layer_tree_root.get(),
690 layer_impl_tree_root.get(), 700 layer_impl_tree_root.get(),
691 host_impl->active_tree()); 701 host_impl->active_tree());
692 } 702 }
693 } 703 }
694 704
695 TEST_F(TreeSynchronizerTest, SynchronizeClipParent) { 705 TEST_F(TreeSynchronizerTest, SynchronizeClipParent) {
696 LayerTreeSettings settings; 706 LayerTreeSettings settings;
(...skipping 17 matching lines...) Expand all
714 724
715 host_->SetRootLayer(layer_tree_root); 725 host_->SetRootLayer(layer_tree_root);
716 726
717 // First child is the second and third child's scroll parent. 727 // First child is the second and third child's scroll parent.
718 clip_child1->SetClipParent(clip_parent.get()); 728 clip_child1->SetClipParent(clip_parent.get());
719 clip_child2->SetClipParent(clip_parent.get()); 729 clip_child2->SetClipParent(clip_parent.get());
720 730
721 scoped_ptr<LayerImpl> layer_impl_tree_root = 731 scoped_ptr<LayerImpl> layer_impl_tree_root =
722 TreeSynchronizer::SynchronizeTrees( 732 TreeSynchronizer::SynchronizeTrees(
723 layer_tree_root.get(), nullptr, host_impl->active_tree()); 733 layer_tree_root.get(), nullptr, host_impl->active_tree());
724 TreeSynchronizer::PushProperties(layer_tree_root.get(), 734 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
725 layer_impl_tree_root.get()); 735 host_impl->active_tree());
726 ExpectTreesAreIdentical(layer_tree_root.get(), 736 ExpectTreesAreIdentical(layer_tree_root.get(),
727 layer_impl_tree_root.get(), 737 layer_impl_tree_root.get(),
728 host_impl->active_tree()); 738 host_impl->active_tree());
729 739
730 // Remove the first clip child. 740 // Remove the first clip child.
731 clip_child1->RemoveFromParent(); 741 clip_child1->RemoveFromParent();
732 clip_child1 = NULL; 742 clip_child1 = NULL;
733 743
734 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 744 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
735 layer_tree_root.get(), std::move(layer_impl_tree_root), 745 layer_tree_root.get(), std::move(layer_impl_tree_root),
736 host_impl->active_tree()); 746 host_impl->active_tree());
737 TreeSynchronizer::PushProperties(layer_tree_root.get(), 747 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
738 layer_impl_tree_root.get()); 748 host_impl->active_tree());
739 ExpectTreesAreIdentical(layer_tree_root.get(), 749 ExpectTreesAreIdentical(layer_tree_root.get(),
740 layer_impl_tree_root.get(), 750 layer_impl_tree_root.get(),
741 host_impl->active_tree()); 751 host_impl->active_tree());
742 752
743 // Add an additional clip child. 753 // Add an additional clip child.
744 scoped_refptr<Layer> additional_clip_child = Layer::Create(layer_settings_); 754 scoped_refptr<Layer> additional_clip_child = Layer::Create(layer_settings_);
745 intervening->AddChild(additional_clip_child); 755 intervening->AddChild(additional_clip_child);
746 additional_clip_child->SetClipParent(clip_parent.get()); 756 additional_clip_child->SetClipParent(clip_parent.get());
747 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 757 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
748 layer_tree_root.get(), std::move(layer_impl_tree_root), 758 layer_tree_root.get(), std::move(layer_impl_tree_root),
749 host_impl->active_tree()); 759 host_impl->active_tree());
750 TreeSynchronizer::PushProperties(layer_tree_root.get(), 760 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
751 layer_impl_tree_root.get()); 761 host_impl->active_tree());
752 ExpectTreesAreIdentical(layer_tree_root.get(), 762 ExpectTreesAreIdentical(layer_tree_root.get(),
753 layer_impl_tree_root.get(), 763 layer_impl_tree_root.get(),
754 host_impl->active_tree()); 764 host_impl->active_tree());
755 765
756 // Remove the nearest clipping ancestor. 766 // Remove the nearest clipping ancestor.
757 clip_parent->RemoveFromParent(); 767 clip_parent->RemoveFromParent();
758 clip_parent = NULL; 768 clip_parent = NULL;
759 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees( 769 layer_impl_tree_root = TreeSynchronizer::SynchronizeTrees(
760 layer_tree_root.get(), std::move(layer_impl_tree_root), 770 layer_tree_root.get(), std::move(layer_impl_tree_root),
761 host_impl->active_tree()); 771 host_impl->active_tree());
762 TreeSynchronizer::PushProperties(layer_tree_root.get(), 772 PushLayerPropertiesTo(layer_tree_root->layer_tree_host(),
763 layer_impl_tree_root.get()); 773 host_impl->active_tree());
764 ExpectTreesAreIdentical(layer_tree_root.get(), 774 ExpectTreesAreIdentical(layer_tree_root.get(),
765 layer_impl_tree_root.get(), 775 layer_impl_tree_root.get(),
766 host_impl->active_tree()); 776 host_impl->active_tree());
767 777
768 // The clip children should have been unhooked. 778 // The clip children should have been unhooked.
769 EXPECT_EQ(2u, intervening->children().size()); 779 EXPECT_EQ(2u, intervening->children().size());
770 EXPECT_FALSE(clip_child2->clip_parent()); 780 EXPECT_FALSE(clip_child2->clip_parent());
771 EXPECT_FALSE(additional_clip_child->clip_parent()); 781 EXPECT_FALSE(additional_clip_child->clip_parent());
772 } 782 }
773 783
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread(); 920 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread();
911 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50)); 921 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50));
912 scroll_offset_map[scroll_layer->id()]->PushFromMainThread( 922 scroll_offset_map[scroll_layer->id()]->PushFromMainThread(
913 gfx::ScrollOffset(100, 100)); 923 gfx::ScrollOffset(100, 100));
914 scroll_offset_map[scroll_layer->id()]->PushPendingToActive(); 924 scroll_offset_map[scroll_layer->id()]->PushPendingToActive();
915 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map())); 925 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map()));
916 } 926 }
917 927
918 } // namespace 928 } // namespace
919 } // namespace cc 929 } // namespace cc
OLDNEW
« cc/trees/tree_synchronizer.cc ('K') | « cc/trees/tree_synchronizer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698