Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Side by Side Diff: cc/trees/layer_tree_host_unittest_scroll.cc

Issue 2183403002: cc: Move data to LayerTree from LayerTreeHost. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@layer_tree_change
Patch Set: .. Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698