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

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

Issue 1924933002: cc : Stop pushing properties not used by LayerImpl to LayerImpl (4) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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
« no previous file with comments | « 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 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 SCOPED_TRACE("replica_layer"); 102 SCOPED_TRACE("replica_layer");
103 ExpectTreesAreIdentical(layer->replica_layer(), layer_impl->replica_layer(), 103 ExpectTreesAreIdentical(layer->replica_layer(), layer_impl->replica_layer(),
104 tree_impl); 104 tree_impl);
105 } 105 }
106 106
107 const LayerList& layer_children = layer->children(); 107 const LayerList& layer_children = layer->children();
108 const LayerImplList& layer_impl_children = layer_impl->children(); 108 const LayerImplList& layer_impl_children = layer_impl->children();
109 109
110 ASSERT_EQ(layer_children.size(), layer_impl_children.size()); 110 ASSERT_EQ(layer_children.size(), layer_impl_children.size());
111 111
112 const std::set<Layer*>* layer_scroll_children = layer->scroll_children(); 112 const Layer* layer_scroll_parent = layer->scroll_parent();
113 const std::set<LayerImpl*>* layer_impl_scroll_children =
114 layer_impl->scroll_children();
115 113
116 ASSERT_EQ(!!layer_scroll_children, !!layer_impl_scroll_children); 114 if (layer_scroll_parent) {
117 115 ASSERT_TRUE(layer_scroll_parent->scroll_children()->find(layer) !=
118 if (layer_scroll_children) { 116 layer_scroll_parent->scroll_children()->end());
119 ASSERT_EQ(layer_scroll_children->size(),
120 layer_impl_scroll_children->size());
121 } 117 }
122 118
123 const Layer* layer_scroll_parent = layer->scroll_parent();
124 const LayerImpl* layer_impl_scroll_parent = layer_impl->scroll_parent();
125
126 ASSERT_EQ(!!layer_scroll_parent, !!layer_impl_scroll_parent);
127
128 if (layer_scroll_parent) {
129 ASSERT_EQ(layer_scroll_parent->id(), layer_impl_scroll_parent->id());
130 ASSERT_TRUE(layer_scroll_parent->scroll_children()->find(layer) !=
131 layer_scroll_parent->scroll_children()->end());
132 ASSERT_TRUE(layer_impl_scroll_parent->scroll_children()->find(layer_impl) !=
133 layer_impl_scroll_parent->scroll_children()->end());
134 }
135
136 const std::set<Layer*>* layer_clip_children = layer->clip_children();
137 const std::set<LayerImpl*>* layer_impl_clip_children =
138 layer_impl->clip_children();
139
140 ASSERT_EQ(!!layer_clip_children, !!layer_impl_clip_children);
141
142 if (layer_clip_children)
143 ASSERT_EQ(layer_clip_children->size(), layer_impl_clip_children->size());
144
145 const Layer* layer_clip_parent = layer->clip_parent(); 119 const Layer* layer_clip_parent = layer->clip_parent();
146 const LayerImpl* layer_impl_clip_parent = layer_impl->clip_parent();
147
148 ASSERT_EQ(!!layer_clip_parent, !!layer_impl_clip_parent);
149 120
150 if (layer_clip_parent) { 121 if (layer_clip_parent) {
151 const std::set<LayerImpl*>* clip_children_impl =
152 layer_impl_clip_parent->clip_children();
153 const std::set<Layer*>* clip_children = layer_clip_parent->clip_children(); 122 const std::set<Layer*>* clip_children = layer_clip_parent->clip_children();
154 ASSERT_EQ(layer_clip_parent->id(), layer_impl_clip_parent->id());
155 ASSERT_TRUE(clip_children->find(layer) != clip_children->end()); 123 ASSERT_TRUE(clip_children->find(layer) != clip_children->end());
156 ASSERT_TRUE(clip_children_impl->find(layer_impl) !=
157 clip_children_impl->end());
158 } 124 }
159 125
160 for (size_t i = 0; i < layer_children.size(); ++i) { 126 for (size_t i = 0; i < layer_children.size(); ++i) {
161 SCOPED_TRACE(base::StringPrintf("child layer %" PRIuS, i).c_str()); 127 SCOPED_TRACE(base::StringPrintf("child layer %" PRIuS, i).c_str());
162 ExpectTreesAreIdentical(layer_children[i].get(), layer_impl_children[i], 128 ExpectTreesAreIdentical(layer_children[i].get(), layer_impl_children[i],
163 tree_impl); 129 tree_impl);
164 } 130 }
165 } 131 }
166 132
167 class TreeSynchronizerTest : public testing::Test { 133 class TreeSynchronizerTest : public testing::Test {
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 replica_layer_with_mask->SetMaskLayer(NULL); 489 replica_layer_with_mask->SetMaskLayer(NULL);
524 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(), 490 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
525 host_->active_tree()); 491 host_->active_tree());
526 layer_impl_tree_root = host_->active_tree()->root_layer(); 492 layer_impl_tree_root = host_->active_tree()->root_layer();
527 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root, 493 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
528 host_->active_tree()); 494 host_->active_tree());
529 495
530 host_->active_tree()->ClearLayers(); 496 host_->active_tree()->ClearLayers();
531 } 497 }
532 498
533 TEST_F(TreeSynchronizerTest, SynchronizeScrollParent) {
534 LayerTreeSettings settings;
535 FakeImplTaskRunnerProvider task_runner_provider;
536 FakeRenderingStatsInstrumentation stats_instrumentation;
537 FakeLayerTreeHostImplClient impl_client;
538 TestSharedBitmapManager shared_bitmap_manager;
539 TestTaskGraphRunner task_graph_runner;
540 std::unique_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create(
541 settings, &impl_client, &task_runner_provider, &stats_instrumentation,
542 &shared_bitmap_manager, nullptr, &task_graph_runner, 0);
543
544 scoped_refptr<Layer> layer_tree_root = Layer::Create();
545 scoped_refptr<Layer> scroll_parent = Layer::Create();
546 layer_tree_root->AddChild(scroll_parent);
547 layer_tree_root->AddChild(Layer::Create());
548 layer_tree_root->AddChild(Layer::Create());
549
550 host_->SetRootLayer(layer_tree_root);
551
552 // First child is the second and third child's scroll parent.
553 layer_tree_root->children()[1]->SetScrollParent(scroll_parent.get());
554 layer_tree_root->children()[2]->SetScrollParent(scroll_parent.get());
555
556 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
557 host_impl->active_tree());
558 LayerImpl* layer_impl_tree_root = host_impl->active_tree()->root_layer();
559 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
560 host_impl->active_tree());
561 {
562 SCOPED_TRACE("case one");
563 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
564 host_impl->active_tree());
565 }
566
567 // Remove the first scroll child.
568 layer_tree_root->children()[1]->RemoveFromParent();
569 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
570 host_impl->active_tree());
571 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
572 host_impl->active_tree());
573 {
574 SCOPED_TRACE("case two");
575 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
576 host_impl->active_tree());
577 }
578
579 // Add an additional scroll layer.
580 scoped_refptr<Layer> additional_scroll_child = Layer::Create();
581 layer_tree_root->AddChild(additional_scroll_child);
582 additional_scroll_child->SetScrollParent(scroll_parent.get());
583 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
584 host_impl->active_tree());
585 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
586 host_impl->active_tree());
587 {
588 SCOPED_TRACE("case three");
589 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
590 host_impl->active_tree());
591 }
592 }
593
594 TEST_F(TreeSynchronizerTest, SynchronizeClipParent) {
595 LayerTreeSettings settings;
596 FakeImplTaskRunnerProvider task_runner_provider;
597 FakeRenderingStatsInstrumentation stats_instrumentation;
598 FakeLayerTreeHostImplClient impl_client;
599 TestSharedBitmapManager shared_bitmap_manager;
600 TestTaskGraphRunner task_graph_runner;
601 std::unique_ptr<LayerTreeHostImpl> host_impl = LayerTreeHostImpl::Create(
602 settings, &impl_client, &task_runner_provider, &stats_instrumentation,
603 &shared_bitmap_manager, nullptr, &task_graph_runner, 0);
604
605 scoped_refptr<Layer> layer_tree_root = Layer::Create();
606 scoped_refptr<Layer> clip_parent = Layer::Create();
607 scoped_refptr<Layer> intervening = Layer::Create();
608 scoped_refptr<Layer> clip_child1 = Layer::Create();
609 scoped_refptr<Layer> clip_child2 = Layer::Create();
610 layer_tree_root->AddChild(clip_parent);
611 clip_parent->AddChild(intervening);
612 intervening->AddChild(clip_child1);
613 intervening->AddChild(clip_child2);
614
615 host_->SetRootLayer(layer_tree_root);
616
617 // First child is the second and third child's scroll parent.
618 clip_child1->SetClipParent(clip_parent.get());
619 clip_child2->SetClipParent(clip_parent.get());
620
621 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
622 host_impl->active_tree());
623 LayerImpl* layer_impl_tree_root = host_impl->active_tree()->root_layer();
624 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
625 host_impl->active_tree());
626 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
627 host_impl->active_tree());
628
629 // Remove the first clip child.
630 clip_child1->RemoveFromParent();
631 clip_child1 = NULL;
632
633 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
634 host_impl->active_tree());
635 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
636 host_impl->active_tree());
637 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
638 host_impl->active_tree());
639
640 // Add an additional clip child.
641 scoped_refptr<Layer> additional_clip_child = Layer::Create();
642 intervening->AddChild(additional_clip_child);
643 additional_clip_child->SetClipParent(clip_parent.get());
644 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
645 host_impl->active_tree());
646 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
647 host_impl->active_tree());
648 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
649 host_impl->active_tree());
650
651 // Remove the nearest clipping ancestor.
652 clip_parent->RemoveFromParent();
653 clip_parent = NULL;
654 TreeSynchronizer::SynchronizeTrees(layer_tree_root.get(),
655 host_impl->active_tree());
656 TreeSynchronizer::PushLayerProperties(layer_tree_root->layer_tree_host(),
657 host_impl->active_tree());
658 ExpectTreesAreIdentical(layer_tree_root.get(), layer_impl_tree_root,
659 host_impl->active_tree());
660
661 // The clip children should have been unhooked.
662 EXPECT_EQ(2u, intervening->children().size());
663 EXPECT_FALSE(clip_child2->clip_parent());
664 EXPECT_FALSE(additional_clip_child->clip_parent());
665 }
666
667 TEST_F(TreeSynchronizerTest, SynchronizeCurrentlyScrollingNode) { 499 TEST_F(TreeSynchronizerTest, SynchronizeCurrentlyScrollingNode) {
668 LayerTreeSettings settings; 500 LayerTreeSettings settings;
669 FakeLayerTreeHostImplClient client; 501 FakeLayerTreeHostImplClient client;
670 FakeImplTaskRunnerProvider task_runner_provider; 502 FakeImplTaskRunnerProvider task_runner_provider;
671 FakeRenderingStatsInstrumentation stats_instrumentation; 503 FakeRenderingStatsInstrumentation stats_instrumentation;
672 TestSharedBitmapManager shared_bitmap_manager; 504 TestSharedBitmapManager shared_bitmap_manager;
673 TestTaskGraphRunner task_graph_runner; 505 TestTaskGraphRunner task_graph_runner;
674 FakeLayerTreeHostImpl* host_impl = host_->host_impl(); 506 FakeLayerTreeHostImpl* host_impl = host_->host_impl();
675 host_impl->CreatePendingTree(); 507 host_impl->CreatePendingTree();
676 508
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread(); 633 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread();
802 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50)); 634 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50));
803 scroll_offset_map[scroll_layer->id()]->PushFromMainThread( 635 scroll_offset_map[scroll_layer->id()]->PushFromMainThread(
804 gfx::ScrollOffset(100, 100)); 636 gfx::ScrollOffset(100, 100));
805 scroll_offset_map[scroll_layer->id()]->PushPendingToActive(); 637 scroll_offset_map[scroll_layer->id()]->PushPendingToActive();
806 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map())); 638 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map()));
807 } 639 }
808 640
809 } // namespace 641 } // namespace
810 } // namespace cc 642 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/tree_synchronizer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698