| 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 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 ASSERT_TRUE(clip_children->find(layer) != clip_children->end()); | 140 ASSERT_TRUE(clip_children->find(layer) != clip_children->end()); |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 } | 143 } |
| 144 | 144 |
| 145 class TreeSynchronizerTest : public testing::Test { | 145 class TreeSynchronizerTest : public testing::Test { |
| 146 protected: | 146 protected: |
| 147 TreeSynchronizerTest() | 147 TreeSynchronizerTest() |
| 148 : host_(FakeLayerTreeHost::Create(&client_, &task_graph_runner_)) {} | 148 : host_(FakeLayerTreeHost::Create(&client_, &task_graph_runner_)) {} |
| 149 | 149 |
| 150 bool is_equal(ScrollTree::ScrollOffsetMap map, | 150 bool is_equal(const ScrollTree::ScrollOffsetMap& map, |
| 151 ScrollTree::ScrollOffsetMap other) { | 151 const ScrollTree::ScrollOffsetMap& other) { |
| 152 if (map.size() != other.size()) | 152 if (map.size() != other.size()) |
| 153 return false; | 153 return false; |
| 154 for (auto& map_entry : map) { | 154 for (const auto& map_entry : map) { |
| 155 if (other.find(map_entry.first) == other.end()) | 155 auto other_found = other.find(map_entry.first); |
| 156 if (other_found == other.end()) |
| 156 return false; | 157 return false; |
| 157 SyncedScrollOffset& from_map = *map_entry.second.get(); | 158 SyncedScrollOffset& from_map = *map_entry.second.synced_offset.get(); |
| 158 SyncedScrollOffset& from_other = *other[map_entry.first].get(); | 159 SyncedScrollOffset& from_other = *other_found->second.synced_offset.get(); |
| 159 if (from_map.PendingBase() != from_other.PendingBase() || | 160 if (from_map.PendingBase() != from_other.PendingBase() || |
| 160 from_map.ActiveBase() != from_other.ActiveBase() || | 161 from_map.ActiveBase() != from_other.ActiveBase() || |
| 161 from_map.Delta() != from_other.Delta() || | 162 from_map.Delta() != from_other.Delta() || |
| 162 from_map.PendingDelta().get() != from_other.PendingDelta().get()) | 163 from_map.PendingDelta().get() != from_other.PendingDelta().get()) |
| 163 return false; | 164 return false; |
| 164 } | 165 } |
| 165 return true; | 166 return true; |
| 166 } | 167 } |
| 167 | 168 |
| 168 FakeLayerTreeHostClient client_; | 169 FakeLayerTreeHostClient client_; |
| (...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 host_impl->ActivateSyncTree(); | 598 host_impl->ActivateSyncTree(); |
| 598 | 599 |
| 599 ExpectTreesAreIdentical(layer_tree_root.get(), | 600 ExpectTreesAreIdentical(layer_tree_root.get(), |
| 600 host_impl->active_tree()->root_layer_for_testing(), | 601 host_impl->active_tree()->root_layer_for_testing(), |
| 601 host_impl->active_tree()); | 602 host_impl->active_tree()); |
| 602 | 603 |
| 603 // After the initial commit, scroll_offset_map in scroll_tree is expected to | 604 // After the initial commit, scroll_offset_map in scroll_tree is expected to |
| 604 // have one entry for scroll_layer and one entry for transient_scroll_layer, | 605 // have one entry for scroll_layer and one entry for transient_scroll_layer, |
| 605 // the pending base and active base must be the same at this stage. | 606 // the pending base and active base must be the same at this stage. |
| 606 ScrollTree::ScrollOffsetMap scroll_offset_map; | 607 ScrollTree::ScrollOffsetMap scroll_offset_map; |
| 607 scroll_offset_map[scroll_layer->id()] = new SyncedScrollOffset; | 608 auto& scroll_offset = scroll_offset_map[scroll_layer->id()].synced_offset; |
| 608 scroll_offset_map[transient_scroll_layer->id()] = new SyncedScrollOffset; | 609 auto& transient_offset = |
| 609 scroll_offset_map[scroll_layer->id()]->PushFromMainThread( | 610 scroll_offset_map[transient_scroll_layer->id()].synced_offset; |
| 610 scroll_layer->scroll_offset()); | 611 |
| 611 scroll_offset_map[scroll_layer->id()]->PushPendingToActive(); | 612 scroll_offset = new SyncedScrollOffset; |
| 612 scroll_offset_map[transient_scroll_layer->id()]->PushFromMainThread( | 613 transient_offset = new SyncedScrollOffset; |
| 613 transient_scroll_layer->scroll_offset()); | 614 scroll_offset->PushFromMainThread(scroll_layer->scroll_offset()); |
| 614 scroll_offset_map[transient_scroll_layer->id()]->PushPendingToActive(); | 615 scroll_offset->PushPendingToActive(); |
| 615 EXPECT_TRUE( | 616 transient_offset->PushFromMainThread(transient_scroll_layer->scroll_offset()); |
| 616 is_equal(scroll_offset_map, host_impl->active_tree() | 617 transient_offset->PushPendingToActive(); |
| 617 ->property_trees() | 618 EXPECT_TRUE(is_equal(scroll_offset_map, |
| 618 ->scroll_tree.scroll_offset_map())); | 619 host_impl->active_tree() |
| 620 ->property_trees() |
| 621 ->scroll_tree.scroll_offset_map_for_test())); |
| 619 | 622 |
| 620 // Set ScrollOffset active delta: gfx::ScrollOffset(10, 10) | 623 // Set ScrollOffset active delta: gfx::ScrollOffset(10, 10) |
| 621 LayerImpl* scroll_layer_impl = | 624 LayerImpl* scroll_layer_impl = |
| 622 host_impl->active_tree()->LayerById(scroll_layer->id()); | 625 host_impl->active_tree()->LayerById(scroll_layer->id()); |
| 623 ScrollTree& scroll_tree = | 626 ScrollTree& scroll_tree = |
| 624 host_impl->active_tree()->property_trees()->scroll_tree; | 627 host_impl->active_tree()->property_trees()->scroll_tree; |
| 625 scroll_tree.SetScrollOffset(scroll_layer_impl->id(), | 628 scroll_tree.SetScrollOffset(scroll_layer_impl->id(), |
| 626 gfx::ScrollOffset(20, 30)); | 629 gfx::ScrollOffset(20, 30)); |
| 627 | 630 |
| 628 // Pull ScrollOffset delta for main thread, and change offset on main thread | 631 // Pull ScrollOffset delta for main thread, and change offset on main thread |
| (...skipping 13 matching lines...) Expand all Loading... |
| 642 transient_scroll_layer->SetScrollClipLayerId(Layer::INVALID_ID); | 645 transient_scroll_layer->SetScrollClipLayerId(Layer::INVALID_ID); |
| 643 host_->BuildPropertyTreesForTesting(); | 646 host_->BuildPropertyTreesForTesting(); |
| 644 | 647 |
| 645 host_impl->CreatePendingTree(); | 648 host_impl->CreatePendingTree(); |
| 646 host_->CommitAndCreatePendingTree(); | 649 host_->CommitAndCreatePendingTree(); |
| 647 host_impl->ActivateSyncTree(); | 650 host_impl->ActivateSyncTree(); |
| 648 | 651 |
| 649 EXPECT_EQ(scroll_layer->id(), | 652 EXPECT_EQ(scroll_layer->id(), |
| 650 host_impl->active_tree()->CurrentlyScrollingLayer()->id()); | 653 host_impl->active_tree()->CurrentlyScrollingLayer()->id()); |
| 651 scroll_offset_map.erase(transient_scroll_layer->id()); | 654 scroll_offset_map.erase(transient_scroll_layer->id()); |
| 652 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(20, 30)); | 655 scroll_offset = scroll_offset_map[scroll_layer->id()].synced_offset; |
| 653 scroll_offset_map[scroll_layer->id()]->PullDeltaForMainThread(); | 656 scroll_offset->SetCurrent(gfx::ScrollOffset(20, 30)); |
| 654 scroll_offset_map[scroll_layer->id()]->SetCurrent(gfx::ScrollOffset(40, 50)); | 657 scroll_offset->PullDeltaForMainThread(); |
| 655 scroll_offset_map[scroll_layer->id()]->PushFromMainThread( | 658 scroll_offset->SetCurrent(gfx::ScrollOffset(40, 50)); |
| 656 gfx::ScrollOffset(100, 100)); | 659 scroll_offset->PushFromMainThread(gfx::ScrollOffset(100, 100)); |
| 657 scroll_offset_map[scroll_layer->id()]->PushPendingToActive(); | 660 scroll_offset->PushPendingToActive(); |
| 658 EXPECT_TRUE(is_equal(scroll_offset_map, scroll_tree.scroll_offset_map())); | 661 EXPECT_TRUE( |
| 662 is_equal(scroll_offset_map, scroll_tree.scroll_offset_map_for_test())); |
| 659 } | 663 } |
| 660 | 664 |
| 661 TEST_F(TreeSynchronizerTest, RefreshPropertyTreesCachedData) { | 665 TEST_F(TreeSynchronizerTest, RefreshPropertyTreesCachedData) { |
| 662 host_->InitializeSingleThreaded(&single_thread_client_, | 666 host_->InitializeSingleThreaded(&single_thread_client_, |
| 663 base::ThreadTaskRunnerHandle::Get(), nullptr); | 667 base::ThreadTaskRunnerHandle::Get(), nullptr); |
| 664 LayerTreeSettings settings; | 668 LayerTreeSettings settings; |
| 665 FakeLayerTreeHostImplClient client; | 669 FakeLayerTreeHostImplClient client; |
| 666 FakeImplTaskRunnerProvider task_runner_provider; | 670 FakeImplTaskRunnerProvider task_runner_provider; |
| 667 FakeRenderingStatsInstrumentation stats_instrumentation; | 671 FakeRenderingStatsInstrumentation stats_instrumentation; |
| 668 TestSharedBitmapManager shared_bitmap_manager; | 672 TestSharedBitmapManager shared_bitmap_manager; |
| (...skipping 30 matching lines...) Expand all Loading... |
| 699 host_->CommitAndCreatePendingTree(); | 703 host_->CommitAndCreatePendingTree(); |
| 700 host_impl->ActivateSyncTree(); | 704 host_impl->ActivateSyncTree(); |
| 701 EXPECT_EQ( | 705 EXPECT_EQ( |
| 702 CombinedAnimationScale(0.f, 0.f), | 706 CombinedAnimationScale(0.f, 0.f), |
| 703 host_impl->active_tree()->property_trees()->GetAnimationScales( | 707 host_impl->active_tree()->property_trees()->GetAnimationScales( |
| 704 transform_layer->transform_tree_index(), host_impl->active_tree())); | 708 transform_layer->transform_tree_index(), host_impl->active_tree())); |
| 705 } | 709 } |
| 706 | 710 |
| 707 } // namespace | 711 } // namespace |
| 708 } // namespace cc | 712 } // namespace cc |
| OLD | NEW |