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/thread_task_runner_handle.h" | 10 #include "base/thread_task_runner_handle.h" |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 return scroll_state; | 49 return scroll_state; |
50 } | 50 } |
51 | 51 |
52 scoped_ptr<ScrollState> EndState() { | 52 scoped_ptr<ScrollState> EndState() { |
53 ScrollStateData scroll_state_data; | 53 ScrollStateData scroll_state_data; |
54 scroll_state_data.is_ending = true; | 54 scroll_state_data.is_ending = true; |
55 scoped_ptr<ScrollState> scroll_state(new ScrollState(scroll_state_data)); | 55 scoped_ptr<ScrollState> scroll_state(new ScrollState(scroll_state_data)); |
56 return scroll_state; | 56 return scroll_state; |
57 } | 57 } |
58 | 58 |
| 59 static ScrollTree* ScrollTreeForLayer(LayerImpl* layer_impl) { |
| 60 return &layer_impl->layer_tree_impl()->property_trees()->scroll_tree; |
| 61 } |
| 62 |
59 class LayerTreeHostScrollTest : public LayerTreeTest { | 63 class LayerTreeHostScrollTest : public LayerTreeTest { |
60 protected: | 64 protected: |
61 void SetupTree() override { | 65 void SetupTree() override { |
62 LayerTreeTest::SetupTree(); | 66 LayerTreeTest::SetupTree(); |
63 Layer* root_layer = layer_tree_host()->root_layer(); | 67 Layer* root_layer = layer_tree_host()->root_layer(); |
64 | 68 |
65 // Create an effective max_scroll_offset of (100, 100). | 69 // Create an effective max_scroll_offset of (100, 100). |
66 gfx::Size scroll_layer_bounds(root_layer->bounds().width() + 100, | 70 gfx::Size scroll_layer_bounds(root_layer->bounds().width() + 100, |
67 root_layer->bounds().height() + 100); | 71 root_layer->bounds().height() + 100); |
68 | 72 |
(...skipping 30 matching lines...) Expand all Loading... |
99 scroll_layer->scroll_offset()); | 103 scroll_layer->scroll_offset()); |
100 | 104 |
101 // Pretend like Javascript updated the scroll position itself. | 105 // Pretend like Javascript updated the scroll position itself. |
102 scroll_layer->SetScrollOffset(second_scroll_); | 106 scroll_layer->SetScrollOffset(second_scroll_); |
103 } | 107 } |
104 } | 108 } |
105 | 109 |
106 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 110 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
107 LayerImpl* root = impl->active_tree()->root_layer(); | 111 LayerImpl* root = impl->active_tree()->root_layer(); |
108 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 112 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
109 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); | 113 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(scroll_layer)); |
110 | 114 |
111 scroll_layer->SetScrollClipLayer(root->children()[0]->id()); | 115 scroll_layer->SetScrollClipLayer(root->children()[0]->id()); |
112 scroll_layer->SetBounds( | 116 scroll_layer->SetBounds( |
113 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); | 117 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); |
114 scroll_layer->ScrollBy(scroll_amount_); | 118 scroll_layer->ScrollBy(scroll_amount_); |
115 | 119 |
116 switch (impl->active_tree()->source_frame_number()) { | 120 switch (impl->active_tree()->source_frame_number()) { |
117 case 0: | 121 case 0: |
118 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); | 122 EXPECT_VECTOR_EQ(initial_scroll_, ScrollTreeForLayer(scroll_layer) |
119 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); | 123 ->GetScrollOffsetBaseForTesting( |
| 124 scroll_layer->id())); |
| 125 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
120 PostSetNeedsCommitToMainThread(); | 126 PostSetNeedsCommitToMainThread(); |
121 break; | 127 break; |
122 case 1: | 128 case 1: |
123 EXPECT_VECTOR_EQ(second_scroll_, scroll_layer->BaseScrollOffset()); | 129 EXPECT_VECTOR_EQ(second_scroll_, ScrollTreeForLayer(scroll_layer) |
124 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); | 130 ->GetScrollOffsetBaseForTesting( |
| 131 scroll_layer->id())); |
| 132 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
125 EndTest(); | 133 EndTest(); |
126 break; | 134 break; |
127 } | 135 } |
128 } | 136 } |
129 | 137 |
130 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 138 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, |
131 const gfx::Vector2dF& outer_delta, | 139 const gfx::Vector2dF& outer_delta, |
132 const gfx::Vector2dF& elastic_overscroll_delta, | 140 const gfx::Vector2dF& elastic_overscroll_delta, |
133 float scale, | 141 float scale, |
134 float top_controls_delta) override { | 142 float top_controls_delta) override { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
176 break; | 184 break; |
177 } | 185 } |
178 } | 186 } |
179 | 187 |
180 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 188 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
181 LayerImpl* scroll_layer = | 189 LayerImpl* scroll_layer = |
182 impl->active_tree()->LayerById(scroll_layer_->id()); | 190 impl->active_tree()->LayerById(scroll_layer_->id()); |
183 if (impl->active_tree()->source_frame_number() == 0 && | 191 if (impl->active_tree()->source_frame_number() == 0 && |
184 impl->SourceAnimationFrameNumberForTesting() == 1) { | 192 impl->SourceAnimationFrameNumberForTesting() == 1) { |
185 // First draw after first commit. | 193 // First draw after first commit. |
186 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); | 194 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(scroll_layer)); |
187 scroll_layer->ScrollBy(scroll_amount_); | 195 scroll_layer->ScrollBy(scroll_amount_); |
188 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); | 196 EXPECT_VECTOR_EQ(scroll_amount_, ScrollDelta(scroll_layer)); |
189 | 197 |
190 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); | 198 EXPECT_VECTOR_EQ(initial_scroll_, |
| 199 ScrollTreeForLayer(scroll_layer) |
| 200 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
191 PostSetNeedsRedrawToMainThread(); | 201 PostSetNeedsRedrawToMainThread(); |
192 } else if (impl->active_tree()->source_frame_number() == 0 && | 202 } else if (impl->active_tree()->source_frame_number() == 0 && |
193 impl->SourceAnimationFrameNumberForTesting() == 2) { | 203 impl->SourceAnimationFrameNumberForTesting() == 2) { |
194 // Second draw after first commit. | 204 // Second draw after first commit. |
195 EXPECT_EQ(scroll_layer->ScrollDelta(), scroll_amount_); | 205 EXPECT_EQ(ScrollDelta(scroll_layer), scroll_amount_); |
196 scroll_layer->ScrollBy(scroll_amount_); | 206 scroll_layer->ScrollBy(scroll_amount_); |
197 EXPECT_VECTOR_EQ(scroll_amount_ + scroll_amount_, | 207 EXPECT_VECTOR_EQ(scroll_amount_ + scroll_amount_, |
198 scroll_layer->ScrollDelta()); | 208 ScrollDelta(scroll_layer)); |
199 | 209 |
200 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer_->scroll_offset()); | 210 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer_->scroll_offset()); |
201 PostSetNeedsCommitToMainThread(); | 211 PostSetNeedsCommitToMainThread(); |
202 } else if (impl->active_tree()->source_frame_number() == 1) { | 212 } else if (impl->active_tree()->source_frame_number() == 1) { |
203 // Third or later draw after second commit. | 213 // Third or later draw after second commit. |
204 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); | 214 EXPECT_GE(impl->SourceAnimationFrameNumberForTesting(), 3u); |
205 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer_->ScrollDelta()); | |
206 EXPECT_VECTOR_EQ( | 215 EXPECT_VECTOR_EQ( |
207 gfx::ScrollOffsetWithDelta(initial_scroll_, | 216 gfx::ScrollOffsetWithDelta(initial_scroll_, |
208 scroll_amount_ + scroll_amount_), | 217 scroll_amount_ + scroll_amount_), |
209 scroll_layer_->scroll_offset()); | 218 scroll_layer_->scroll_offset()); |
210 EndTest(); | 219 EndTest(); |
211 } | 220 } |
212 } | 221 } |
213 | 222 |
214 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 223 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, |
215 const gfx::Vector2dF& outer_delta, | 224 const gfx::Vector2dF& outer_delta, |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { | 330 void BeginCommitOnThread(LayerTreeHostImpl* impl) override { |
322 num_impl_commits_++; | 331 num_impl_commits_++; |
323 } | 332 } |
324 | 333 |
325 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 334 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
326 LayerImpl* root_scroll_layer = impl->OuterViewportScrollLayer(); | 335 LayerImpl* root_scroll_layer = impl->OuterViewportScrollLayer(); |
327 | 336 |
328 if (impl->active_tree()->source_frame_number() == 0 && | 337 if (impl->active_tree()->source_frame_number() == 0 && |
329 impl->SourceAnimationFrameNumberForTesting() == 1) { | 338 impl->SourceAnimationFrameNumberForTesting() == 1) { |
330 // First draw | 339 // First draw |
331 EXPECT_VECTOR_EQ(gfx::Vector2d(), root_scroll_layer->ScrollDelta()); | 340 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(root_scroll_layer)); |
332 root_scroll_layer->ScrollBy(impl_scroll_); | 341 root_scroll_layer->ScrollBy(impl_scroll_); |
333 EXPECT_VECTOR_EQ(impl_scroll_, root_scroll_layer->ScrollDelta()); | 342 EXPECT_VECTOR_EQ(impl_scroll_, ScrollDelta(root_scroll_layer)); |
334 EXPECT_VECTOR_EQ(initial_scroll_, root_scroll_layer->BaseScrollOffset()); | 343 EXPECT_VECTOR_EQ(initial_scroll_, ScrollTreeForLayer(root_scroll_layer) |
| 344 ->GetScrollOffsetBaseForTesting( |
| 345 root_scroll_layer->id())); |
335 | 346 |
336 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 347 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
337 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); | 348 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
338 impl->active_tree()->SetPageScaleOnActiveTree(impl_scale_); | 349 impl->active_tree()->SetPageScaleOnActiveTree(impl_scale_); |
339 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 350 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
340 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); | 351 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); |
341 | 352 |
342 // To simplify the testing flow, don't redraw here, just commit. | 353 // To simplify the testing flow, don't redraw here, just commit. |
343 impl->SetNeedsCommit(); | 354 impl->SetNeedsCommit(); |
344 } else if (impl->active_tree()->source_frame_number() == 0 && | 355 } else if (impl->active_tree()->source_frame_number() == 0 && |
345 impl->SourceAnimationFrameNumberForTesting() == 2) { | 356 impl->SourceAnimationFrameNumberForTesting() == 2) { |
346 // Test a second draw after an aborted commit. | 357 // Test a second draw after an aborted commit. |
347 // The scroll/scale values should be baked into the offset/scale factor | 358 // The scroll/scale values should be baked into the offset/scale factor |
348 // since the main thread consumed but aborted the begin frame. | 359 // since the main thread consumed but aborted the begin frame. |
349 EXPECT_VECTOR_EQ(gfx::Vector2d(), root_scroll_layer->ScrollDelta()); | 360 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(root_scroll_layer)); |
350 root_scroll_layer->ScrollBy(impl_scroll_); | 361 root_scroll_layer->ScrollBy(impl_scroll_); |
351 EXPECT_VECTOR_EQ(impl_scroll_, root_scroll_layer->ScrollDelta()); | 362 EXPECT_VECTOR_EQ(impl_scroll_, ScrollDelta(root_scroll_layer)); |
352 EXPECT_VECTOR_EQ( | 363 EXPECT_VECTOR_EQ( |
353 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_scroll_), | 364 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_scroll_), |
354 root_scroll_layer->BaseScrollOffset()); | 365 ScrollTreeForLayer(root_scroll_layer) |
| 366 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); |
355 | 367 |
356 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 368 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
357 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); | 369 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); |
358 impl->active_tree()->SetPageScaleOnActiveTree(impl_scale_ * impl_scale_); | 370 impl->active_tree()->SetPageScaleOnActiveTree(impl_scale_ * impl_scale_); |
359 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 371 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
360 EXPECT_EQ(impl_scale_ * impl_scale_, | 372 EXPECT_EQ(impl_scale_ * impl_scale_, |
361 impl->active_tree()->current_page_scale_factor()); | 373 impl->active_tree()->current_page_scale_factor()); |
362 | 374 |
363 impl->SetNeedsCommit(); | 375 impl->SetNeedsCommit(); |
364 } else if (impl->active_tree()->source_frame_number() == 1) { | 376 } else if (impl->active_tree()->source_frame_number() == 1) { |
365 // Commit for source frame 1 is aborted. | 377 // Commit for source frame 1 is aborted. |
366 NOTREACHED(); | 378 NOTREACHED(); |
367 } else if (impl->active_tree()->source_frame_number() == 2 && | 379 } else if (impl->active_tree()->source_frame_number() == 2 && |
368 impl->SourceAnimationFrameNumberForTesting() == 3) { | 380 impl->SourceAnimationFrameNumberForTesting() == 3) { |
369 // Third draw after the second full commit. | 381 // Third draw after the second full commit. |
370 EXPECT_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 382 EXPECT_EQ(ScrollDelta(root_scroll_layer), gfx::Vector2d()); |
371 root_scroll_layer->ScrollBy(impl_scroll_); | 383 root_scroll_layer->ScrollBy(impl_scroll_); |
372 impl->SetNeedsCommit(); | 384 impl->SetNeedsCommit(); |
373 EXPECT_VECTOR_EQ(impl_scroll_, root_scroll_layer->ScrollDelta()); | 385 EXPECT_VECTOR_EQ(impl_scroll_, ScrollDelta(root_scroll_layer)); |
374 gfx::Vector2dF delta = impl_scroll_ + impl_scroll_ + second_main_scroll_; | 386 gfx::Vector2dF delta = impl_scroll_ + impl_scroll_ + second_main_scroll_; |
375 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, delta), | 387 EXPECT_VECTOR_EQ( |
376 root_scroll_layer->BaseScrollOffset()); | 388 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), |
| 389 ScrollTreeForLayer(root_scroll_layer) |
| 390 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); |
377 } else if (impl->active_tree()->source_frame_number() == 2 && | 391 } else if (impl->active_tree()->source_frame_number() == 2 && |
378 impl->SourceAnimationFrameNumberForTesting() == 4) { | 392 impl->SourceAnimationFrameNumberForTesting() == 4) { |
379 // Final draw after the second aborted commit. | 393 // Final draw after the second aborted commit. |
380 EXPECT_VECTOR_EQ(gfx::Vector2d(), root_scroll_layer->ScrollDelta()); | 394 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(root_scroll_layer)); |
381 gfx::Vector2dF delta = | 395 gfx::Vector2dF delta = |
382 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; | 396 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; |
383 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(initial_scroll_, delta), | 397 EXPECT_VECTOR_EQ( |
384 root_scroll_layer->BaseScrollOffset()); | 398 gfx::ScrollOffsetWithDelta(initial_scroll_, delta), |
| 399 ScrollTreeForLayer(root_scroll_layer) |
| 400 ->GetScrollOffsetBaseForTesting(root_scroll_layer->id())); |
385 EndTest(); | 401 EndTest(); |
386 } else { | 402 } else { |
387 // Commit for source frame 3 is aborted. | 403 // Commit for source frame 3 is aborted. |
388 NOTREACHED(); | 404 NOTREACHED(); |
389 } | 405 } |
390 } | 406 } |
391 | 407 |
392 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 408 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, |
393 const gfx::Vector2dF& outer_delta, | 409 const gfx::Vector2dF& outer_delta, |
394 const gfx::Vector2dF& elastic_overscroll_delta, | 410 const gfx::Vector2dF& elastic_overscroll_delta, |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 | 450 |
435 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 451 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
436 | 452 |
437 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 453 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
438 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 454 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
439 | 455 |
440 // Check that a fractional scroll delta is correctly accumulated over | 456 // Check that a fractional scroll delta is correctly accumulated over |
441 // multiple commits. | 457 // multiple commits. |
442 switch (impl->active_tree()->source_frame_number()) { | 458 switch (impl->active_tree()->source_frame_number()) { |
443 case 0: | 459 case 0: |
444 EXPECT_VECTOR_EQ(gfx::Vector2d(0, 0), scroll_layer->BaseScrollOffset()); | 460 EXPECT_VECTOR_EQ( |
445 EXPECT_VECTOR_EQ(gfx::Vector2d(0, 0), scroll_layer->ScrollDelta()); | 461 gfx::Vector2d(0, 0), |
| 462 ScrollTreeForLayer(scroll_layer) |
| 463 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
| 464 EXPECT_VECTOR_EQ(gfx::Vector2d(0, 0), ScrollDelta(scroll_layer)); |
446 PostSetNeedsCommitToMainThread(); | 465 PostSetNeedsCommitToMainThread(); |
447 break; | 466 break; |
448 case 1: | 467 case 1: |
449 EXPECT_VECTOR_EQ(gfx::ToFlooredVector2d(scroll_amount_), | 468 EXPECT_VECTOR_EQ( |
450 scroll_layer->BaseScrollOffset()); | 469 gfx::ToFlooredVector2d(scroll_amount_), |
| 470 ScrollTreeForLayer(scroll_layer) |
| 471 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
451 EXPECT_VECTOR_EQ(gfx::Vector2dF(fmod(scroll_amount_.x(), 1.0f), 0.0f), | 472 EXPECT_VECTOR_EQ(gfx::Vector2dF(fmod(scroll_amount_.x(), 1.0f), 0.0f), |
452 scroll_layer->ScrollDelta()); | 473 ScrollDelta(scroll_layer)); |
453 PostSetNeedsCommitToMainThread(); | 474 PostSetNeedsCommitToMainThread(); |
454 break; | 475 break; |
455 case 2: | 476 case 2: |
456 EXPECT_VECTOR_EQ( | 477 EXPECT_VECTOR_EQ( |
457 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_), | 478 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_), |
458 scroll_layer->BaseScrollOffset()); | 479 ScrollTreeForLayer(scroll_layer) |
| 480 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
459 EXPECT_VECTOR_EQ( | 481 EXPECT_VECTOR_EQ( |
460 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f), | 482 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f), |
461 scroll_layer->ScrollDelta()); | 483 ScrollDelta(scroll_layer)); |
462 EndTest(); | 484 EndTest(); |
463 break; | 485 break; |
464 } | 486 } |
465 scroll_layer->ScrollBy(scroll_amount_); | 487 scroll_layer->ScrollBy(scroll_amount_); |
466 } | 488 } |
467 | 489 |
468 void AfterTest() override {} | 490 void AfterTest() override {} |
469 | 491 |
470 private: | 492 private: |
471 gfx::Vector2dF scroll_amount_; | 493 gfx::Vector2dF scroll_amount_; |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 LayerImpl* expected_scroll_layer_impl = NULL; | 620 LayerImpl* expected_scroll_layer_impl = NULL; |
599 LayerImpl* expected_no_scroll_layer_impl = NULL; | 621 LayerImpl* expected_no_scroll_layer_impl = NULL; |
600 if (scroll_child_layer_) { | 622 if (scroll_child_layer_) { |
601 expected_scroll_layer_impl = child_layer_impl; | 623 expected_scroll_layer_impl = child_layer_impl; |
602 expected_no_scroll_layer_impl = root_scroll_layer_impl; | 624 expected_no_scroll_layer_impl = root_scroll_layer_impl; |
603 } else { | 625 } else { |
604 expected_scroll_layer_impl = root_scroll_layer_impl; | 626 expected_scroll_layer_impl = root_scroll_layer_impl; |
605 expected_no_scroll_layer_impl = child_layer_impl; | 627 expected_no_scroll_layer_impl = child_layer_impl; |
606 } | 628 } |
607 | 629 |
608 EXPECT_VECTOR_EQ(gfx::Vector2d(), inner_scroll->ScrollDelta()); | 630 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(inner_scroll)); |
609 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 631 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
610 expected_no_scroll_layer_impl->ScrollDelta()); | 632 ScrollDelta(expected_no_scroll_layer_impl)); |
611 | 633 |
612 // Ensure device scale factor matches the active tree. | 634 // Ensure device scale factor matches the active tree. |
613 EXPECT_EQ(device_scale_factor_, impl->active_tree()->device_scale_factor()); | 635 EXPECT_EQ(device_scale_factor_, impl->active_tree()->device_scale_factor()); |
614 switch (impl->active_tree()->source_frame_number()) { | 636 switch (impl->active_tree()->source_frame_number()) { |
615 case 0: { | 637 case 0: { |
616 // GESTURE scroll on impl thread. Also tests that the last scrolled | 638 // GESTURE scroll on impl thread. Also tests that the last scrolled |
617 // layer id is stored even after the scrolling ends. | 639 // layer id is stored even after the scrolling ends. |
618 gfx::Point scroll_point = | 640 gfx::Point scroll_point = |
619 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() - | 641 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() - |
620 gfx::Vector2dF(0.5f, 0.5f)); | 642 gfx::Vector2dF(0.5f, 0.5f)); |
621 InputHandler::ScrollStatus status = impl->ScrollBegin( | 643 InputHandler::ScrollStatus status = impl->ScrollBegin( |
622 BeginState(scroll_point).get(), InputHandler::GESTURE); | 644 BeginState(scroll_point).get(), InputHandler::GESTURE); |
623 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 645 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
624 impl->ScrollBy(UpdateState(gfx::Point(), scroll_amount_).get()); | 646 impl->ScrollBy(UpdateState(gfx::Point(), scroll_amount_).get()); |
625 LayerImpl* scrolling_layer = impl->CurrentlyScrollingLayer(); | 647 LayerImpl* scrolling_layer = impl->CurrentlyScrollingLayer(); |
626 CHECK(scrolling_layer); | 648 CHECK(scrolling_layer); |
627 impl->ScrollEnd(EndState().get()); | 649 impl->ScrollEnd(EndState().get()); |
628 CHECK(!impl->CurrentlyScrollingLayer()); | 650 CHECK(!impl->CurrentlyScrollingLayer()); |
629 EXPECT_EQ(scrolling_layer->id(), | 651 EXPECT_EQ(scrolling_layer->id(), |
630 impl->active_tree()->LastScrolledLayerId()); | 652 impl->active_tree()->LastScrolledLayerId()); |
631 | 653 |
632 // Check the scroll is applied as a delta. | 654 // Check the scroll is applied as a delta. |
633 EXPECT_VECTOR_EQ(initial_offset_, | 655 EXPECT_VECTOR_EQ(initial_offset_, |
634 expected_scroll_layer_impl->BaseScrollOffset()); | 656 ScrollTreeForLayer(expected_scroll_layer_impl) |
| 657 ->GetScrollOffsetBaseForTesting( |
| 658 expected_scroll_layer_impl->id())); |
635 EXPECT_VECTOR_EQ(scroll_amount_, | 659 EXPECT_VECTOR_EQ(scroll_amount_, |
636 expected_scroll_layer_impl->ScrollDelta()); | 660 ScrollDelta(expected_scroll_layer_impl)); |
637 break; | 661 break; |
638 } | 662 } |
639 case 1: { | 663 case 1: { |
640 // WHEEL scroll on impl thread. | 664 // WHEEL scroll on impl thread. |
641 gfx::Point scroll_point = | 665 gfx::Point scroll_point = |
642 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() + | 666 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() + |
643 gfx::Vector2dF(0.5f, 0.5f)); | 667 gfx::Vector2dF(0.5f, 0.5f)); |
644 InputHandler::ScrollStatus status = impl->ScrollBegin( | 668 InputHandler::ScrollStatus status = impl->ScrollBegin( |
645 BeginState(scroll_point).get(), InputHandler::WHEEL); | 669 BeginState(scroll_point).get(), InputHandler::WHEEL); |
646 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); | 670 EXPECT_EQ(InputHandler::SCROLL_ON_IMPL_THREAD, status.thread); |
647 impl->ScrollBy(UpdateState(gfx::Point(), scroll_amount_).get()); | 671 impl->ScrollBy(UpdateState(gfx::Point(), scroll_amount_).get()); |
648 impl->ScrollEnd(EndState().get()); | 672 impl->ScrollEnd(EndState().get()); |
649 | 673 |
650 // Check the scroll is applied as a delta. | 674 // Check the scroll is applied as a delta. |
651 EXPECT_VECTOR_EQ(javascript_scroll_, | 675 EXPECT_VECTOR_EQ(javascript_scroll_, |
652 expected_scroll_layer_impl->BaseScrollOffset()); | 676 ScrollTreeForLayer(expected_scroll_layer_impl) |
| 677 ->GetScrollOffsetBaseForTesting( |
| 678 expected_scroll_layer_impl->id())); |
653 EXPECT_VECTOR_EQ(scroll_amount_, | 679 EXPECT_VECTOR_EQ(scroll_amount_, |
654 expected_scroll_layer_impl->ScrollDelta()); | 680 ScrollDelta(expected_scroll_layer_impl)); |
655 break; | 681 break; |
656 } | 682 } |
657 case 2: | 683 case 2: |
658 | 684 |
659 EXPECT_VECTOR_EQ( | 685 EXPECT_VECTOR_EQ( |
660 gfx::ScrollOffsetWithDelta(javascript_scroll_, scroll_amount_), | 686 gfx::ScrollOffsetWithDelta(javascript_scroll_, scroll_amount_), |
661 expected_scroll_layer_impl->BaseScrollOffset()); | 687 ScrollTreeForLayer(expected_scroll_layer_impl) |
| 688 ->GetScrollOffsetBaseForTesting( |
| 689 expected_scroll_layer_impl->id())); |
662 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 690 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
663 expected_scroll_layer_impl->ScrollDelta()); | 691 ScrollDelta(expected_scroll_layer_impl)); |
664 | 692 |
665 EndTest(); | 693 EndTest(); |
666 break; | 694 break; |
667 } | 695 } |
668 } | 696 } |
669 | 697 |
670 void AfterTest() override { | 698 void AfterTest() override { |
671 if (scroll_child_layer_) { | 699 if (scroll_child_layer_) { |
672 EXPECT_EQ(0, num_scrolls_); | 700 EXPECT_EQ(0, num_scrolls_); |
673 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, | 701 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
831 | 859 |
832 LayerImpl* root = impl->active_tree()->root_layer(); | 860 LayerImpl* root = impl->active_tree()->root_layer(); |
833 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 861 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
834 LayerImpl* pending_root = | 862 LayerImpl* pending_root = |
835 impl->active_tree()->FindPendingTreeLayerById(root->id()); | 863 impl->active_tree()->FindPendingTreeLayerById(root->id()); |
836 | 864 |
837 switch (impl->active_tree()->source_frame_number()) { | 865 switch (impl->active_tree()->source_frame_number()) { |
838 case 0: | 866 case 0: |
839 if (!impl->pending_tree()) { | 867 if (!impl->pending_tree()) { |
840 impl->BlockNotifyReadyToActivateForTesting(true); | 868 impl->BlockNotifyReadyToActivateForTesting(true); |
841 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); | 869 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(scroll_layer)); |
842 scroll_layer->ScrollBy(impl_thread_scroll1_); | 870 scroll_layer->ScrollBy(impl_thread_scroll1_); |
843 | 871 |
844 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); | 872 EXPECT_VECTOR_EQ(initial_scroll_, ScrollTreeForLayer(scroll_layer) |
845 EXPECT_VECTOR_EQ(impl_thread_scroll1_, scroll_layer->ScrollDelta()); | 873 ->GetScrollOffsetBaseForTesting( |
| 874 scroll_layer->id())); |
| 875 EXPECT_VECTOR_EQ(impl_thread_scroll1_, ScrollDelta(scroll_layer)); |
846 PostSetNeedsCommitToMainThread(); | 876 PostSetNeedsCommitToMainThread(); |
847 | 877 |
848 // CommitCompleteOnThread will trigger this function again | 878 // CommitCompleteOnThread will trigger this function again |
849 // and cause us to take the else clause. | 879 // and cause us to take the else clause. |
850 } else { | 880 } else { |
851 impl->BlockNotifyReadyToActivateForTesting(false); | 881 impl->BlockNotifyReadyToActivateForTesting(false); |
852 ASSERT_TRUE(pending_root); | 882 ASSERT_TRUE(pending_root); |
853 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); | 883 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); |
854 | 884 |
855 scroll_layer->ScrollBy(impl_thread_scroll2_); | 885 scroll_layer->ScrollBy(impl_thread_scroll2_); |
856 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); | 886 EXPECT_VECTOR_EQ(initial_scroll_, ScrollTreeForLayer(scroll_layer) |
| 887 ->GetScrollOffsetBaseForTesting( |
| 888 scroll_layer->id())); |
857 EXPECT_VECTOR_EQ(impl_thread_scroll1_ + impl_thread_scroll2_, | 889 EXPECT_VECTOR_EQ(impl_thread_scroll1_ + impl_thread_scroll2_, |
858 scroll_layer->ScrollDelta()); | 890 ScrollDelta(scroll_layer)); |
859 | 891 |
860 LayerImpl* pending_scroll_layer = | 892 LayerImpl* pending_scroll_layer = |
861 impl->pending_tree()->OuterViewportScrollLayer(); | 893 impl->pending_tree()->OuterViewportScrollLayer(); |
862 EXPECT_VECTOR_EQ( | 894 EXPECT_VECTOR_EQ( |
863 gfx::ScrollOffsetWithDelta( | 895 gfx::ScrollOffsetWithDelta( |
864 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), | 896 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), |
865 pending_scroll_layer->BaseScrollOffset()); | 897 ScrollTreeForLayer(pending_scroll_layer) |
| 898 ->GetScrollOffsetBaseForTesting(pending_scroll_layer->id())); |
866 EXPECT_VECTOR_EQ(impl_thread_scroll2_, | 899 EXPECT_VECTOR_EQ(impl_thread_scroll2_, |
867 pending_scroll_layer->ScrollDelta()); | 900 ScrollDelta(pending_scroll_layer)); |
868 } | 901 } |
869 break; | 902 break; |
870 case 1: | 903 case 1: |
871 EXPECT_FALSE(impl->pending_tree()); | 904 EXPECT_FALSE(impl->pending_tree()); |
872 EXPECT_VECTOR_EQ( | 905 EXPECT_VECTOR_EQ( |
873 gfx::ScrollOffsetWithDelta( | 906 gfx::ScrollOffsetWithDelta( |
874 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), | 907 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_), |
875 scroll_layer->BaseScrollOffset()); | 908 ScrollTreeForLayer(scroll_layer) |
876 EXPECT_VECTOR_EQ(impl_thread_scroll2_, scroll_layer->ScrollDelta()); | 909 ->GetScrollOffsetBaseForTesting(scroll_layer->id())); |
| 910 EXPECT_VECTOR_EQ(impl_thread_scroll2_, ScrollDelta(scroll_layer)); |
877 EndTest(); | 911 EndTest(); |
878 break; | 912 break; |
879 } | 913 } |
880 } | 914 } |
881 | 915 |
882 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, | 916 void ApplyViewportDeltas(const gfx::Vector2dF& inner_delta, |
883 const gfx::Vector2dF& outer_delta, | 917 const gfx::Vector2dF& outer_delta, |
884 const gfx::Vector2dF& elastic_overscroll_delta, | 918 const gfx::Vector2dF& elastic_overscroll_delta, |
885 float scale, | 919 float scale, |
886 float top_controls_delta) override { | 920 float top_controls_delta) override { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
954 LayerImpl* active_scroll_layer = | 988 LayerImpl* active_scroll_layer = |
955 active_root ? impl->OuterViewportScrollLayer() : NULL; | 989 active_root ? impl->OuterViewportScrollLayer() : NULL; |
956 LayerImpl* pending_root = impl->pending_tree()->root_layer(); | 990 LayerImpl* pending_root = impl->pending_tree()->root_layer(); |
957 LayerImpl* pending_scroll_layer = | 991 LayerImpl* pending_scroll_layer = |
958 impl->pending_tree()->OuterViewportScrollLayer(); | 992 impl->pending_tree()->OuterViewportScrollLayer(); |
959 | 993 |
960 ASSERT_TRUE(pending_root); | 994 ASSERT_TRUE(pending_root); |
961 ASSERT_TRUE(pending_scroll_layer); | 995 ASSERT_TRUE(pending_scroll_layer); |
962 switch (impl->pending_tree()->source_frame_number()) { | 996 switch (impl->pending_tree()->source_frame_number()) { |
963 case 0: | 997 case 0: |
964 EXPECT_VECTOR_EQ(initial_scroll_, | 998 EXPECT_VECTOR_EQ( |
965 pending_scroll_layer->BaseScrollOffset()); | 999 initial_scroll_, |
966 EXPECT_VECTOR_EQ(gfx::Vector2d(), pending_scroll_layer->ScrollDelta()); | 1000 ScrollTreeForLayer(pending_scroll_layer) |
| 1001 ->GetScrollOffsetBaseForTesting(pending_scroll_layer->id())); |
| 1002 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(pending_scroll_layer)); |
967 EXPECT_FALSE(active_root); | 1003 EXPECT_FALSE(active_root); |
968 break; | 1004 break; |
969 case 1: | 1005 case 1: |
970 // Even though the scroll happened during the commit, both layers | 1006 // Even though the scroll happened during the commit, both layers |
971 // should have the appropriate scroll delta. | 1007 // should have the appropriate scroll delta. |
972 EXPECT_VECTOR_EQ(initial_scroll_, | 1008 EXPECT_VECTOR_EQ( |
973 pending_scroll_layer->BaseScrollOffset()); | 1009 initial_scroll_, |
| 1010 ScrollTreeForLayer(pending_scroll_layer) |
| 1011 ->GetScrollOffsetBaseForTesting(pending_scroll_layer->id())); |
974 EXPECT_VECTOR_EQ(impl_thread_scroll_, | 1012 EXPECT_VECTOR_EQ(impl_thread_scroll_, |
975 pending_scroll_layer->ScrollDelta()); | 1013 ScrollDelta(pending_scroll_layer)); |
976 ASSERT_TRUE(active_root); | 1014 ASSERT_TRUE(active_root); |
977 EXPECT_VECTOR_EQ(initial_scroll_, | 1015 EXPECT_VECTOR_EQ( |
978 active_scroll_layer->BaseScrollOffset()); | 1016 initial_scroll_, |
979 EXPECT_VECTOR_EQ(impl_thread_scroll_, | 1017 ScrollTreeForLayer(active_scroll_layer) |
980 active_scroll_layer->ScrollDelta()); | 1018 ->GetScrollOffsetBaseForTesting(active_scroll_layer->id())); |
| 1019 EXPECT_VECTOR_EQ(impl_thread_scroll_, ScrollDelta(active_scroll_layer)); |
981 break; | 1020 break; |
982 case 2: | 1021 case 2: |
983 // On the next commit, this delta should have been sent and applied. | 1022 // On the next commit, this delta should have been sent and applied. |
984 EXPECT_VECTOR_EQ( | 1023 EXPECT_VECTOR_EQ( |
985 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll_), | 1024 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll_), |
986 pending_scroll_layer->BaseScrollOffset()); | 1025 ScrollTreeForLayer(pending_scroll_layer) |
987 EXPECT_VECTOR_EQ(gfx::Vector2d(), pending_scroll_layer->ScrollDelta()); | 1026 ->GetScrollOffsetBaseForTesting(pending_scroll_layer->id())); |
| 1027 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(pending_scroll_layer)); |
988 break; | 1028 break; |
989 } | 1029 } |
990 } | 1030 } |
991 | 1031 |
992 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 1032 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
993 if (impl->pending_tree()) | 1033 if (impl->pending_tree()) |
994 impl->SetNeedsRedraw(); | 1034 impl->SetNeedsRedraw(); |
995 | 1035 |
996 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); | 1036 LayerImpl* scroll_layer = impl->OuterViewportScrollLayer(); |
997 | 1037 |
998 switch (impl->active_tree()->source_frame_number()) { | 1038 switch (impl->active_tree()->source_frame_number()) { |
999 case 0: | 1039 case 0: |
1000 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); | 1040 EXPECT_VECTOR_EQ(initial_scroll_, ScrollTreeForLayer(scroll_layer) |
1001 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); | 1041 ->GetScrollOffsetBaseForTesting( |
| 1042 scroll_layer->id())); |
| 1043 EXPECT_VECTOR_EQ(gfx::Vector2d(), ScrollDelta(scroll_layer)); |
1002 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 1044 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
1003 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); | 1045 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
1004 PostSetNeedsCommitToMainThread(); | 1046 PostSetNeedsCommitToMainThread(); |
1005 break; | 1047 break; |
1006 case 1: | 1048 case 1: |
1007 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); | 1049 EXPECT_VECTOR_EQ(initial_scroll_, ScrollTreeForLayer(scroll_layer) |
1008 EXPECT_VECTOR_EQ(impl_thread_scroll_, scroll_layer->ScrollDelta()); | 1050 ->GetScrollOffsetBaseForTesting( |
| 1051 scroll_layer->id())); |
| 1052 EXPECT_VECTOR_EQ(impl_thread_scroll_, ScrollDelta(scroll_layer)); |
1009 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 1053 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
1010 EXPECT_EQ(impl_scale_, | 1054 EXPECT_EQ(impl_scale_, |
1011 impl->active_tree()->current_page_scale_factor()); | 1055 impl->active_tree()->current_page_scale_factor()); |
1012 PostSetNeedsCommitToMainThread(); | 1056 PostSetNeedsCommitToMainThread(); |
1013 break; | 1057 break; |
1014 case 2: | 1058 case 2: |
1015 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 1059 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
1016 EXPECT_EQ(impl_scale_, | 1060 EXPECT_EQ(impl_scale_, |
1017 impl->active_tree()->current_page_scale_factor()); | 1061 impl->active_tree()->current_page_scale_factor()); |
1018 EndTest(); | 1062 EndTest(); |
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1306 CreateScrollLayer(root_scroll_layer, &child_scroll_layer_client_); | 1350 CreateScrollLayer(root_scroll_layer, &child_scroll_layer_client_); |
1307 fake_content_layer_client_.set_bounds(root_layer->bounds()); | 1351 fake_content_layer_client_.set_bounds(root_layer->bounds()); |
1308 } | 1352 } |
1309 | 1353 |
1310 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 1354 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
1311 | 1355 |
1312 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 1356 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
1313 LayerImpl* root = impl->OuterViewportScrollLayer(); | 1357 LayerImpl* root = impl->OuterViewportScrollLayer(); |
1314 switch (impl->active_tree()->source_frame_number()) { | 1358 switch (impl->active_tree()->source_frame_number()) { |
1315 case 0: | 1359 case 0: |
1316 root->child_at(0)->SetScrollDelta(gfx::Vector2dF(5, 5)); | 1360 SetScrollOffsetDelta(root->child_at(0), gfx::Vector2dF(5, 5)); |
1317 root->child_at(0)->child_at(0)->SetScrollDelta(gfx::Vector2dF(5, 5)); | 1361 SetScrollOffsetDelta(root->child_at(0)->child_at(0), |
1318 root->child_at(1)->SetScrollDelta(gfx::Vector2dF(5, 5)); | 1362 gfx::Vector2dF(5, 5)); |
| 1363 SetScrollOffsetDelta(root->child_at(1), gfx::Vector2dF(5, 5)); |
1319 PostSetNeedsCommitToMainThread(); | 1364 PostSetNeedsCommitToMainThread(); |
1320 break; | 1365 break; |
1321 case 1: | 1366 case 1: |
1322 EndTest(); | 1367 EndTest(); |
1323 break; | 1368 break; |
1324 } | 1369 } |
1325 } | 1370 } |
1326 | 1371 |
1327 void AfterTest() override {} | 1372 void AfterTest() override {} |
1328 | 1373 |
(...skipping 27 matching lines...) Expand all Loading... |
1356 scroll_layer->SetBounds(gfx::Size(parent->bounds().width() + 100, | 1401 scroll_layer->SetBounds(gfx::Size(parent->bounds().width() + 100, |
1357 parent->bounds().height() + 100)); | 1402 parent->bounds().height() + 100)); |
1358 scroll_layer->set_did_scroll_callback(base::Bind( | 1403 scroll_layer->set_did_scroll_callback(base::Bind( |
1359 &FakeLayerScrollClient::DidScroll, base::Unretained(client))); | 1404 &FakeLayerScrollClient::DidScroll, base::Unretained(client))); |
1360 client->owner_ = this; | 1405 client->owner_ = this; |
1361 client->layer_ = scroll_layer.get(); | 1406 client->layer_ = scroll_layer.get(); |
1362 parent->AddChild(scroll_layer); | 1407 parent->AddChild(scroll_layer); |
1363 return scroll_layer.get(); | 1408 return scroll_layer.get(); |
1364 } | 1409 } |
1365 | 1410 |
| 1411 static void SetScrollOffsetDelta(LayerImpl* layer_impl, |
| 1412 const gfx::Vector2dF& delta) { |
| 1413 layer_impl->SetCurrentScrollOffset( |
| 1414 layer_impl->synced_scroll_offset()->ActiveBase() + |
| 1415 gfx::ScrollOffset(delta)); |
| 1416 } |
| 1417 |
1366 FakeLayerScrollClient root_scroll_layer_client_; | 1418 FakeLayerScrollClient root_scroll_layer_client_; |
1367 FakeLayerScrollClient sibling_scroll_layer_client_; | 1419 FakeLayerScrollClient sibling_scroll_layer_client_; |
1368 FakeLayerScrollClient child_scroll_layer_client_; | 1420 FakeLayerScrollClient child_scroll_layer_client_; |
1369 | 1421 |
1370 FakeContentLayerClient fake_content_layer_client_; | 1422 FakeContentLayerClient fake_content_layer_client_; |
1371 | 1423 |
1372 bool scroll_destroy_whole_tree_; | 1424 bool scroll_destroy_whole_tree_; |
1373 }; | 1425 }; |
1374 | 1426 |
1375 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyLayer) { | 1427 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyLayer) { |
1376 RunTest(CompositorMode::THREADED, false); | 1428 RunTest(CompositorMode::THREADED, false); |
1377 } | 1429 } |
1378 | 1430 |
1379 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { | 1431 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { |
1380 scroll_destroy_whole_tree_ = true; | 1432 scroll_destroy_whole_tree_ = true; |
1381 RunTest(CompositorMode::THREADED, false); | 1433 RunTest(CompositorMode::THREADED, false); |
1382 } | 1434 } |
1383 | 1435 |
1384 } // namespace | 1436 } // namespace |
1385 } // namespace cc | 1437 } // namespace cc |
OLD | NEW |