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 |