| 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/weak_ptr.h" | 8 #include "base/memory/weak_ptr.h" |
| 9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
| 10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 scroll_amount_(2, -1), | 86 scroll_amount_(2, -1), |
| 87 num_scrolls_(0) {} | 87 num_scrolls_(0) {} |
| 88 | 88 |
| 89 void BeginTest() override { | 89 void BeginTest() override { |
| 90 outer_viewport_container_layer_id_ = layer_tree_host() | 90 outer_viewport_container_layer_id_ = layer_tree_host() |
| 91 ->outer_viewport_scroll_layer() | 91 ->outer_viewport_scroll_layer() |
| 92 ->scroll_clip_layer() | 92 ->scroll_clip_layer() |
| 93 ->id(); | 93 ->id(); |
| 94 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 94 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( |
| 95 initial_scroll_); | 95 initial_scroll_); |
| 96 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( |
| 97 base::Bind(&LayerTreeHostScrollTestScrollSimple::DidScrollOuterViewport, |
| 98 base::Unretained(this))); |
| 96 PostSetNeedsCommitToMainThread(); | 99 PostSetNeedsCommitToMainThread(); |
| 97 } | 100 } |
| 98 | 101 |
| 99 void UpdateLayerTreeHost() override { | 102 void UpdateLayerTreeHost() override { |
| 100 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 103 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); |
| 101 if (!layer_tree_host()->source_frame_number()) { | 104 if (!layer_tree_host()->source_frame_number()) { |
| 102 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 105 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
| 103 } else { | 106 } else { |
| 104 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, | 107 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, |
| 105 scroll_amount_), | 108 scroll_amount_), |
| (...skipping 25 matching lines...) Expand all Loading... |
| 131 case 1: | 134 case 1: |
| 132 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer) | 135 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer) |
| 133 ->GetScrollOffsetBaseForTesting( | 136 ->GetScrollOffsetBaseForTesting( |
| 134 scroll_layer->id())); | 137 scroll_layer->id())); |
| 135 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); | 138 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
| 136 EndTest(); | 139 EndTest(); |
| 137 break; | 140 break; |
| 138 } | 141 } |
| 139 } | 142 } |
| 140 | 143 |
| 141 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 144 void DidScrollOuterViewport() { num_scrolls_++; } |
| 142 const gfx::Vector2dF& outer_delta, | |
| 143 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 144 float scale, | |
| 145 float top_controls_delta) override { | |
| 146 num_scrolls_++; | |
| 147 } | |
| 148 | 145 |
| 149 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 146 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
| 150 | 147 |
| 151 private: | 148 private: |
| 152 gfx::ScrollOffset initial_scroll_; | 149 gfx::ScrollOffset initial_scroll_; |
| 153 gfx::ScrollOffset second_scroll_; | 150 gfx::ScrollOffset second_scroll_; |
| 154 gfx::Vector2dF scroll_amount_; | 151 gfx::Vector2dF scroll_amount_; |
| 155 int num_scrolls_; | 152 int num_scrolls_; |
| 156 int outer_viewport_container_layer_id_; | 153 int outer_viewport_container_layer_id_; |
| 157 }; | 154 }; |
| 158 | 155 |
| 159 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollSimple); | 156 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollSimple); |
| 160 | 157 |
| 161 class LayerTreeHostScrollTestScrollMultipleRedraw | 158 class LayerTreeHostScrollTestScrollMultipleRedraw |
| 162 : public LayerTreeHostScrollTest { | 159 : public LayerTreeHostScrollTest { |
| 163 public: | 160 public: |
| 164 LayerTreeHostScrollTestScrollMultipleRedraw() | 161 LayerTreeHostScrollTestScrollMultipleRedraw() |
| 165 : initial_scroll_(40, 10), scroll_amount_(-3, 17), num_scrolls_(0) {} | 162 : initial_scroll_(40, 10), scroll_amount_(-3, 17), num_scrolls_(0) {} |
| 166 | 163 |
| 167 void BeginTest() override { | 164 void BeginTest() override { |
| 168 scroll_layer_ = layer_tree_host()->outer_viewport_scroll_layer(); | 165 scroll_layer_ = layer_tree_host()->outer_viewport_scroll_layer(); |
| 169 scroll_layer_->SetScrollOffset(initial_scroll_); | 166 scroll_layer_->SetScrollOffset(initial_scroll_); |
| 167 scroll_layer_->set_did_scroll_callback(base::Bind( |
| 168 &LayerTreeHostScrollTestScrollMultipleRedraw::DidScrollOuterViewport, |
| 169 base::Unretained(this))); |
| 170 PostSetNeedsCommitToMainThread(); | 170 PostSetNeedsCommitToMainThread(); |
| 171 } | 171 } |
| 172 | 172 |
| 173 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { | 173 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { |
| 174 switch (layer_tree_host()->source_frame_number()) { | 174 switch (layer_tree_host()->source_frame_number()) { |
| 175 case 0: | 175 case 0: |
| 176 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer_->scroll_offset()); | 176 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer_->scroll_offset()); |
| 177 break; | 177 break; |
| 178 case 1: | 178 case 1: |
| 179 EXPECT_VECTOR_EQ( | 179 EXPECT_VECTOR_EQ( |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 // Third or later draw after second commit. | 217 // Third or later draw after second commit. |
| 218 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); | 218 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); |
| 219 EXPECT_VECTOR_EQ( | 219 EXPECT_VECTOR_EQ( |
| 220 gfx::ScrollOffsetWithDelta(initial_scroll_, | 220 gfx::ScrollOffsetWithDelta(initial_scroll_, |
| 221 scroll_amount_ + scroll_amount_), | 221 scroll_amount_ + scroll_amount_), |
| 222 scroll_layer_->scroll_offset()); | 222 scroll_layer_->scroll_offset()); |
| 223 EndTest(); | 223 EndTest(); |
| 224 } | 224 } |
| 225 } | 225 } |
| 226 | 226 |
| 227 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 227 void DidScrollOuterViewport() { num_scrolls_++; } |
| 228 const gfx::Vector2dF& outer_delta, | |
| 229 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 230 float scale, | |
| 231 float top_controls_delta) override { | |
| 232 num_scrolls_++; | |
| 233 } | |
| 234 | 228 |
| 235 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 229 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
| 236 | 230 |
| 237 private: | 231 private: |
| 238 gfx::ScrollOffset initial_scroll_; | 232 gfx::ScrollOffset initial_scroll_; |
| 239 gfx::Vector2dF scroll_amount_; | 233 gfx::Vector2dF scroll_amount_; |
| 240 int num_scrolls_; | 234 int num_scrolls_; |
| 241 scoped_refptr<Layer> scroll_layer_; | 235 scoped_refptr<Layer> scroll_layer_; |
| 242 }; | 236 }; |
| 243 | 237 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 254 num_will_begin_main_frames_(0), | 248 num_will_begin_main_frames_(0), |
| 255 num_did_begin_main_frames_(0), | 249 num_did_begin_main_frames_(0), |
| 256 num_will_commits_(0), | 250 num_will_commits_(0), |
| 257 num_did_commits_(0), | 251 num_did_commits_(0), |
| 258 num_impl_commits_(0), | 252 num_impl_commits_(0), |
| 259 num_impl_scrolls_(0) {} | 253 num_impl_scrolls_(0) {} |
| 260 | 254 |
| 261 void BeginTest() override { | 255 void BeginTest() override { |
| 262 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 256 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( |
| 263 initial_scroll_); | 257 initial_scroll_); |
| 258 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( |
| 259 base::Bind( |
| 260 &LayerTreeHostScrollTestScrollAbortedCommit::DidScrollOuterViewport, |
| 261 base::Unretained(this))); |
| 264 PostSetNeedsCommitToMainThread(); | 262 PostSetNeedsCommitToMainThread(); |
| 265 } | 263 } |
| 266 | 264 |
| 267 void SetupTree() override { | 265 void SetupTree() override { |
| 268 LayerTreeHostScrollTest::SetupTree(); | 266 LayerTreeHostScrollTest::SetupTree(); |
| 269 | 267 |
| 270 gfx::Size scroll_layer_bounds(200, 200); | 268 gfx::Size scroll_layer_bounds(200, 200); |
| 271 layer_tree_host()->outer_viewport_scroll_layer()->SetBounds( | 269 layer_tree_host()->outer_viewport_scroll_layer()->SetBounds( |
| 272 scroll_layer_bounds); | 270 scroll_layer_bounds); |
| 273 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 271 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), | 400 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), |
| 403 ScrollTreeForLayer(root_scroll_layer) | 401 ScrollTreeForLayer(root_scroll_layer) |
| 404 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); | 402 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); |
| 405 EndTest(); | 403 EndTest(); |
| 406 } else { | 404 } else { |
| 407 // Commit for source frame 3 is aborted. | 405 // Commit for source frame 3 is aborted. |
| 408 NOTREACHED(); | 406 NOTREACHED(); |
| 409 } | 407 } |
| 410 } | 408 } |
| 411 | 409 |
| 412 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 410 void DidScrollOuterViewport() { num_impl_scrolls_++; } |
| 413 const gfx::Vector2dF& outer_delta, | |
| 414 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 415 float scale, | |
| 416 float top_controls_delta) override { | |
| 417 num_impl_scrolls_++; | |
| 418 } | |
| 419 | 411 |
| 420 void AfterTest() override { | 412 void AfterTest() override { |
| 421 EXPECT_EQ(3, num_impl_scrolls_); | 413 EXPECT_EQ(3, num_impl_scrolls_); |
| 422 // Verify that the embedder sees aborted commits as real commits. | 414 // Verify that the embedder sees aborted commits as real commits. |
| 423 EXPECT_EQ(4, num_will_begin_main_frames_); | 415 EXPECT_EQ(4, num_will_begin_main_frames_); |
| 424 EXPECT_EQ(4, num_did_begin_main_frames_); | 416 EXPECT_EQ(4, num_did_begin_main_frames_); |
| 425 EXPECT_EQ(4, num_will_commits_); | 417 EXPECT_EQ(4, num_will_commits_); |
| 426 EXPECT_EQ(4, num_did_commits_); | 418 EXPECT_EQ(4, num_did_commits_); |
| 427 // ...but the compositor thread only sees two real ones. | 419 // ...but the compositor thread only sees two real ones. |
| 428 EXPECT_EQ(2, num_impl_commits_); | 420 EXPECT_EQ(2, num_impl_commits_); |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 609 } else { | 601 } else { |
| 610 expected_scroll_layer_ = root_scroll_layer_; | 602 expected_scroll_layer_ = root_scroll_layer_; |
| 611 expected_no_scroll_layer_ = child_layer_; | 603 expected_no_scroll_layer_ = child_layer_; |
| 612 } | 604 } |
| 613 | 605 |
| 614 expected_scroll_layer_->SetScrollOffset(initial_offset_); | 606 expected_scroll_layer_->SetScrollOffset(initial_offset_); |
| 615 | 607 |
| 616 layer_tree_host()->SetRootLayer(root_layer); | 608 layer_tree_host()->SetRootLayer(root_layer); |
| 617 LayerTreeTest::SetupTree(); | 609 LayerTreeTest::SetupTree(); |
| 618 fake_content_layer_client_.set_bounds(root_layer->bounds()); | 610 fake_content_layer_client_.set_bounds(root_layer->bounds()); |
| 611 |
| 612 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( |
| 613 base::Bind( |
| 614 &LayerTreeHostScrollTestCaseWithChild::DidScrollOuterViewport, |
| 615 base::Unretained(this))); |
| 619 } | 616 } |
| 620 | 617 |
| 621 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 618 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 622 | 619 |
| 623 void WillCommit() override { | 620 void WillCommit() override { |
| 624 // Keep the test committing (otherwise the early out for no update | 621 // Keep the test committing (otherwise the early out for no update |
| 625 // will stall the test). | 622 // will stall the test). |
| 626 if (layer_tree_host()->source_frame_number() < 2) { | 623 if (layer_tree_host()->source_frame_number() < 2) { |
| 627 layer_tree_host()->SetNeedsCommit(); | 624 layer_tree_host()->SetNeedsCommit(); |
| 628 } | 625 } |
| 629 } | 626 } |
| 630 | 627 |
| 631 void DidScroll() { | 628 void DidScroll() { |
| 632 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); | 629 final_scroll_offset_ = expected_scroll_layer_->scroll_offset(); |
| 633 } | 630 } |
| 634 | 631 |
| 635 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 632 void DidScrollOuterViewport() { num_scrolls_++; } |
| 636 const gfx::Vector2dF& outer_delta, | |
| 637 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 638 float scale, | |
| 639 float top_controls_delta) override { | |
| 640 num_scrolls_++; | |
| 641 } | |
| 642 | 633 |
| 643 void UpdateLayerTreeHost() override { | 634 void UpdateLayerTreeHost() override { |
| 644 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 635 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
| 645 expected_no_scroll_layer_->scroll_offset()); | 636 expected_no_scroll_layer_->scroll_offset()); |
| 646 | 637 |
| 647 switch (layer_tree_host()->source_frame_number()) { | 638 switch (layer_tree_host()->source_frame_number()) { |
| 648 case 0: | 639 case 0: |
| 649 EXPECT_VECTOR_EQ(initial_offset_, | 640 EXPECT_VECTOR_EQ(initial_offset_, |
| 650 expected_scroll_layer_->scroll_offset()); | 641 expected_scroll_layer_->scroll_offset()); |
| 651 break; | 642 break; |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 num_scrolls_(0) {} | 866 num_scrolls_(0) {} |
| 876 | 867 |
| 877 void SetupTree() override { | 868 void SetupTree() override { |
| 878 LayerTreeHostScrollTest::SetupTree(); | 869 LayerTreeHostScrollTest::SetupTree(); |
| 879 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 870 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
| 880 } | 871 } |
| 881 | 872 |
| 882 void BeginTest() override { | 873 void BeginTest() override { |
| 883 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 874 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( |
| 884 initial_scroll_); | 875 initial_scroll_); |
| 876 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( |
| 877 base::Bind(&LayerTreeHostScrollTestSimple::DidScrollOuterViewport, |
| 878 base::Unretained(this))); |
| 885 PostSetNeedsCommitToMainThread(); | 879 PostSetNeedsCommitToMainThread(); |
| 886 } | 880 } |
| 887 | 881 |
| 888 void UpdateLayerTreeHost() override { | 882 void UpdateLayerTreeHost() override { |
| 889 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 883 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); |
| 890 if (!layer_tree_host()->source_frame_number()) { | 884 if (!layer_tree_host()->source_frame_number()) { |
| 891 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 885 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
| 892 } else { | 886 } else { |
| 893 EXPECT_VECTOR_EQ( | 887 EXPECT_VECTOR_EQ( |
| 894 scroll_layer->scroll_offset(), | 888 scroll_layer->scroll_offset(), |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 962 gfx::ScrollOffsetWithDelta( | 956 gfx::ScrollOffsetWithDelta( |
| 963 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), | 957 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), |
| 964 ScrollTreeForLayer(scroll_layer) | 958 ScrollTreeForLayer(scroll_layer) |
| 965 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); | 959 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
| 966 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); | 960 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); |
| 967 EndTest(); | 961 EndTest(); |
| 968 break; | 962 break; |
| 969 } | 963 } |
| 970 } | 964 } |
| 971 | 965 |
| 972 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 966 void DidScrollOuterViewport() { num_scrolls_++; } |
| 973 const gfx::Vector2dF& outer_delta, | |
| 974 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 975 float scale, | |
| 976 float top_controls_delta) override { | |
| 977 num_scrolls_++; | |
| 978 } | |
| 979 | 967 |
| 980 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } | 968 void AfterTest() override { EXPECT_EQ(1, num_scrolls_); } |
| 981 | 969 |
| 982 private: | 970 private: |
| 983 gfx::ScrollOffset initial_scroll_; | 971 gfx::ScrollOffset initial_scroll_; |
| 984 gfx::Vector2dF main_thread_scroll_; | 972 gfx::Vector2dF main_thread_scroll_; |
| 985 gfx::Vector2dF impl_thread_scroll1_; | 973 gfx::Vector2dF impl_thread_scroll1_; |
| 986 gfx::Vector2dF impl_thread_scroll2_; | 974 gfx::Vector2dF impl_thread_scroll2_; |
| 987 int num_scrolls_; | 975 int num_scrolls_; |
| 988 }; | 976 }; |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1532 settings->main_frame_before_activation_enabled = true; | 1520 settings->main_frame_before_activation_enabled = true; |
| 1533 } | 1521 } |
| 1534 | 1522 |
| 1535 void BeginTest() override { | 1523 void BeginTest() override { |
| 1536 outer_viewport_container_layer_id_ = layer_tree_host() | 1524 outer_viewport_container_layer_id_ = layer_tree_host() |
| 1537 ->outer_viewport_scroll_layer() | 1525 ->outer_viewport_scroll_layer() |
| 1538 ->scroll_clip_layer() | 1526 ->scroll_clip_layer() |
| 1539 ->id(); | 1527 ->id(); |
| 1540 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 1528 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( |
| 1541 initial_scroll_); | 1529 initial_scroll_); |
| 1530 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( |
| 1531 base::Bind(&LayerTreeHostScrollTestScrollMFBA::DidScrollOuterViewport, |
| 1532 base::Unretained(this))); |
| 1542 PostSetNeedsCommitToMainThread(); | 1533 PostSetNeedsCommitToMainThread(); |
| 1543 } | 1534 } |
| 1544 | 1535 |
| 1545 void StartCommitOnImpl() override { | 1536 void StartCommitOnImpl() override { |
| 1546 switch (num_commits_) { | 1537 switch (num_commits_) { |
| 1547 case 1: | 1538 case 1: |
| 1548 // Ask for commit here because activation (and draw) will be blocked. | 1539 // Ask for commit here because activation (and draw) will be blocked. |
| 1549 GetProxyImplForTest()->SetNeedsCommitOnImpl(); | 1540 GetProxyImplForTest()->SetNeedsCommitOnImpl(); |
| 1550 // Block activation after second commit until third commit is ready. | 1541 // Block activation after second commit until third commit is ready. |
| 1551 GetProxyImplForTest()->BlockNotifyReadyToActivateForTesting(true); | 1542 GetProxyImplForTest()->BlockNotifyReadyToActivateForTesting(true); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1606 // The scroll hasn't been consumed by the main thread. | 1597 // The scroll hasn't been consumed by the main thread. |
| 1607 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); | 1598 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
| 1608 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) | 1599 EXPECT_VECTOR_EQ(third_scroll_, ScrollTreeForLayer(scroll_layer) |
| 1609 ->GetScrollOffsetBaseForTesting( | 1600 ->GetScrollOffsetBaseForTesting( |
| 1610 scroll_layer->id())); | 1601 scroll_layer->id())); |
| 1611 EndTest(); | 1602 EndTest(); |
| 1612 break; | 1603 break; |
| 1613 } | 1604 } |
| 1614 } | 1605 } |
| 1615 | 1606 |
| 1616 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 1607 void DidScrollOuterViewport() { num_scrolls_++; } |
| 1617 const gfx::Vector2dF& outer_delta, | |
| 1618 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 1619 float scale, | |
| 1620 float top_controls_delta) override { | |
| 1621 num_scrolls_++; | |
| 1622 } | |
| 1623 | 1608 |
| 1624 void AfterTest() override { | 1609 void AfterTest() override { |
| 1625 EXPECT_EQ(3, num_commits_); | 1610 EXPECT_EQ(3, num_commits_); |
| 1626 EXPECT_EQ(1, num_scrolls_); | 1611 EXPECT_EQ(1, num_scrolls_); |
| 1627 } | 1612 } |
| 1628 | 1613 |
| 1629 private: | 1614 private: |
| 1630 void Scroll(LayerTreeHostImpl* impl) { | 1615 void Scroll(LayerTreeHostImpl* impl) { |
| 1631 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); | 1616 LayerImpl* root = impl->active_tree()->root_layer_for_testing(); |
| 1632 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 1617 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1664 num_impl_scrolls_(0), | 1649 num_impl_scrolls_(0), |
| 1665 num_draws_(0) {} | 1650 num_draws_(0) {} |
| 1666 | 1651 |
| 1667 void InitializeSettings(LayerTreeSettings* settings) override { | 1652 void InitializeSettings(LayerTreeSettings* settings) override { |
| 1668 settings->main_frame_before_activation_enabled = true; | 1653 settings->main_frame_before_activation_enabled = true; |
| 1669 } | 1654 } |
| 1670 | 1655 |
| 1671 void BeginTest() override { | 1656 void BeginTest() override { |
| 1672 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 1657 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( |
| 1673 initial_scroll_); | 1658 initial_scroll_); |
| 1659 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( |
| 1660 base::Bind(&LayerTreeHostScrollTestScrollAbortedCommitMFBA:: |
| 1661 DidScrollOuterViewport, |
| 1662 base::Unretained(this))); |
| 1674 PostSetNeedsCommitToMainThread(); | 1663 PostSetNeedsCommitToMainThread(); |
| 1675 } | 1664 } |
| 1676 | 1665 |
| 1677 void SetupTree() override { | 1666 void SetupTree() override { |
| 1678 LayerTreeHostScrollTest::SetupTree(); | 1667 LayerTreeHostScrollTest::SetupTree(); |
| 1679 | 1668 |
| 1680 gfx::Size scroll_layer_bounds(200, 200); | 1669 gfx::Size scroll_layer_bounds(200, 200); |
| 1681 layer_tree_host()->outer_viewport_scroll_layer()->SetBounds( | 1670 layer_tree_host()->outer_viewport_scroll_layer()->SetBounds( |
| 1682 scroll_layer_bounds); | 1671 scroll_layer_bounds); |
| 1683 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 1672 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1827 EndTest(); | 1816 EndTest(); |
| 1828 break; | 1817 break; |
| 1829 } | 1818 } |
| 1830 } | 1819 } |
| 1831 break; | 1820 break; |
| 1832 } | 1821 } |
| 1833 } | 1822 } |
| 1834 num_draws_++; | 1823 num_draws_++; |
| 1835 } | 1824 } |
| 1836 | 1825 |
| 1837 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 1826 void DidScrollOuterViewport() { num_impl_scrolls_++; } |
| 1838 const gfx::Vector2dF& outer_delta, | |
| 1839 const gfx::Vector2dF& elastic_overscroll_delta, | |
| 1840 float scale, | |
| 1841 float top_controls_delta) override { | |
| 1842 num_impl_scrolls_++; | |
| 1843 } | |
| 1844 | 1827 |
| 1845 void AfterTest() override { | 1828 void AfterTest() override { |
| 1846 EXPECT_EQ(3, num_impl_scrolls_); | 1829 EXPECT_EQ(3, num_impl_scrolls_); |
| 1847 // Verify that the embedder sees aborted commits as real commits. | 1830 // Verify that the embedder sees aborted commits as real commits. |
| 1848 EXPECT_EQ(4, num_will_begin_main_frames_); | 1831 EXPECT_EQ(4, num_will_begin_main_frames_); |
| 1849 EXPECT_EQ(4, num_did_begin_main_frames_); | 1832 EXPECT_EQ(4, num_did_begin_main_frames_); |
| 1850 EXPECT_EQ(4, num_will_commits_); | 1833 EXPECT_EQ(4, num_will_commits_); |
| 1851 EXPECT_EQ(4, num_did_commits_); | 1834 EXPECT_EQ(4, num_did_commits_); |
| 1852 // ...but the compositor thread only sees two real ones. | 1835 // ...but the compositor thread only sees two real ones. |
| 1853 EXPECT_EQ(2, num_impl_commits_); | 1836 EXPECT_EQ(2, num_impl_commits_); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1868 int num_impl_commits_; | 1851 int num_impl_commits_; |
| 1869 int num_aborted_commits_; | 1852 int num_aborted_commits_; |
| 1870 int num_impl_scrolls_; | 1853 int num_impl_scrolls_; |
| 1871 int num_draws_; | 1854 int num_draws_; |
| 1872 }; | 1855 }; |
| 1873 | 1856 |
| 1874 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollAbortedCommitMFBA); | 1857 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollAbortedCommitMFBA); |
| 1875 | 1858 |
| 1876 } // namespace | 1859 } // namespace |
| 1877 } // namespace cc | 1860 } // namespace cc |
| OLD | NEW |