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& offset) { |
634 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); | 634 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); |
| 635 EXPECT_VECTOR_EQ(offset, final_scroll_offset_); |
635 } | 636 } |
636 | 637 |
637 void DidScrollOuterViewport() { num_scrolls_++; } | 638 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
638 | 639 |
639 void UpdateLayerTreeHost() override { | 640 void UpdateLayerTreeHost() override { |
640 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 641 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
641 expected_no_scroll_layer_->scroll_offset()); | 642 expected_no_scroll_layer_->scroll_offset()); |
642 | 643 |
643 switch (layer_tree_host()->SourceFrameNumber()) { | 644 switch (layer_tree_host()->SourceFrameNumber()) { |
644 case 0: | 645 case 0: |
645 EXPECT_VECTOR_EQ(initial_offset_, | 646 EXPECT_VECTOR_EQ(initial_offset_, |
646 expected_scroll_layer_->scroll_offset()); | 647 expected_scroll_layer_->scroll_offset()); |
647 break; | 648 break; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
916 gfx::ScrollOffsetWithDelta( | 917 gfx::ScrollOffsetWithDelta( |
917 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), | 918 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), |
918 ScrollTreeForLayer(scroll_layer) | 919 ScrollTreeForLayer(scroll_layer) |
919 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); | 920 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
920 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); | 921 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); |
921 EndTest(); | 922 EndTest(); |
922 break; | 923 break; |
923 } | 924 } |
924 } | 925 } |
925 | 926 |
926 void DidScrollOuterViewport() { num_scrolls_++; } | 927 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
927 | 928 |
928 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 929 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
929 | 930 |
930 private: | 931 private: |
931 gfx::ScrollOffset initial_scroll_; | 932 gfx::ScrollOffset initial_scroll_; |
932 gfx::Vector2dF main_thread_scroll_; | 933 gfx::Vector2dF main_thread_scroll_; |
933 gfx::Vector2dF impl_thread_scroll1_; | 934 gfx::Vector2dF impl_thread_scroll1_; |
934 gfx::Vector2dF impl_thread_scroll2_; | 935 gfx::Vector2dF impl_thread_scroll2_; |
935 int num_scrolls_; | 936 int num_scrolls_; |
936 }; | 937 }; |
(...skipping 476 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1413 layer_tree_host()->SetRootLayer(NULL); | 1414 layer_tree_host()->SetRootLayer(NULL); |
1414 EndTest(); | 1415 EndTest(); |
1415 return; | 1416 return; |
1416 } | 1417 } |
1417 layer->RemoveFromParent(); | 1418 layer->RemoveFromParent(); |
1418 } | 1419 } |
1419 | 1420 |
1420 protected: | 1421 protected: |
1421 class FakeLayerScrollClient { | 1422 class FakeLayerScrollClient { |
1422 public: | 1423 public: |
1423 void DidScroll() { | 1424 void DidScroll(const gfx::ScrollOffset&) { owner_->DidScroll(layer_); } |
1424 owner_->DidScroll(layer_); | |
1425 } | |
1426 LayerTreeHostScrollTestLayerStructureChange* owner_; | 1425 LayerTreeHostScrollTestLayerStructureChange* owner_; |
1427 Layer* layer_; | 1426 Layer* layer_; |
1428 }; | 1427 }; |
1429 | 1428 |
1430 Layer* CreateScrollLayer(Layer* parent, FakeLayerScrollClient* client) { | 1429 Layer* CreateScrollLayer(Layer* parent, FakeLayerScrollClient* client) { |
1431 scoped_refptr<PictureLayer> scroll_layer = | 1430 scoped_refptr<PictureLayer> scroll_layer = |
1432 PictureLayer::Create(&fake_content_layer_client_); | 1431 PictureLayer::Create(&fake_content_layer_client_); |
1433 scroll_layer->SetBounds(gfx::Size(110, 110)); | 1432 scroll_layer->SetBounds(gfx::Size(110, 110)); |
1434 scroll_layer->SetPosition(gfx::PointF()); | 1433 scroll_layer->SetPosition(gfx::PointF()); |
1435 scroll_layer->SetIsDrawable(true); | 1434 scroll_layer->SetIsDrawable(true); |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1565 // The scroll hasn't been consumed by the main thread. | 1564 // The scroll hasn't been consumed by the main thread. |
1566 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); | 1565 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
1567 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) | 1566 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) |
1568 ->GetScrollOffsetBaseForTesting( | 1567 ->GetScrollOffsetBaseForTesting( |
1569 scroll_layer->id())); | 1568 scroll_layer->id())); |
1570 EndTest(); | 1569 EndTest(); |
1571 break; | 1570 break; |
1572 } | 1571 } |
1573 } | 1572 } |
1574 | 1573 |
1575 void DidScrollOuterViewport() { num_scrolls_++; } | 1574 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_scrolls_++; } |
1576 | 1575 |
1577 void AfterTest() override { | 1576 void AfterTest() override { |
1578 EXPECT_EQ(3, num_commits_); | 1577 EXPECT_EQ(3, num_commits_); |
1579 EXPECT_EQ(1, num_scrolls_); | 1578 EXPECT_EQ(1, num_scrolls_); |
1580 } | 1579 } |
1581 | 1580 |
1582 private: | 1581 private: |
1583 void Scroll(LayerTreeHostImpl* impl) { | 1582 void Scroll(LayerTreeHostImpl* impl) { |
1584 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); | 1583 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); |
1585 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 1584 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1784 EndTest(); | 1783 EndTest(); |
1785 break; | 1784 break; |
1786 } | 1785 } |
1787 } | 1786 } |
1788 break; | 1787 break; |
1789 } | 1788 } |
1790 } | 1789 } |
1791 num_draws_++; | 1790 num_draws_++; |
1792 } | 1791 } |
1793 | 1792 |
1794 void DidScrollOuterViewport() { num_impl_scrolls_++; } | 1793 void DidScrollOuterViewport(const gfx::ScrollOffset&) { num_impl_scrolls_++; } |
1795 | 1794 |
1796 void AfterTest() override { | 1795 void AfterTest() override { |
1797 EXPECT_EQ(3, num_impl_scrolls_); | 1796 EXPECT_EQ(3, num_impl_scrolls_); |
1798 // Verify that the embedder sees aborted commits as real commits. | 1797 // Verify that the embedder sees aborted commits as real commits. |
1799 EXPECT_EQ(4, num_will_begin_main_frames_); | 1798 EXPECT_EQ(4, num_will_begin_main_frames_); |
1800 EXPECT_EQ(4, num_did_begin_main_frames_); | 1799 EXPECT_EQ(4, num_did_begin_main_frames_); |
1801 EXPECT_EQ(4, num_will_commits_); | 1800 EXPECT_EQ(4, num_will_commits_); |
1802 EXPECT_EQ(4, num_did_commits_); | 1801 EXPECT_EQ(4, num_did_commits_); |
1803 // ...but the compositor thread only sees two real ones. | 1802 // ...but the compositor thread only sees two real ones. |
1804 EXPECT_EQ(2, num_impl_commits_); | 1803 EXPECT_EQ(2, num_impl_commits_); |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2066 private: | 2065 private: |
2067 gfx::ScrollOffset initial_scroll_; | 2066 gfx::ScrollOffset initial_scroll_; |
2068 gfx::ScrollOffset second_scroll_; | 2067 gfx::ScrollOffset second_scroll_; |
2069 gfx::Vector2dF scroll_amount_; | 2068 gfx::Vector2dF scroll_amount_; |
2070 }; | 2069 }; |
2071 | 2070 |
2072 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestPropertyTreeUpdate); | 2071 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostScrollTestPropertyTreeUpdate); |
2073 | 2072 |
2074 } // namespace | 2073 } // namespace |
2075 } // namespace cc | 2074 } // namespace cc |
OLD | NEW |