| 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 |