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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
81 class LayerTreeHostScrollTestScrollSimple : public LayerTreeHostScrollTest { | 81 class LayerTreeHostScrollTestScrollSimple : public LayerTreeHostScrollTest { |
82 public: | 82 public: |
83 LayerTreeHostScrollTestScrollSimple() | 83 LayerTreeHostScrollTestScrollSimple() |
84 : initial_scroll_(10, 20), | 84 : initial_scroll_(10, 20), |
85 second_scroll_(40, 5), | 85 second_scroll_(40, 5), |
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 ->GetLayerTree() |
91 ->outer_viewport_scroll_layer() | 92 ->outer_viewport_scroll_layer() |
92 ->scroll_clip_layer() | 93 ->scroll_clip_layer() |
93 ->id(); | 94 ->id(); |
94 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 95 layer_tree_host() |
95 initial_scroll_); | 96 ->GetLayerTree() |
96 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( | 97 ->outer_viewport_scroll_layer() |
97 base::Bind(&LayerTreeHostScrollTestScrollSimple::DidScrollOuterViewport, | 98 ->SetScrollOffset(initial_scroll_); |
98 base::Unretained(this))); | 99 layer_tree_host() |
| 100 ->GetLayerTree() |
| 101 ->outer_viewport_scroll_layer() |
| 102 ->set_did_scroll_callback(base::Bind( |
| 103 &LayerTreeHostScrollTestScrollSimple::DidScrollOuterViewport, |
| 104 base::Unretained(this))); |
99 PostSetNeedsCommitToMainThread(); | 105 PostSetNeedsCommitToMainThread(); |
100 } | 106 } |
101 | 107 |
102 void UpdateLayerTreeHost() override { | 108 void UpdateLayerTreeHost() override { |
103 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 109 Layer* scroll_layer = |
| 110 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
104 if (!layer_tree_host()->source_frame_number()) { | 111 if (!layer_tree_host()->source_frame_number()) { |
105 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 112 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
106 } else { | 113 } else { |
107 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, | 114 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, |
108 scroll_amount_), | 115 scroll_amount_), |
109 scroll_layer->scroll_offset()); | 116 scroll_layer->scroll_offset()); |
110 | 117 |
111 // Pretend like Javascript updated the scroll position itself. | 118 // Pretend like Javascript updated the scroll position itself. |
112 scroll_layer->SetScrollOffset(second_scroll_); | 119 scroll_layer->SetScrollOffset(second_scroll_); |
113 } | 120 } |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
155 | 162 |
156 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollSimple); | 163 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollSimple); |
157 | 164 |
158 class LayerTreeHostScrollTestScrollMultipleRedraw | 165 class LayerTreeHostScrollTestScrollMultipleRedraw |
159 : public LayerTreeHostScrollTest { | 166 : public LayerTreeHostScrollTest { |
160 public: | 167 public: |
161 LayerTreeHostScrollTestScrollMultipleRedraw() | 168 LayerTreeHostScrollTestScrollMultipleRedraw() |
162 : initial_scroll_(40, 10), scroll_amount_(-3, 17), num_scrolls_(0) {} | 169 : initial_scroll_(40, 10), scroll_amount_(-3, 17), num_scrolls_(0) {} |
163 | 170 |
164 void BeginTest() override { | 171 void BeginTest() override { |
165 scroll_layer_ = layer_tree_host()->outer_viewport_scroll_layer(); | 172 scroll_layer_ = |
| 173 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
166 scroll_layer_->SetScrollOffset(initial_scroll_); | 174 scroll_layer_->SetScrollOffset(initial_scroll_); |
167 scroll_layer_->set_did_scroll_callback(base::Bind( | 175 scroll_layer_->set_did_scroll_callback(base::Bind( |
168 &LayerTreeHostScrollTestScrollMultipleRedraw::DidScrollOuterViewport, | 176 &LayerTreeHostScrollTestScrollMultipleRedraw::DidScrollOuterViewport, |
169 base::Unretained(this))); | 177 base::Unretained(this))); |
170 PostSetNeedsCommitToMainThread(); | 178 PostSetNeedsCommitToMainThread(); |
171 } | 179 } |
172 | 180 |
173 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { | 181 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { |
174 switch (layer_tree_host()->source_frame_number()) { | 182 switch (layer_tree_host()->source_frame_number()) { |
175 case 0: | 183 case 0: |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
246 second_main_scroll_(14, -3), | 254 second_main_scroll_(14, -3), |
247 impl_scale_(2.f), | 255 impl_scale_(2.f), |
248 num_will_begin_main_frames_(0), | 256 num_will_begin_main_frames_(0), |
249 num_did_begin_main_frames_(0), | 257 num_did_begin_main_frames_(0), |
250 num_will_commits_(0), | 258 num_will_commits_(0), |
251 num_did_commits_(0), | 259 num_did_commits_(0), |
252 num_impl_commits_(0), | 260 num_impl_commits_(0), |
253 num_impl_scrolls_(0) {} | 261 num_impl_scrolls_(0) {} |
254 | 262 |
255 void BeginTest() override { | 263 void BeginTest() override { |
256 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 264 layer_tree_host() |
257 initial_scroll_); | 265 ->GetLayerTree() |
258 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( | 266 ->outer_viewport_scroll_layer() |
259 base::Bind( | 267 ->SetScrollOffset(initial_scroll_); |
| 268 layer_tree_host() |
| 269 ->GetLayerTree() |
| 270 ->outer_viewport_scroll_layer() |
| 271 ->set_did_scroll_callback(base::Bind( |
260 &LayerTreeHostScrollTestScrollAbortedCommit::DidScrollOuterViewport, | 272 &LayerTreeHostScrollTestScrollAbortedCommit::DidScrollOuterViewport, |
261 base::Unretained(this))); | 273 base::Unretained(this))); |
262 PostSetNeedsCommitToMainThread(); | 274 PostSetNeedsCommitToMainThread(); |
263 } | 275 } |
264 | 276 |
265 void SetupTree() override { | 277 void SetupTree() override { |
266 LayerTreeHostScrollTest::SetupTree(); | 278 LayerTreeHostScrollTest::SetupTree(); |
267 | 279 |
268 gfx::Size scroll_layer_bounds(200, 200); | 280 gfx::Size scroll_layer_bounds(200, 200); |
269 layer_tree_host()->outer_viewport_scroll_layer()->SetBounds( | 281 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer()->SetBounds( |
270 scroll_layer_bounds); | 282 scroll_layer_bounds); |
271 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 283 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
272 } | 284 } |
273 | 285 |
274 void WillBeginMainFrame() override { | 286 void WillBeginMainFrame() override { |
275 num_will_begin_main_frames_++; | 287 num_will_begin_main_frames_++; |
276 Layer* root_scroll_layer = | 288 Layer* root_scroll_layer = |
277 layer_tree_host()->outer_viewport_scroll_layer(); | 289 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
278 switch (num_will_begin_main_frames_) { | 290 switch (num_will_begin_main_frames_) { |
279 case 1: | 291 case 1: |
280 // This will not be aborted because of the initial prop changes. | 292 // This will not be aborted because of the initial prop changes. |
281 EXPECT_EQ(0, num_impl_scrolls_); | 293 EXPECT_EQ(0, num_impl_scrolls_); |
282 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); | 294 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); |
283 EXPECT_VECTOR_EQ(initial_scroll_, root_scroll_layer->scroll_offset()); | 295 EXPECT_VECTOR_EQ(initial_scroll_, root_scroll_layer->scroll_offset()); |
284 EXPECT_EQ(1.f, layer_tree_host()->page_scale_factor()); | 296 EXPECT_EQ(1.f, layer_tree_host()->page_scale_factor()); |
285 break; | 297 break; |
286 case 2: | 298 case 2: |
287 // This commit will be aborted, and another commit will be | 299 // This commit will be aborted, and another commit will be |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 | 503 |
492 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestFractionalScroll); | 504 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestFractionalScroll); |
493 | 505 |
494 class LayerTreeHostScrollTestScrollSnapping : public LayerTreeHostScrollTest { | 506 class LayerTreeHostScrollTestScrollSnapping : public LayerTreeHostScrollTest { |
495 public: | 507 public: |
496 LayerTreeHostScrollTestScrollSnapping() : scroll_amount_(1.75, 0) {} | 508 LayerTreeHostScrollTestScrollSnapping() : scroll_amount_(1.75, 0) {} |
497 | 509 |
498 void SetupTree() override { | 510 void SetupTree() override { |
499 LayerTreeHostScrollTest::SetupTree(); | 511 LayerTreeHostScrollTest::SetupTree(); |
500 layer_tree_host() | 512 layer_tree_host() |
| 513 ->GetLayerTree() |
501 ->outer_viewport_scroll_layer() | 514 ->outer_viewport_scroll_layer() |
502 ->scroll_clip_layer() | 515 ->scroll_clip_layer() |
503 ->SetForceRenderSurfaceForTesting(true); | 516 ->SetForceRenderSurfaceForTesting(true); |
504 gfx::Transform translate; | 517 gfx::Transform translate; |
505 translate.Translate(0.25f, 0.f); | 518 translate.Translate(0.25f, 0.f); |
506 layer_tree_host() | 519 layer_tree_host() |
| 520 ->GetLayerTree() |
507 ->outer_viewport_scroll_layer() | 521 ->outer_viewport_scroll_layer() |
508 ->scroll_clip_layer() | 522 ->scroll_clip_layer() |
509 ->SetTransform(translate); | 523 ->SetTransform(translate); |
510 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.1f, 100.f); | 524 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.1f, 100.f); |
511 } | 525 } |
512 | 526 |
513 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 527 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
514 | 528 |
515 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 529 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
516 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 530 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
581 // Scrolls on the child layer will happen at 5, 5. If they are treated | 595 // Scrolls on the child layer will happen at 5, 5. If they are treated |
582 // like device pixels, and device scale factor is 2, then they will | 596 // like device pixels, and device scale factor is 2, then they will |
583 // be considered at 2.5, 2.5 in logical pixels, and will miss this layer. | 597 // be considered at 2.5, 2.5 in logical pixels, and will miss this layer. |
584 child_layer_->SetPosition(gfx::PointF(5.f, 5.f)); | 598 child_layer_->SetPosition(gfx::PointF(5.f, 5.f)); |
585 } else { | 599 } else { |
586 // Adjust the child layer horizontally so that scrolls will never hit it. | 600 // Adjust the child layer horizontally so that scrolls will never hit it. |
587 child_layer_->SetPosition(gfx::PointF(60.f, 5.f)); | 601 child_layer_->SetPosition(gfx::PointF(60.f, 5.f)); |
588 } | 602 } |
589 | 603 |
590 scoped_refptr<Layer> outer_container_layer = | 604 scoped_refptr<Layer> outer_container_layer = |
591 layer_tree_host()->outer_viewport_scroll_layer()->parent(); | 605 layer_tree_host() |
| 606 ->GetLayerTree() |
| 607 ->outer_viewport_scroll_layer() |
| 608 ->parent(); |
592 | 609 |
593 child_layer_->SetIsDrawable(true); | 610 child_layer_->SetIsDrawable(true); |
594 child_layer_->SetScrollClipLayerId(outer_container_layer->id()); | 611 child_layer_->SetScrollClipLayerId(outer_container_layer->id()); |
595 child_layer_->SetBounds(root_scroll_layer_->bounds()); | 612 child_layer_->SetBounds(root_scroll_layer_->bounds()); |
596 root_scroll_layer_->AddChild(child_layer_); | 613 root_scroll_layer_->AddChild(child_layer_); |
597 | 614 |
598 if (scroll_child_layer_) { | 615 if (scroll_child_layer_) { |
599 expected_scroll_layer_ = child_layer_; | 616 expected_scroll_layer_ = child_layer_; |
600 expected_no_scroll_layer_ = root_scroll_layer_; | 617 expected_no_scroll_layer_ = root_scroll_layer_; |
601 } else { | 618 } else { |
602 expected_scroll_layer_ = root_scroll_layer_; | 619 expected_scroll_layer_ = root_scroll_layer_; |
603 expected_no_scroll_layer_ = child_layer_; | 620 expected_no_scroll_layer_ = child_layer_; |
604 } | 621 } |
605 | 622 |
606 expected_scroll_layer_->SetScrollOffset(initial_offset_); | 623 expected_scroll_layer_->SetScrollOffset(initial_offset_); |
607 | 624 |
608 layer_tree_host()->SetRootLayer(root_layer); | 625 layer_tree_host()->SetRootLayer(root_layer); |
609 LayerTreeTest::SetupTree(); | 626 LayerTreeTest::SetupTree(); |
610 fake_content_layer_client_.set_bounds(root_layer->bounds()); | 627 fake_content_layer_client_.set_bounds(root_layer->bounds()); |
611 | 628 |
612 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( | 629 layer_tree_host() |
613 base::Bind( | 630 ->GetLayerTree() |
| 631 ->outer_viewport_scroll_layer() |
| 632 ->set_did_scroll_callback(base::Bind( |
614 &LayerTreeHostScrollTestCaseWithChild::DidScrollOuterViewport, | 633 &LayerTreeHostScrollTestCaseWithChild::DidScrollOuterViewport, |
615 base::Unretained(this))); | 634 base::Unretained(this))); |
616 } | 635 } |
617 | 636 |
618 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 637 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
619 | 638 |
620 void WillCommit() override { | 639 void WillCommit() override { |
621 // Keep the test committing (otherwise the early out for no update | 640 // Keep the test committing (otherwise the early out for no update |
622 // will stall the test). | 641 // will stall the test). |
623 if (layer_tree_host()->source_frame_number() < 2) { | 642 if (layer_tree_host()->source_frame_number() < 2) { |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
864 impl_thread_scroll1_(2, -1), | 883 impl_thread_scroll1_(2, -1), |
865 impl_thread_scroll2_(-3, 10), | 884 impl_thread_scroll2_(-3, 10), |
866 num_scrolls_(0) {} | 885 num_scrolls_(0) {} |
867 | 886 |
868 void SetupTree() override { | 887 void SetupTree() override { |
869 LayerTreeHostScrollTest::SetupTree(); | 888 LayerTreeHostScrollTest::SetupTree(); |
870 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 889 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
871 } | 890 } |
872 | 891 |
873 void BeginTest() override { | 892 void BeginTest() override { |
874 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 893 layer_tree_host() |
875 initial_scroll_); | 894 ->GetLayerTree() |
876 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( | 895 ->outer_viewport_scroll_layer() |
877 base::Bind(&LayerTreeHostScrollTestSimple::DidScrollOuterViewport, | 896 ->SetScrollOffset(initial_scroll_); |
878 base::Unretained(this))); | 897 layer_tree_host() |
| 898 ->GetLayerTree() |
| 899 ->outer_viewport_scroll_layer() |
| 900 ->set_did_scroll_callback( |
| 901 base::Bind(&LayerTreeHostScrollTestSimple::DidScrollOuterViewport, |
| 902 base::Unretained(this))); |
879 PostSetNeedsCommitToMainThread(); | 903 PostSetNeedsCommitToMainThread(); |
880 } | 904 } |
881 | 905 |
882 void UpdateLayerTreeHost() override { | 906 void UpdateLayerTreeHost() override { |
883 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 907 Layer* scroll_layer = |
| 908 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
884 if (!layer_tree_host()->source_frame_number()) { | 909 if (!layer_tree_host()->source_frame_number()) { |
885 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 910 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
886 } else { | 911 } else { |
887 EXPECT_VECTOR_EQ( | 912 EXPECT_VECTOR_EQ( |
888 scroll_layer->scroll_offset(), | 913 scroll_layer->scroll_offset(), |
889 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll1_)); | 914 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll1_)); |
890 | 915 |
891 // Pretend like Javascript updated the scroll position itself with a | 916 // Pretend like Javascript updated the scroll position itself with a |
892 // change of main_thread_scroll. | 917 // change of main_thread_scroll. |
893 scroll_layer->SetScrollOffset( | 918 scroll_layer->SetScrollOffset( |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
986 public: | 1011 public: |
987 LayerTreeHostScrollTestImplOnlyScroll() | 1012 LayerTreeHostScrollTestImplOnlyScroll() |
988 : initial_scroll_(20, 10), impl_thread_scroll_(-2, 3), impl_scale_(2.f) {} | 1013 : initial_scroll_(20, 10), impl_thread_scroll_(-2, 3), impl_scale_(2.f) {} |
989 | 1014 |
990 void SetupTree() override { | 1015 void SetupTree() override { |
991 LayerTreeHostScrollTest::SetupTree(); | 1016 LayerTreeHostScrollTest::SetupTree(); |
992 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 1017 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
993 } | 1018 } |
994 | 1019 |
995 void BeginTest() override { | 1020 void BeginTest() override { |
996 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 1021 layer_tree_host() |
997 initial_scroll_); | 1022 ->GetLayerTree() |
| 1023 ->outer_viewport_scroll_layer() |
| 1024 ->SetScrollOffset(initial_scroll_); |
998 PostSetNeedsCommitToMainThread(); | 1025 PostSetNeedsCommitToMainThread(); |
999 } | 1026 } |
1000 | 1027 |
1001 void WillCommit() override { | 1028 void WillCommit() override { |
1002 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 1029 Layer* scroll_layer = |
| 1030 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
1003 switch (layer_tree_host()->source_frame_number()) { | 1031 switch (layer_tree_host()->source_frame_number()) { |
1004 case 0: | 1032 case 0: |
1005 EXPECT_TRUE( | 1033 EXPECT_TRUE( |
1006 scroll_layer->GetLayerTree()->LayerNeedsPushPropertiesForTesting( | 1034 scroll_layer->GetLayerTree()->LayerNeedsPushPropertiesForTesting( |
1007 scroll_layer)); | 1035 scroll_layer)); |
1008 break; | 1036 break; |
1009 case 1: | 1037 case 1: |
1010 // Even if this layer doesn't need push properties, it should | 1038 // Even if this layer doesn't need push properties, it should |
1011 // still pick up scrolls that happen on the active layer during | 1039 // still pick up scrolls that happen on the active layer during |
1012 // commit. | 1040 // commit. |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1123 // This tests scrolling on the impl side which is only possible with a thread. | 1151 // This tests scrolling on the impl side which is only possible with a thread. |
1124 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestImplOnlyScroll); | 1152 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestImplOnlyScroll); |
1125 | 1153 |
1126 class LayerTreeHostScrollTestScrollZeroMaxScrollOffset | 1154 class LayerTreeHostScrollTestScrollZeroMaxScrollOffset |
1127 : public LayerTreeHostScrollTest { | 1155 : public LayerTreeHostScrollTest { |
1128 public: | 1156 public: |
1129 LayerTreeHostScrollTestScrollZeroMaxScrollOffset() {} | 1157 LayerTreeHostScrollTestScrollZeroMaxScrollOffset() {} |
1130 | 1158 |
1131 void BeginTest() override { | 1159 void BeginTest() override { |
1132 outer_viewport_container_layer_id_ = layer_tree_host() | 1160 outer_viewport_container_layer_id_ = layer_tree_host() |
| 1161 ->GetLayerTree() |
1133 ->outer_viewport_scroll_layer() | 1162 ->outer_viewport_scroll_layer() |
1134 ->scroll_clip_layer() | 1163 ->scroll_clip_layer() |
1135 ->id(); | 1164 ->id(); |
1136 PostSetNeedsCommitToMainThread(); | 1165 PostSetNeedsCommitToMainThread(); |
1137 } | 1166 } |
1138 | 1167 |
1139 void UpdateLayerTreeHost() override { | 1168 void UpdateLayerTreeHost() override { |
1140 Layer* root = layer_tree_host()->root_layer(); | 1169 Layer* root = layer_tree_host()->root_layer(); |
1141 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 1170 Layer* scroll_layer = |
| 1171 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
1142 switch (layer_tree_host()->source_frame_number()) { | 1172 switch (layer_tree_host()->source_frame_number()) { |
1143 case 0: | 1173 case 0: |
1144 scroll_layer->SetScrollClipLayerId(outer_viewport_container_layer_id_); | 1174 scroll_layer->SetScrollClipLayerId(outer_viewport_container_layer_id_); |
1145 // Set max_scroll_offset = (100, 100). | 1175 // Set max_scroll_offset = (100, 100). |
1146 scroll_layer->SetBounds(gfx::Size(root->bounds().width() + 100, | 1176 scroll_layer->SetBounds(gfx::Size(root->bounds().width() + 100, |
1147 root->bounds().height() + 100)); | 1177 root->bounds().height() + 100)); |
1148 break; | 1178 break; |
1149 case 1: | 1179 case 1: |
1150 // Set max_scroll_offset = (0, 0). | 1180 // Set max_scroll_offset = (0, 0). |
1151 scroll_layer->SetBounds(root->bounds()); | 1181 scroll_layer->SetBounds(root->bounds()); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1200 | 1230 |
1201 class LayerTreeHostScrollTestScrollNonDrawnLayer | 1231 class LayerTreeHostScrollTestScrollNonDrawnLayer |
1202 : public LayerTreeHostScrollTest { | 1232 : public LayerTreeHostScrollTest { |
1203 public: | 1233 public: |
1204 LayerTreeHostScrollTestScrollNonDrawnLayer() {} | 1234 LayerTreeHostScrollTestScrollNonDrawnLayer() {} |
1205 | 1235 |
1206 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1236 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1207 | 1237 |
1208 void SetupTree() override { | 1238 void SetupTree() override { |
1209 LayerTreeHostScrollTest::SetupTree(); | 1239 LayerTreeHostScrollTest::SetupTree(); |
1210 layer_tree_host()->outer_viewport_scroll_layer()->SetIsDrawable(false); | |
1211 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | |
1212 gfx::ScrollOffset(20.f, 20.f)); | |
1213 layer_tree_host() | 1240 layer_tree_host() |
| 1241 ->GetLayerTree() |
| 1242 ->outer_viewport_scroll_layer() |
| 1243 ->SetIsDrawable(false); |
| 1244 layer_tree_host() |
| 1245 ->GetLayerTree() |
| 1246 ->outer_viewport_scroll_layer() |
| 1247 ->SetScrollOffset(gfx::ScrollOffset(20.f, 20.f)); |
| 1248 layer_tree_host() |
| 1249 ->GetLayerTree() |
1214 ->outer_viewport_scroll_layer() | 1250 ->outer_viewport_scroll_layer() |
1215 ->SetNonFastScrollableRegion(gfx::Rect(20, 20, 20, 20)); | 1251 ->SetNonFastScrollableRegion(gfx::Rect(20, 20, 20, 20)); |
1216 } | 1252 } |
1217 | 1253 |
1218 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 1254 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
1219 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 1255 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
1220 | 1256 |
1221 ScrollTree& scroll_tree = | 1257 ScrollTree& scroll_tree = |
1222 impl->active_tree()->property_trees()->scroll_tree; | 1258 impl->active_tree()->property_trees()->scroll_tree; |
1223 ScrollNode* scroll_node = | 1259 ScrollNode* scroll_node = |
(...skipping 27 matching lines...) Expand all Loading... |
1251 class LayerTreeHostScrollTestImplScrollUnderMainThreadScrollingParent | 1287 class LayerTreeHostScrollTestImplScrollUnderMainThreadScrollingParent |
1252 : public LayerTreeHostScrollTest { | 1288 : public LayerTreeHostScrollTest { |
1253 public: | 1289 public: |
1254 LayerTreeHostScrollTestImplScrollUnderMainThreadScrollingParent() {} | 1290 LayerTreeHostScrollTestImplScrollUnderMainThreadScrollingParent() {} |
1255 | 1291 |
1256 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1292 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1257 | 1293 |
1258 void SetupTree() override { | 1294 void SetupTree() override { |
1259 LayerTreeHostScrollTest::SetupTree(); | 1295 LayerTreeHostScrollTest::SetupTree(); |
1260 layer_tree_host() | 1296 layer_tree_host() |
| 1297 ->GetLayerTree() |
1261 ->inner_viewport_scroll_layer() | 1298 ->inner_viewport_scroll_layer() |
1262 ->AddMainThreadScrollingReasons( | 1299 ->AddMainThreadScrollingReasons( |
1263 MainThreadScrollingReason::kEventHandlers); | 1300 MainThreadScrollingReason::kEventHandlers); |
1264 } | 1301 } |
1265 | 1302 |
1266 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 1303 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
1267 LayerImpl* inner_scroll_layer = impl->InnerViewportScrollLayer(); | 1304 LayerImpl* inner_scroll_layer = impl->InnerViewportScrollLayer(); |
1268 LayerImpl* outer_scroll_layer = impl->OuterViewportScrollLayer(); | 1305 LayerImpl* outer_scroll_layer = impl->OuterViewportScrollLayer(); |
1269 | 1306 |
1270 ScrollTree& scroll_tree = | 1307 ScrollTree& scroll_tree = |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1392 void SetupTree() override { | 1429 void SetupTree() override { |
1393 LayerTreeTest::SetupTree(); | 1430 LayerTreeTest::SetupTree(); |
1394 Layer* root_layer = layer_tree_host()->root_layer(); | 1431 Layer* root_layer = layer_tree_host()->root_layer(); |
1395 root_layer->SetBounds(gfx::Size(10, 10)); | 1432 root_layer->SetBounds(gfx::Size(10, 10)); |
1396 | 1433 |
1397 CreateVirtualViewportLayers(root_layer, root_layer->bounds(), | 1434 CreateVirtualViewportLayers(root_layer, root_layer->bounds(), |
1398 root_layer->bounds(), root_layer->bounds(), | 1435 root_layer->bounds(), root_layer->bounds(), |
1399 layer_tree_host()); | 1436 layer_tree_host()); |
1400 | 1437 |
1401 Layer* outer_scroll_layer = | 1438 Layer* outer_scroll_layer = |
1402 layer_tree_host()->outer_viewport_scroll_layer(); | 1439 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
1403 | 1440 |
1404 Layer* root_scroll_layer = | 1441 Layer* root_scroll_layer = |
1405 CreateScrollLayer(outer_scroll_layer, &root_scroll_layer_client_); | 1442 CreateScrollLayer(outer_scroll_layer, &root_scroll_layer_client_); |
1406 Layer* sibling_scroll_layer = | 1443 Layer* sibling_scroll_layer = |
1407 CreateScrollLayer(outer_scroll_layer, &sibling_scroll_layer_client_); | 1444 CreateScrollLayer(outer_scroll_layer, &sibling_scroll_layer_client_); |
1408 Layer* child_scroll_layer = | 1445 Layer* child_scroll_layer = |
1409 CreateScrollLayer(root_scroll_layer, &child_scroll_layer_client_); | 1446 CreateScrollLayer(root_scroll_layer, &child_scroll_layer_client_); |
1410 root_scroll_layer_id_ = root_scroll_layer->id(); | 1447 root_scroll_layer_id_ = root_scroll_layer->id(); |
1411 sibling_scroll_layer_id_ = sibling_scroll_layer->id(); | 1448 sibling_scroll_layer_id_ = sibling_scroll_layer->id(); |
1412 child_scroll_layer_id_ = child_scroll_layer->id(); | 1449 child_scroll_layer_id_ = child_scroll_layer->id(); |
(...skipping 19 matching lines...) Expand all Loading... |
1432 case 1: | 1469 case 1: |
1433 EndTest(); | 1470 EndTest(); |
1434 break; | 1471 break; |
1435 } | 1472 } |
1436 } | 1473 } |
1437 | 1474 |
1438 void AfterTest() override {} | 1475 void AfterTest() override {} |
1439 | 1476 |
1440 virtual void DidScroll(Layer* layer) { | 1477 virtual void DidScroll(Layer* layer) { |
1441 if (scroll_destroy_whole_tree_) { | 1478 if (scroll_destroy_whole_tree_) { |
1442 layer_tree_host()->RegisterViewportLayers(NULL, NULL, NULL, NULL); | 1479 layer_tree_host()->GetLayerTree()->RegisterViewportLayers(NULL, NULL, |
| 1480 NULL, NULL); |
1443 layer_tree_host()->SetRootLayer(NULL); | 1481 layer_tree_host()->SetRootLayer(NULL); |
1444 EndTest(); | 1482 EndTest(); |
1445 return; | 1483 return; |
1446 } | 1484 } |
1447 layer->RemoveFromParent(); | 1485 layer->RemoveFromParent(); |
1448 } | 1486 } |
1449 | 1487 |
1450 protected: | 1488 protected: |
1451 class FakeLayerScrollClient { | 1489 class FakeLayerScrollClient { |
1452 public: | 1490 public: |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1514 scroll_amount_(2, -1), | 1552 scroll_amount_(2, -1), |
1515 num_commits_(0), | 1553 num_commits_(0), |
1516 num_scrolls_(0) {} | 1554 num_scrolls_(0) {} |
1517 | 1555 |
1518 void InitializeSettings(LayerTreeSettings* settings) override { | 1556 void InitializeSettings(LayerTreeSettings* settings) override { |
1519 settings->main_frame_before_activation_enabled = true; | 1557 settings->main_frame_before_activation_enabled = true; |
1520 } | 1558 } |
1521 | 1559 |
1522 void BeginTest() override { | 1560 void BeginTest() override { |
1523 outer_viewport_container_layer_id_ = layer_tree_host() | 1561 outer_viewport_container_layer_id_ = layer_tree_host() |
| 1562 ->GetLayerTree() |
1524 ->outer_viewport_scroll_layer() | 1563 ->outer_viewport_scroll_layer() |
1525 ->scroll_clip_layer() | 1564 ->scroll_clip_layer() |
1526 ->id(); | 1565 ->id(); |
1527 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 1566 layer_tree_host() |
1528 initial_scroll_); | 1567 ->GetLayerTree() |
1529 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( | 1568 ->outer_viewport_scroll_layer() |
1530 base::Bind(&LayerTreeHostScrollTestScrollMFBA::DidScrollOuterViewport, | 1569 ->SetScrollOffset(initial_scroll_); |
1531 base::Unretained(this))); | 1570 layer_tree_host() |
| 1571 ->GetLayerTree() |
| 1572 ->outer_viewport_scroll_layer() |
| 1573 ->set_did_scroll_callback(base::Bind( |
| 1574 &LayerTreeHostScrollTestScrollMFBA::DidScrollOuterViewport, |
| 1575 base::Unretained(this))); |
1532 PostSetNeedsCommitToMainThread(); | 1576 PostSetNeedsCommitToMainThread(); |
1533 } | 1577 } |
1534 | 1578 |
1535 void ReadyToCommitOnThread(LayerTreeHostImpl* impl) override { | 1579 void ReadyToCommitOnThread(LayerTreeHostImpl* impl) override { |
1536 switch (num_commits_) { | 1580 switch (num_commits_) { |
1537 case 1: | 1581 case 1: |
1538 // Ask for commit here because activation (and draw) will be blocked. | 1582 // Ask for commit here because activation (and draw) will be blocked. |
1539 impl->SetNeedsCommit(); | 1583 impl->SetNeedsCommit(); |
1540 // Block activation after second commit until third commit is ready. | 1584 // Block activation after second commit until third commit is ready. |
1541 impl->BlockNotifyReadyToActivateForTesting(true); | 1585 impl->BlockNotifyReadyToActivateForTesting(true); |
1542 break; | 1586 break; |
1543 case 2: | 1587 case 2: |
1544 // Unblock activation after third commit is ready. | 1588 // Unblock activation after third commit is ready. |
1545 impl->BlockNotifyReadyToActivateForTesting(false); | 1589 impl->BlockNotifyReadyToActivateForTesting(false); |
1546 break; | 1590 break; |
1547 } | 1591 } |
1548 num_commits_++; | 1592 num_commits_++; |
1549 } | 1593 } |
1550 | 1594 |
1551 void UpdateLayerTreeHost() override { | 1595 void UpdateLayerTreeHost() override { |
1552 Layer* scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 1596 Layer* scroll_layer = |
| 1597 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
1553 switch (layer_tree_host()->source_frame_number()) { | 1598 switch (layer_tree_host()->source_frame_number()) { |
1554 case 0: | 1599 case 0: |
1555 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 1600 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); |
1556 break; | 1601 break; |
1557 case 1: | 1602 case 1: |
1558 EXPECT_VECTOR_EQ( | 1603 EXPECT_VECTOR_EQ( |
1559 gfx::ScrollOffsetWithDelta(initial_scroll_, scroll_amount_), | 1604 gfx::ScrollOffsetWithDelta(initial_scroll_, scroll_amount_), |
1560 scroll_layer->scroll_offset()); | 1605 scroll_layer->scroll_offset()); |
1561 // Pretend like Javascript updated the scroll position itself. | 1606 // Pretend like Javascript updated the scroll position itself. |
1562 scroll_layer->SetScrollOffset(second_scroll_); | 1607 scroll_layer->SetScrollOffset(second_scroll_); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1646 num_impl_commits_(0), | 1691 num_impl_commits_(0), |
1647 num_aborted_commits_(0), | 1692 num_aborted_commits_(0), |
1648 num_impl_scrolls_(0), | 1693 num_impl_scrolls_(0), |
1649 num_draws_(0) {} | 1694 num_draws_(0) {} |
1650 | 1695 |
1651 void InitializeSettings(LayerTreeSettings* settings) override { | 1696 void InitializeSettings(LayerTreeSettings* settings) override { |
1652 settings->main_frame_before_activation_enabled = true; | 1697 settings->main_frame_before_activation_enabled = true; |
1653 } | 1698 } |
1654 | 1699 |
1655 void BeginTest() override { | 1700 void BeginTest() override { |
1656 layer_tree_host()->outer_viewport_scroll_layer()->SetScrollOffset( | 1701 layer_tree_host() |
1657 initial_scroll_); | 1702 ->GetLayerTree() |
1658 layer_tree_host()->outer_viewport_scroll_layer()->set_did_scroll_callback( | 1703 ->outer_viewport_scroll_layer() |
1659 base::Bind(&LayerTreeHostScrollTestScrollAbortedCommitMFBA:: | 1704 ->SetScrollOffset(initial_scroll_); |
1660 DidScrollOuterViewport, | 1705 layer_tree_host() |
1661 base::Unretained(this))); | 1706 ->GetLayerTree() |
| 1707 ->outer_viewport_scroll_layer() |
| 1708 ->set_did_scroll_callback( |
| 1709 base::Bind(&LayerTreeHostScrollTestScrollAbortedCommitMFBA:: |
| 1710 DidScrollOuterViewport, |
| 1711 base::Unretained(this))); |
1662 PostSetNeedsCommitToMainThread(); | 1712 PostSetNeedsCommitToMainThread(); |
1663 } | 1713 } |
1664 | 1714 |
1665 void SetupTree() override { | 1715 void SetupTree() override { |
1666 LayerTreeHostScrollTest::SetupTree(); | 1716 LayerTreeHostScrollTest::SetupTree(); |
1667 | 1717 |
1668 gfx::Size scroll_layer_bounds(200, 200); | 1718 gfx::Size scroll_layer_bounds(200, 200); |
1669 layer_tree_host()->outer_viewport_scroll_layer()->SetBounds( | 1719 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer()->SetBounds( |
1670 scroll_layer_bounds); | 1720 scroll_layer_bounds); |
1671 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); | 1721 layer_tree_host()->SetPageScaleFactorAndLimits(1.f, 0.01f, 100.f); |
1672 } | 1722 } |
1673 | 1723 |
1674 void WillBeginMainFrame() override { | 1724 void WillBeginMainFrame() override { |
1675 num_will_begin_main_frames_++; | 1725 num_will_begin_main_frames_++; |
1676 Layer* root_scroll_layer = layer_tree_host()->outer_viewport_scroll_layer(); | 1726 Layer* root_scroll_layer = |
| 1727 layer_tree_host()->GetLayerTree()->outer_viewport_scroll_layer(); |
1677 switch (num_will_begin_main_frames_) { | 1728 switch (num_will_begin_main_frames_) { |
1678 case 1: | 1729 case 1: |
1679 // This will not be aborted because of the initial prop changes. | 1730 // This will not be aborted because of the initial prop changes. |
1680 EXPECT_EQ(0, num_impl_scrolls_); | 1731 EXPECT_EQ(0, num_impl_scrolls_); |
1681 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); | 1732 EXPECT_EQ(0, layer_tree_host()->source_frame_number()); |
1682 EXPECT_VECTOR_EQ(initial_scroll_, root_scroll_layer->scroll_offset()); | 1733 EXPECT_VECTOR_EQ(initial_scroll_, root_scroll_layer->scroll_offset()); |
1683 break; | 1734 break; |
1684 case 2: | 1735 case 2: |
1685 // This commit will not be aborted because of the scroll change. | 1736 // This commit will not be aborted because of the scroll change. |
1686 EXPECT_EQ(1, num_impl_scrolls_); | 1737 EXPECT_EQ(1, num_impl_scrolls_); |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1850 int num_impl_commits_; | 1901 int num_impl_commits_; |
1851 int num_aborted_commits_; | 1902 int num_aborted_commits_; |
1852 int num_impl_scrolls_; | 1903 int num_impl_scrolls_; |
1853 int num_draws_; | 1904 int num_draws_; |
1854 }; | 1905 }; |
1855 | 1906 |
1856 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollAbortedCommitMFBA); | 1907 MULTI_THREAD_TEST_F(LayerTreeHostScrollTestScrollAbortedCommitMFBA); |
1857 | 1908 |
1858 } // namespace | 1909 } // namespace |
1859 } // namespace cc | 1910 } // namespace cc |
OLD | NEW |