| 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/memory/weak_ptr.h" | 7 #include "base/memory/weak_ptr.h" |
| 8 #include "cc/layers/layer.h" | 8 #include "cc/layers/layer.h" |
| 9 #include "cc/layers/layer_impl.h" | 9 #include "cc/layers/layer_impl.h" |
| 10 #include "cc/layers/picture_layer.h" | 10 #include "cc/layers/picture_layer.h" |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 LayerImpl* scroll_layer = root->children()[0]; | 70 LayerImpl* scroll_layer = root->children()[0]; |
| 71 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); | 71 EXPECT_VECTOR_EQ(gfx::Vector2d(), scroll_layer->ScrollDelta()); |
| 72 | 72 |
| 73 scroll_layer->SetScrollClipLayer(root->id()); | 73 scroll_layer->SetScrollClipLayer(root->id()); |
| 74 scroll_layer->SetBounds( | 74 scroll_layer->SetBounds( |
| 75 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); | 75 gfx::Size(root->bounds().width() + 100, root->bounds().height() + 100)); |
| 76 scroll_layer->ScrollBy(scroll_amount_); | 76 scroll_layer->ScrollBy(scroll_amount_); |
| 77 | 77 |
| 78 switch (impl->active_tree()->source_frame_number()) { | 78 switch (impl->active_tree()->source_frame_number()) { |
| 79 case 0: | 79 case 0: |
| 80 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->scroll_offset()); | 80 EXPECT_VECTOR_EQ(initial_scroll_, scroll_layer->BaseScrollOffset()); |
| 81 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); | 81 EXPECT_VECTOR_EQ(scroll_amount_, scroll_layer->ScrollDelta()); |
| 82 PostSetNeedsCommitToMainThread(); | 82 PostSetNeedsCommitToMainThread(); |
| 83 break; | 83 break; |
| 84 case 1: | 84 case 1: |
| 85 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), second_scroll_); | 85 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), second_scroll_); |
| 86 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); | 86 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); |
| 87 EndTest(); | 87 EndTest(); |
| 88 break; | 88 break; |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 | 91 |
| 92 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 92 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
| 93 float scale, | 93 float scale, |
| 94 float top_controls_delta) override { | 94 float top_controls_delta) override { |
| 95 num_scrolls_++; | 95 num_scrolls_++; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 150 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 150 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
| 151 LayerImpl* scroll_layer = | 151 LayerImpl* scroll_layer = |
| 152 impl->active_tree()->LayerById(scroll_layer_->id()); | 152 impl->active_tree()->LayerById(scroll_layer_->id()); |
| 153 if (impl->active_tree()->source_frame_number() == 0 && | 153 if (impl->active_tree()->source_frame_number() == 0 && |
| 154 impl->SourceAnimationFrameNumber() == 1) { | 154 impl->SourceAnimationFrameNumber() == 1) { |
| 155 // First draw after first commit. | 155 // First draw after first commit. |
| 156 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 156 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 157 scroll_layer->ScrollBy(scroll_amount_); | 157 scroll_layer->ScrollBy(scroll_amount_); |
| 158 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); | 158 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), scroll_amount_); |
| 159 | 159 |
| 160 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 160 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), initial_scroll_); |
| 161 PostSetNeedsRedrawToMainThread(); | 161 PostSetNeedsRedrawToMainThread(); |
| 162 } else if (impl->active_tree()->source_frame_number() == 0 && | 162 } else if (impl->active_tree()->source_frame_number() == 0 && |
| 163 impl->SourceAnimationFrameNumber() == 2) { | 163 impl->SourceAnimationFrameNumber() == 2) { |
| 164 // Second draw after first commit. | 164 // Second draw after first commit. |
| 165 EXPECT_EQ(scroll_layer->ScrollDelta(), scroll_amount_); | 165 EXPECT_EQ(scroll_layer->ScrollDelta(), scroll_amount_); |
| 166 scroll_layer->ScrollBy(scroll_amount_); | 166 scroll_layer->ScrollBy(scroll_amount_); |
| 167 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), | 167 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), |
| 168 scroll_amount_ + scroll_amount_); | 168 scroll_amount_ + scroll_amount_); |
| 169 | 169 |
| 170 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), initial_scroll_); | 170 EXPECT_VECTOR_EQ(scroll_layer_->scroll_offset(), initial_scroll_); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 296 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
| 297 LayerImpl* root_scroll_layer = | 297 LayerImpl* root_scroll_layer = |
| 298 impl->active_tree()->root_layer()->children()[0]; | 298 impl->active_tree()->root_layer()->children()[0]; |
| 299 | 299 |
| 300 if (impl->active_tree()->source_frame_number() == 0 && | 300 if (impl->active_tree()->source_frame_number() == 0 && |
| 301 impl->SourceAnimationFrameNumber() == 1) { | 301 impl->SourceAnimationFrameNumber() == 1) { |
| 302 // First draw | 302 // First draw |
| 303 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 303 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 304 root_scroll_layer->ScrollBy(impl_scroll_); | 304 root_scroll_layer->ScrollBy(impl_scroll_); |
| 305 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); | 305 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); |
| 306 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), initial_scroll_); | 306 EXPECT_VECTOR_EQ(root_scroll_layer->BaseScrollOffset(), initial_scroll_); |
| 307 | 307 |
| 308 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 308 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
| 309 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); | 309 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
| 310 impl->SetPageScaleOnActiveTree(impl_scale_); | 310 impl->SetPageScaleOnActiveTree(impl_scale_); |
| 311 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 311 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
| 312 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); | 312 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); |
| 313 | 313 |
| 314 // To simplify the testing flow, don't redraw here, just commit. | 314 // To simplify the testing flow, don't redraw here, just commit. |
| 315 impl->SetNeedsCommit(); | 315 impl->SetNeedsCommit(); |
| 316 } else if (impl->active_tree()->source_frame_number() == 0 && | 316 } else if (impl->active_tree()->source_frame_number() == 0 && |
| 317 impl->SourceAnimationFrameNumber() == 2) { | 317 impl->SourceAnimationFrameNumber() == 2) { |
| 318 // Test a second draw after an aborted commit. | 318 // Test a second draw after an aborted commit. |
| 319 // The scroll/scale values should be baked into the offset/scale factor | 319 // The scroll/scale values should be baked into the offset/scale factor |
| 320 // since the main thread consumed but aborted the begin frame. | 320 // since the main thread consumed but aborted the begin frame. |
| 321 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 321 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 322 root_scroll_layer->ScrollBy(impl_scroll_); | 322 root_scroll_layer->ScrollBy(impl_scroll_); |
| 323 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); | 323 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); |
| 324 EXPECT_VECTOR_EQ( | 324 EXPECT_VECTOR_EQ( |
| 325 root_scroll_layer->scroll_offset(), | 325 root_scroll_layer->BaseScrollOffset(), |
| 326 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_scroll_)); | 326 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_scroll_)); |
| 327 | 327 |
| 328 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 328 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
| 329 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); | 329 EXPECT_EQ(impl_scale_, impl->active_tree()->current_page_scale_factor()); |
| 330 impl->SetPageScaleOnActiveTree(impl_scale_ * impl_scale_); | 330 impl->SetPageScaleOnActiveTree(impl_scale_ * impl_scale_); |
| 331 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 331 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
| 332 EXPECT_EQ(impl_scale_ * impl_scale_, | 332 EXPECT_EQ(impl_scale_ * impl_scale_, |
| 333 impl->active_tree()->current_page_scale_factor()); | 333 impl->active_tree()->current_page_scale_factor()); |
| 334 | 334 |
| 335 impl->SetNeedsCommit(); | 335 impl->SetNeedsCommit(); |
| 336 } else if (impl->active_tree()->source_frame_number() == 1) { | 336 } else if (impl->active_tree()->source_frame_number() == 1) { |
| 337 // Commit for source frame 1 is aborted. | 337 // Commit for source frame 1 is aborted. |
| 338 NOTREACHED(); | 338 NOTREACHED(); |
| 339 } else if (impl->active_tree()->source_frame_number() == 2 && | 339 } else if (impl->active_tree()->source_frame_number() == 2 && |
| 340 impl->SourceAnimationFrameNumber() == 3) { | 340 impl->SourceAnimationFrameNumber() == 3) { |
| 341 // Third draw after the second full commit. | 341 // Third draw after the second full commit. |
| 342 EXPECT_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 342 EXPECT_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 343 root_scroll_layer->ScrollBy(impl_scroll_); | 343 root_scroll_layer->ScrollBy(impl_scroll_); |
| 344 impl->SetNeedsCommit(); | 344 impl->SetNeedsCommit(); |
| 345 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); | 345 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), impl_scroll_); |
| 346 gfx::Vector2dF delta = impl_scroll_ + impl_scroll_ + second_main_scroll_; | 346 gfx::Vector2dF delta = impl_scroll_ + impl_scroll_ + second_main_scroll_; |
| 347 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), | 347 EXPECT_VECTOR_EQ(root_scroll_layer->BaseScrollOffset(), |
| 348 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); | 348 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); |
| 349 } else if (impl->active_tree()->source_frame_number() == 2 && | 349 } else if (impl->active_tree()->source_frame_number() == 2 && |
| 350 impl->SourceAnimationFrameNumber() == 4) { | 350 impl->SourceAnimationFrameNumber() == 4) { |
| 351 // Final draw after the second aborted commit. | 351 // Final draw after the second aborted commit. |
| 352 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 352 EXPECT_VECTOR_EQ(root_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 353 gfx::Vector2dF delta = | 353 gfx::Vector2dF delta = |
| 354 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; | 354 impl_scroll_ + impl_scroll_ + impl_scroll_ + second_main_scroll_; |
| 355 EXPECT_VECTOR_EQ(root_scroll_layer->scroll_offset(), | 355 EXPECT_VECTOR_EQ(root_scroll_layer->BaseScrollOffset(), |
| 356 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); | 356 gfx::ScrollOffsetWithDelta(initial_scroll_, delta)); |
| 357 EndTest(); | 357 EndTest(); |
| 358 } else { | 358 } else { |
| 359 // Commit for source frame 3 is aborted. | 359 // Commit for source frame 3 is aborted. |
| 360 NOTREACHED(); | 360 NOTREACHED(); |
| 361 } | 361 } |
| 362 } | 362 } |
| 363 | 363 |
| 364 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 364 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
| 365 float scale, | 365 float scale, |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 417 void BeginTest() override { PostSetNeedsCommitToMainThread(); } | 417 void BeginTest() override { PostSetNeedsCommitToMainThread(); } |
| 418 | 418 |
| 419 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 419 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
| 420 LayerImpl* root = impl->active_tree()->root_layer(); | 420 LayerImpl* root = impl->active_tree()->root_layer(); |
| 421 LayerImpl* scroll_layer = root->children()[0]; | 421 LayerImpl* scroll_layer = root->children()[0]; |
| 422 | 422 |
| 423 // Check that a fractional scroll delta is correctly accumulated over | 423 // Check that a fractional scroll delta is correctly accumulated over |
| 424 // multiple commits. | 424 // multiple commits. |
| 425 switch (impl->active_tree()->source_frame_number()) { | 425 switch (impl->active_tree()->source_frame_number()) { |
| 426 case 0: | 426 case 0: |
| 427 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), gfx::Vector2d(0, 0)); | 427 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), gfx::Vector2d(0, 0)); |
| 428 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d(0, 0)); | 428 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d(0, 0)); |
| 429 PostSetNeedsCommitToMainThread(); | 429 PostSetNeedsCommitToMainThread(); |
| 430 break; | 430 break; |
| 431 case 1: | 431 case 1: |
| 432 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), | 432 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), |
| 433 gfx::ToFlooredVector2d(scroll_amount_)); | 433 gfx::ToFlooredVector2d(scroll_amount_)); |
| 434 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), | 434 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), |
| 435 gfx::Vector2dF(fmod(scroll_amount_.x(), 1.0f), 0.0f)); | 435 gfx::Vector2dF(fmod(scroll_amount_.x(), 1.0f), 0.0f)); |
| 436 PostSetNeedsCommitToMainThread(); | 436 PostSetNeedsCommitToMainThread(); |
| 437 break; | 437 break; |
| 438 case 2: | 438 case 2: |
| 439 EXPECT_VECTOR_EQ( | 439 EXPECT_VECTOR_EQ( |
| 440 scroll_layer->scroll_offset(), | 440 scroll_layer->BaseScrollOffset(), |
| 441 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_)); | 441 gfx::ToFlooredVector2d(scroll_amount_ + scroll_amount_)); |
| 442 EXPECT_VECTOR_EQ( | 442 EXPECT_VECTOR_EQ( |
| 443 scroll_layer->ScrollDelta(), | 443 scroll_layer->ScrollDelta(), |
| 444 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f)); | 444 gfx::Vector2dF(fmod(2.0f * scroll_amount_.x(), 1.0f), 0.0f)); |
| 445 EndTest(); | 445 EndTest(); |
| 446 break; | 446 break; |
| 447 } | 447 } |
| 448 scroll_layer->ScrollBy(scroll_amount_); | 448 scroll_layer->ScrollBy(scroll_amount_); |
| 449 } | 449 } |
| 450 | 450 |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 InputHandler::ScrollStatus status = impl->ScrollBegin( | 591 InputHandler::ScrollStatus status = impl->ScrollBegin( |
| 592 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() - | 592 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() - |
| 593 gfx::Vector2dF(0.5f, 0.5f)), | 593 gfx::Vector2dF(0.5f, 0.5f)), |
| 594 InputHandler::Gesture); | 594 InputHandler::Gesture); |
| 595 EXPECT_EQ(InputHandler::ScrollStarted, status); | 595 EXPECT_EQ(InputHandler::ScrollStarted, status); |
| 596 impl->ScrollBy(gfx::Point(), scroll_amount_); | 596 impl->ScrollBy(gfx::Point(), scroll_amount_); |
| 597 impl->ScrollEnd(); | 597 impl->ScrollEnd(); |
| 598 | 598 |
| 599 // Check the scroll is applied as a delta. | 599 // Check the scroll is applied as a delta. |
| 600 EXPECT_VECTOR_EQ(initial_offset_, | 600 EXPECT_VECTOR_EQ(initial_offset_, |
| 601 expected_scroll_layer_impl->scroll_offset()); | 601 expected_scroll_layer_impl->BaseScrollOffset()); |
| 602 EXPECT_VECTOR_EQ(scroll_amount_, | 602 EXPECT_VECTOR_EQ(scroll_amount_, |
| 603 expected_scroll_layer_impl->ScrollDelta()); | 603 expected_scroll_layer_impl->ScrollDelta()); |
| 604 break; | 604 break; |
| 605 } | 605 } |
| 606 case 1: { | 606 case 1: { |
| 607 // Wheel scroll on impl thread. | 607 // Wheel scroll on impl thread. |
| 608 InputHandler::ScrollStatus status = impl->ScrollBegin( | 608 InputHandler::ScrollStatus status = impl->ScrollBegin( |
| 609 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() + | 609 gfx::ToCeiledPoint(expected_scroll_layer_impl->position() + |
| 610 gfx::Vector2dF(0.5f, 0.5f)), | 610 gfx::Vector2dF(0.5f, 0.5f)), |
| 611 InputHandler::Wheel); | 611 InputHandler::Wheel); |
| 612 EXPECT_EQ(InputHandler::ScrollStarted, status); | 612 EXPECT_EQ(InputHandler::ScrollStarted, status); |
| 613 impl->ScrollBy(gfx::Point(), scroll_amount_); | 613 impl->ScrollBy(gfx::Point(), scroll_amount_); |
| 614 impl->ScrollEnd(); | 614 impl->ScrollEnd(); |
| 615 | 615 |
| 616 // Check the scroll is applied as a delta. | 616 // Check the scroll is applied as a delta. |
| 617 EXPECT_VECTOR_EQ(javascript_scroll_, | 617 EXPECT_VECTOR_EQ(javascript_scroll_, |
| 618 expected_scroll_layer_impl->scroll_offset()); | 618 expected_scroll_layer_impl->BaseScrollOffset()); |
| 619 EXPECT_VECTOR_EQ(scroll_amount_, | 619 EXPECT_VECTOR_EQ(scroll_amount_, |
| 620 expected_scroll_layer_impl->ScrollDelta()); | 620 expected_scroll_layer_impl->ScrollDelta()); |
| 621 break; | 621 break; |
| 622 } | 622 } |
| 623 case 2: | 623 case 2: |
| 624 | 624 |
| 625 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(javascript_scroll_, | 625 EXPECT_VECTOR_EQ( |
| 626 scroll_amount_), | 626 gfx::ScrollOffsetWithDelta(javascript_scroll_, scroll_amount_), |
| 627 expected_scroll_layer_impl->scroll_offset()); | 627 expected_scroll_layer_impl->BaseScrollOffset()); |
| 628 EXPECT_VECTOR_EQ(gfx::Vector2d(), | 628 EXPECT_VECTOR_EQ(gfx::Vector2d(), |
| 629 expected_scroll_layer_impl->ScrollDelta()); | 629 expected_scroll_layer_impl->ScrollDelta()); |
| 630 | 630 |
| 631 EndTest(); | 631 EndTest(); |
| 632 break; | 632 break; |
| 633 } | 633 } |
| 634 } | 634 } |
| 635 | 635 |
| 636 void AfterTest() override { | 636 void AfterTest() override { |
| 637 if (scroll_child_layer_) { | 637 if (scroll_child_layer_) { |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 821 LayerImpl* pending_root = | 821 LayerImpl* pending_root = |
| 822 impl->active_tree()->FindPendingTreeLayerById(root->id()); | 822 impl->active_tree()->FindPendingTreeLayerById(root->id()); |
| 823 | 823 |
| 824 switch (impl->active_tree()->source_frame_number()) { | 824 switch (impl->active_tree()->source_frame_number()) { |
| 825 case 0: | 825 case 0: |
| 826 if (!impl->pending_tree()) { | 826 if (!impl->pending_tree()) { |
| 827 impl->BlockNotifyReadyToActivateForTesting(true); | 827 impl->BlockNotifyReadyToActivateForTesting(true); |
| 828 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 828 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 829 scroll_layer->ScrollBy(impl_thread_scroll1_); | 829 scroll_layer->ScrollBy(impl_thread_scroll1_); |
| 830 | 830 |
| 831 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 831 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), initial_scroll_); |
| 832 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll1_); | 832 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll1_); |
| 833 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 834 PostSetNeedsCommitToMainThread(); | 833 PostSetNeedsCommitToMainThread(); |
| 835 | 834 |
| 836 // CommitCompleteOnThread will trigger this function again | 835 // CommitCompleteOnThread will trigger this function again |
| 837 // and cause us to take the else clause. | 836 // and cause us to take the else clause. |
| 838 } else { | 837 } else { |
| 839 impl->BlockNotifyReadyToActivateForTesting(false); | 838 impl->BlockNotifyReadyToActivateForTesting(false); |
| 840 ASSERT_TRUE(pending_root); | 839 ASSERT_TRUE(pending_root); |
| 841 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); | 840 EXPECT_EQ(impl->pending_tree()->source_frame_number(), 1); |
| 842 | 841 |
| 843 scroll_layer->ScrollBy(impl_thread_scroll2_); | 842 scroll_layer->ScrollBy(impl_thread_scroll2_); |
| 844 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 843 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), initial_scroll_); |
| 845 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), | 844 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), |
| 846 impl_thread_scroll1_ + impl_thread_scroll2_); | 845 impl_thread_scroll1_ + impl_thread_scroll2_); |
| 847 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), | |
| 848 impl_thread_scroll1_); | |
| 849 | 846 |
| 850 LayerImpl* pending_scroll_layer = pending_root->children()[0]; | 847 LayerImpl* pending_scroll_layer = pending_root->children()[0]; |
| 851 EXPECT_VECTOR_EQ( | 848 EXPECT_VECTOR_EQ( |
| 852 pending_scroll_layer->scroll_offset(), | 849 pending_scroll_layer->BaseScrollOffset(), |
| 853 gfx::ScrollOffsetWithDelta( | 850 gfx::ScrollOffsetWithDelta( |
| 854 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); | 851 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); |
| 855 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), | 852 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), |
| 856 impl_thread_scroll2_); | 853 impl_thread_scroll2_); |
| 857 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 858 gfx::Vector2d()); | |
| 859 } | 854 } |
| 860 break; | 855 break; |
| 861 case 1: | 856 case 1: |
| 862 EXPECT_FALSE(impl->pending_tree()); | 857 EXPECT_FALSE(impl->pending_tree()); |
| 863 EXPECT_VECTOR_EQ( | 858 EXPECT_VECTOR_EQ( |
| 864 scroll_layer->scroll_offset(), | 859 scroll_layer->BaseScrollOffset(), |
| 865 gfx::ScrollOffsetWithDelta( | 860 gfx::ScrollOffsetWithDelta( |
| 866 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); | 861 initial_scroll_, main_thread_scroll_ + impl_thread_scroll1_)); |
| 867 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); | 862 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll2_); |
| 868 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 869 EndTest(); | 863 EndTest(); |
| 870 break; | 864 break; |
| 871 } | 865 } |
| 872 } | 866 } |
| 873 | 867 |
| 874 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, | 868 void ApplyViewportDeltas(const gfx::Vector2d& scroll_delta, |
| 875 float scale, | 869 float scale, |
| 876 float top_controls_delta) override { | 870 float top_controls_delta) override { |
| 877 num_scrolls_++; | 871 num_scrolls_++; |
| 878 } | 872 } |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 953 LayerImpl* active_root = impl->active_tree()->root_layer(); | 947 LayerImpl* active_root = impl->active_tree()->root_layer(); |
| 954 LayerImpl* active_scroll_layer = | 948 LayerImpl* active_scroll_layer = |
| 955 active_root ? active_root->children()[0] : NULL; | 949 active_root ? active_root->children()[0] : NULL; |
| 956 LayerImpl* pending_root = impl->pending_tree()->root_layer(); | 950 LayerImpl* pending_root = impl->pending_tree()->root_layer(); |
| 957 LayerImpl* pending_scroll_layer = pending_root->children()[0]; | 951 LayerImpl* pending_scroll_layer = pending_root->children()[0]; |
| 958 | 952 |
| 959 ASSERT_TRUE(pending_root); | 953 ASSERT_TRUE(pending_root); |
| 960 ASSERT_TRUE(pending_scroll_layer); | 954 ASSERT_TRUE(pending_scroll_layer); |
| 961 switch (impl->pending_tree()->source_frame_number()) { | 955 switch (impl->pending_tree()->source_frame_number()) { |
| 962 case 0: | 956 case 0: |
| 963 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), | 957 EXPECT_VECTOR_EQ(pending_scroll_layer->BaseScrollOffset(), |
| 964 initial_scroll_); | 958 initial_scroll_); |
| 965 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 959 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 966 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 967 gfx::Vector2d()); | |
| 968 EXPECT_FALSE(active_root); | 960 EXPECT_FALSE(active_root); |
| 969 break; | 961 break; |
| 970 case 1: | 962 case 1: |
| 971 // Even though the scroll happened during the commit, both layers | 963 // Even though the scroll happened during the commit, both layers |
| 972 // should have the appropriate scroll delta. | 964 // should have the appropriate scroll delta. |
| 973 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), | 965 EXPECT_VECTOR_EQ(pending_scroll_layer->BaseScrollOffset(), |
| 974 initial_scroll_); | 966 initial_scroll_); |
| 975 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), | 967 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), |
| 976 impl_thread_scroll_); | 968 impl_thread_scroll_); |
| 977 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 978 gfx::Vector2d()); | |
| 979 ASSERT_TRUE(active_root); | 969 ASSERT_TRUE(active_root); |
| 980 EXPECT_VECTOR_EQ(active_scroll_layer->scroll_offset(), initial_scroll_); | 970 EXPECT_VECTOR_EQ(active_scroll_layer->BaseScrollOffset(), |
| 971 initial_scroll_); |
| 981 EXPECT_VECTOR_EQ(active_scroll_layer->ScrollDelta(), | 972 EXPECT_VECTOR_EQ(active_scroll_layer->ScrollDelta(), |
| 982 impl_thread_scroll_); | 973 impl_thread_scroll_); |
| 983 EXPECT_VECTOR_EQ(active_scroll_layer->sent_scroll_delta(), | |
| 984 gfx::Vector2d()); | |
| 985 break; | 974 break; |
| 986 case 2: | 975 case 2: |
| 987 // On the next commit, this delta should have been sent and applied. | 976 // On the next commit, this delta should have been sent and applied. |
| 988 EXPECT_VECTOR_EQ(pending_scroll_layer->scroll_offset(), | 977 EXPECT_VECTOR_EQ( |
| 989 gfx::ScrollOffsetWithDelta(initial_scroll_, | 978 pending_scroll_layer->BaseScrollOffset(), |
| 990 impl_thread_scroll_)); | 979 gfx::ScrollOffsetWithDelta(initial_scroll_, impl_thread_scroll_)); |
| 991 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); | 980 EXPECT_VECTOR_EQ(pending_scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 992 EXPECT_VECTOR_EQ(pending_scroll_layer->sent_scroll_delta(), | |
| 993 gfx::Vector2d()); | |
| 994 break; | 981 break; |
| 995 } | 982 } |
| 996 } | 983 } |
| 997 | 984 |
| 998 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { | 985 void DrawLayersOnThread(LayerTreeHostImpl* impl) override { |
| 999 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); | 986 ImplSidePaintingScrollTest::DrawLayersOnThread(impl); |
| 1000 | 987 |
| 1001 LayerImpl* root = impl->active_tree()->root_layer(); | 988 LayerImpl* root = impl->active_tree()->root_layer(); |
| 1002 LayerImpl* scroll_layer = root->children()[0]; | 989 LayerImpl* scroll_layer = root->children()[0]; |
| 1003 | 990 |
| 1004 switch (impl->active_tree()->source_frame_number()) { | 991 switch (impl->active_tree()->source_frame_number()) { |
| 1005 case 0: | 992 case 0: |
| 1006 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 993 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), initial_scroll_); |
| 1007 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); | 994 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), gfx::Vector2d()); |
| 1008 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 1009 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 995 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
| 1010 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); | 996 EXPECT_EQ(1.f, impl->active_tree()->current_page_scale_factor()); |
| 1011 PostSetNeedsCommitToMainThread(); | 997 PostSetNeedsCommitToMainThread(); |
| 1012 break; | 998 break; |
| 1013 case 1: | 999 case 1: |
| 1014 EXPECT_VECTOR_EQ(scroll_layer->scroll_offset(), initial_scroll_); | 1000 EXPECT_VECTOR_EQ(scroll_layer->BaseScrollOffset(), initial_scroll_); |
| 1015 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); | 1001 EXPECT_VECTOR_EQ(scroll_layer->ScrollDelta(), impl_thread_scroll_); |
| 1016 EXPECT_VECTOR_EQ(scroll_layer->sent_scroll_delta(), gfx::Vector2d()); | |
| 1017 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); | 1002 EXPECT_EQ(impl_scale_, impl->active_tree()->page_scale_delta()); |
| 1018 EXPECT_EQ(impl_scale_, | 1003 EXPECT_EQ(impl_scale_, |
| 1019 impl->active_tree()->current_page_scale_factor()); | 1004 impl->active_tree()->current_page_scale_factor()); |
| 1020 PostSetNeedsCommitToMainThread(); | 1005 PostSetNeedsCommitToMainThread(); |
| 1021 break; | 1006 break; |
| 1022 case 2: | 1007 case 2: |
| 1023 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); | 1008 EXPECT_EQ(1.f, impl->active_tree()->page_scale_delta()); |
| 1024 EXPECT_EQ(impl_scale_, | 1009 EXPECT_EQ(impl_scale_, |
| 1025 impl->active_tree()->current_page_scale_factor()); | 1010 impl->active_tree()->current_page_scale_factor()); |
| 1026 EndTest(); | 1011 EndTest(); |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1246 RunTest(true, false, true); | 1231 RunTest(true, false, true); |
| 1247 } | 1232 } |
| 1248 | 1233 |
| 1249 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { | 1234 TEST_F(LayerTreeHostScrollTestLayerStructureChange, ScrollDestroyWholeTree) { |
| 1250 scroll_destroy_whole_tree_ = true; | 1235 scroll_destroy_whole_tree_ = true; |
| 1251 RunTest(true, false, true); | 1236 RunTest(true, false, true); |
| 1252 } | 1237 } |
| 1253 | 1238 |
| 1254 } // namespace | 1239 } // namespace |
| 1255 } // namespace cc | 1240 } // namespace cc |
| OLD | NEW |