OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/layer_tree_host.h" | 5 #include "cc/trees/layer_tree_host.h" |
6 | 6 |
7 #include "base/location.h" | 7 #include "base/location.h" |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "base/single_thread_task_runner.h" | 10 #include "base/single_thread_task_runner.h" |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
140 case 1: | 140 case 1: |
141 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer) | 141 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer) |
142 ->GetScrollOffsetBaseForTesting( | 142 ->GetScrollOffsetBaseForTesting( |
143 scroll_layer->id())); | 143 scroll_layer->id())); |
144 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); | 144 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
145 EndTest(); | 145 EndTest(); |
146 break; | 146 break; |
147 } | 147 } |
148 } | 148 } |
149 | 149 |
150 void DidScrollOuterViewport() { num_scrolls_++; } | 150 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
151 | 151 |
152 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 152 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
153 | 153 |
154 private: | 154 private: |
155 gfx::ScrollOffset initial_scroll_; | 155 gfx::ScrollOffset initial_scroll_; |
156 gfx::ScrollOffset second_scroll_; | 156 gfx::ScrollOffset second_scroll_; |
157 gfx::Vector2dF scroll_amount_; | 157 gfx::Vector2dF scroll_amount_; |
158 int num_scrolls_; | 158 int num_scrolls_; |
159 int outer_viewport_container_layer_id_; | 159 int outer_viewport_container_layer_id_; |
160 }; | 160 }; |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
223 // Third or later draw after second commit. | 223 // Third or later draw after second commit. |
224 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); | 224 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); |
225 EXPECT_VECTOR_EQ( | 225 EXPECT_VECTOR_EQ( |
226 gfx::ScrollOffsetWithDelta(initial_scroll_, | 226 gfx::ScrollOffsetWithDelta(initial_scroll_, |
227 scroll_amount_ + scroll_amount_), | 227 scroll_amount_ + scroll_amount_), |
228 scroll_layer_->scroll_offset()); | 228 scroll_layer_->scroll_offset()); |
229 EndTest(); | 229 EndTest(); |
230 } | 230 } |
231 } | 231 } |
232 | 232 |
233 void DidScrollOuterViewport() { num_scrolls_++; } | 233 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
234 | 234 |
235 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 235 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
236 | 236 |
237 private: | 237 private: |
238 gfx::ScrollOffset initial_scroll_; | 238 gfx::ScrollOffset initial_scroll_; |
239 gfx::Vector2dF scroll_amount_; | 239 gfx::Vector2dF scroll_amount_; |
240 int num_scrolls_; | 240 int num_scrolls_; |
241 scoped_refptr<Layer> scroll_layer_; | 241 scoped_refptr<Layer> scroll_layer_; |
242 }; | 242 }; |
243 | 243 |
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
405 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), | 405 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), |
406 ScrollTreeForLayer(root_scroll_layer) | 406 ScrollTreeForLayer(root_scroll_layer) |
407 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); | 407 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); |
408 EndTest(); | 408 EndTest(); |
409 } else { | 409 } else { |
410 // Commit for source frame 3 is aborted. | 410 // Commit for source frame 3 is aborted. |
411 NOTREACHED(); | 411 NOTREACHED(); |
412 } | 412 } |
413 } | 413 } |
414 | 414 |
415 void DidScrollOuterViewport() { num_impl_scrolls_++; } | 415 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_impl_scrolls_++; } |
416 | 416 |
417 void AfterTest() override { | 417 void AfterTest() override { |
418 EXPECT_EQ(3, num_impl_scrolls_); | 418 EXPECT_EQ(3, num_impl_scrolls_); |
419 // Verify that the embedder sees aborted commits as real commits. | 419 // Verify that the embedder sees aborted commits as real commits. |
420 EXPECT_EQ(4, num_will_begin_main_frames_); | 420 EXPECT_EQ(4, num_will_begin_main_frames_); |
421 EXPECT_EQ(4, num_did_begin_main_frames_); | 421 EXPECT_EQ(4, num_did_begin_main_frames_); |
422 EXPECT_EQ(4, num_will_commits_); | 422 EXPECT_EQ(4, num_will_commits_); |
423 EXPECT_EQ(4, num_did_commits_); | 423 EXPECT_EQ(4, num_did_commits_); |
424 // ...but the compositor thread only sees two real ones. | 424 // ...but the compositor thread only sees two real ones. |
425 EXPECT_EQ(2, num_impl_commits_); | 425 EXPECT_EQ(2, num_impl_commits_); |
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
623 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 623 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
624 | 624 |
625 void WillCommit() override { | 625 void WillCommit() override { |
626 // Keep the test committing (otherwise the early out for no update | 626 // Keep the test committing (otherwise the early out for no update |
627 // will stall the test). | 627 // will stall the test). |
628 if (layer_tree_host()->SourceFrameNumber() < 2) { | 628 if (layer_tree_host()->SourceFrameNumber() < 2) { |
629 layer_tree_host()->SetNeedsCommit(); | 629 layer_tree_host()->SetNeedsCommit(); |
630 } | 630 } |
631 } | 631 } |
632 | 632 |
633 void DidScroll() { | 633 void DidScroll(const gfx::ScrollOffset&) { |
ajuma
2017/02/06 21:28:52
Perhaps this (or one of the other tests in this fi
pdr.
2017/02/07 22:14:34
I talked offline with both Ali and Walter and both
| |
634 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); | 634 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); |
635 } | 635 } |
636 | 636 |
637 void DidScrollOuterViewport() { num_scrolls_++; } | 637 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
638 | 638 |
639 void UpdateLayerTreeHost() override { | 639 void UpdateLayerTreeHost() override { |
640 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 640 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
641 expected_no_scroll_layer_->scroll_offset()); | 641 expected_no_scroll_layer_->scroll_offset()); |
642 | 642 |
643 switch (layer_tree_host()->SourceFrameNumber()) { | 643 switch (layer_tree_host()->SourceFrameNumber()) { |
644 case 0: | 644 case 0: |
645 EXPECT_VECTOR_EQ(initial_offset_, | 645 EXPECT_VECTOR_EQ(initial_offset_, |
646 expected_scroll_layer_->scroll_offset()); | 646 expected_scroll_layer_->scroll_offset()); |
647 break; | 647 break; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
916 gfx::ScrollOffsetWithDelta( | 916 gfx::ScrollOffsetWithDelta( |
917 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), | 917 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), |
918 ScrollTreeForLayer(scroll_layer) | 918 ScrollTreeForLayer(scroll_layer) |
919 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); | 919 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
920 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); | 920 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); |
921 EndTest(); | 921 EndTest(); |
922 break; | 922 break; |
923 } | 923 } |
924 } | 924 } |
925 | 925 |
926 void DidScrollOuterViewport() { num_scrolls_++; } | 926 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
927 | 927 |
928 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 928 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
929 | 929 |
930 private: | 930 private: |
931 gfx::ScrollOffset initial_scroll_; | 931 gfx::ScrollOffset initial_scroll_; |
932 gfx::Vector2dF main_thread_scroll_; | 932 gfx::Vector2dF main_thread_scroll_; |
933 gfx::Vector2dF impl_thread_scroll1_; | 933 gfx::Vector2dF impl_thread_scroll1_; |
934 gfx::Vector2dF impl_thread_scroll2_; | 934 gfx::Vector2dF impl_thread_scroll2_; |
935 int num_scrolls_; | 935 int num_scrolls_; |
936 }; | 936 }; |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1413 layer_tree_host()->SetRootLayer(NULL); | 1413 layer_tree_host()->SetRootLayer(NULL); |
1414 EndTest(); | 1414 EndTest(); |
1415 return; | 1415 return; |
1416 } | 1416 } |
1417 layer->RemoveFromParent(); | 1417 layer->RemoveFromParent(); |
1418 } | 1418 } |
1419 | 1419 |
1420 protected: | 1420 protected: |
1421 class FakeLayerScrollClient { | 1421 class FakeLayerScrollClient { |
1422 public: | 1422 public: |
1423 void DidScroll() { | 1423 void DidScroll(const gfx::ScrollOffset&) { |
1424 owner_->DidScroll(layer_); | 1424 owner_->DidScroll(layer_); |
1425 } | 1425 } |
1426 LayerTreeHostScrollTestLayerStructureChange* owner_; | 1426 LayerTreeHostScrollTestLayerStructureChange* owner_; |
1427 Layer* layer_; | 1427 Layer* layer_; |
1428 }; | 1428 }; |
1429 | 1429 |
1430 Layer* CreateScrollLayer(Layer* parent, FakeLayerScrollClient* client) { | 1430 Layer* CreateScrollLayer(Layer* parent, FakeLayerScrollClient* client) { |
1431 scoped_refptr<PictureLayer> scroll_layer = | 1431 scoped_refptr<PictureLayer> scroll_layer = |
1432 PictureLayer::Create(&fake_content_layer_client_); | 1432 PictureLayer::Create(&fake_content_layer_client_); |
1433 scroll_layer->SetBounds(gfx::Size(110, 110)); | 1433 scroll_layer->SetBounds(gfx::Size(110, 110)); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1565 // The scroll hasn't been consumed by the main thread. | 1565 // The scroll hasn't been consumed by the main thread. |
1566 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); | 1566 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
1567 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) | 1567 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) |
1568 ->GetScrollOffsetBaseForTesting( | 1568 ->GetScrollOffsetBaseForTesting( |
1569 scroll_layer->id())); | 1569 scroll_layer->id())); |
1570 EndTest(); | 1570 EndTest(); |
1571 break; | 1571 break; |
1572 } | 1572 } |
1573 } | 1573 } |
1574 | 1574 |
1575 void DidScrollOuterViewport() { num_scrolls_++; } | 1575 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
1576 | 1576 |
1577 void AfterTest() override { | 1577 void AfterTest() override { |
1578 EXPECT_EQ(3, num_commits_); | 1578 EXPECT_EQ(3, num_commits_); |
1579 EXPECT_EQ(1, num_scrolls_); | 1579 EXPECT_EQ(1, num_scrolls_); |
1580 } | 1580 } |
1581 | 1581 |
1582 private: | 1582 private: |
1583 void Scroll(LayerTreeHostImpl* impl) { | 1583 void Scroll(LayerTreeHostImpl* impl) { |
1584 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); | 1584 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); |
1585 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 1585 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1784 EndTest(); | 1784 EndTest(); |
1785 break; | 1785 break; |
1786 } | 1786 } |
1787 } | 1787 } |
1788 break; | 1788 break; |
1789 } | 1789 } |
1790 } | 1790 } |
1791 num_draws_++; | 1791 num_draws_++; |
1792 } | 1792 } |
1793 | 1793 |
1794 void DidScrollOuterViewport() { num_impl_scrolls_++; } | 1794 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_impl_scrolls_++; } |
1795 | 1795 |
1796 void AfterTest() override { | 1796 void AfterTest() override { |
1797 EXPECT_EQ(3, num_impl_scrolls_); | 1797 EXPECT_EQ(3, num_impl_scrolls_); |
1798 // Verify that the embedder sees aborted commits as real commits. | 1798 // Verify that the embedder sees aborted commits as real commits. |
1799 EXPECT_EQ(4, num_will_begin_main_frames_); | 1799 EXPECT_EQ(4, num_will_begin_main_frames_); |
1800 EXPECT_EQ(4, num_did_begin_main_frames_); | 1800 EXPECT_EQ(4, num_did_begin_main_frames_); |
1801 EXPECT_EQ(4, num_will_commits_); | 1801 EXPECT_EQ(4, num_will_commits_); |
1802 EXPECT_EQ(4, num_did_commits_); | 1802 EXPECT_EQ(4, num_did_commits_); |
1803 // ...but the compositor thread only sees two real ones. | 1803 // ...but the compositor thread only sees two real ones. |
1804 EXPECT_EQ(2, num_impl_commits_); | 1804 EXPECT_EQ(2, num_impl_commits_); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2066 private: | 2066 private: |
2067 gfx::ScrollOffset initial_scroll_; | 2067 gfx::ScrollOffset initial_scroll_; |
2068 gfx::ScrollOffset second_scroll_; | 2068 gfx::ScrollOffset second_scroll_; |
2069 gfx::Vector2dF scroll_amount_; | 2069 gfx::Vector2dF scroll_amount_; |
2070 }; | 2070 }; |
2071 | 2071 |
2072 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestPropertyTreeUpdate); | 2072 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestPropertyTreeUpdate); |
2073 | 2073 |
2074 } // namespace | 2074 } // namespace |
2075 } // namespace cc | 2075 } // namespace cc |
OLD | NEW |