OLD | NEW |
1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/layers/layer_impl.h" | 5 #include "cc/layers/layer_impl.h" |
6 | 6 |
7 #include "cc/layers/painted_scrollbar_layer_impl.h" | 7 #include "cc/layers/painted_scrollbar_layer_impl.h" |
8 #include "cc/layers/solid_color_scrollbar_layer_impl.h" | 8 #include "cc/layers/solid_color_scrollbar_layer_impl.h" |
9 #include "cc/output/filter_operation.h" | 9 #include "cc/output/filter_operation.h" |
10 #include "cc/output/filter_operations.h" | 10 #include "cc/output/filter_operations.h" |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
504 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); | 504 EXPECT_VECTOR_EQ(gfx::Vector2dF(50, 0), layer()->TotalScrollOffset()); |
505 | 505 |
506 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, | 506 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, |
507 layer()->ScrollDelta()), | 507 layer()->ScrollDelta()), |
508 layer()->TotalScrollOffset()); | 508 layer()->TotalScrollOffset()); |
509 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 509 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
510 } | 510 } |
511 | 511 |
512 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate { | 512 class ScrollDelegateIgnore : public LayerImpl::ScrollOffsetDelegate { |
513 public: | 513 public: |
514 void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override { | 514 void SetCurrentScrollOffset(const gfx::ScrollOffset& new_value) override { |
515 last_attempted_set_offset_ = new_value; | 515 last_attempted_set_offset_ = new_value; |
516 } | 516 } |
517 gfx::ScrollOffset last_attempted_set_offset() const { | 517 gfx::ScrollOffset last_attempted_set_offset() const { |
518 return last_attempted_set_offset_; | 518 return last_attempted_set_offset_; |
519 } | 519 } |
520 | 520 |
521 gfx::ScrollOffset GetTotalScrollOffset() override { | 521 gfx::ScrollOffset GetCurrentScrollOffset() override { |
522 return gfx::ScrollOffset(fixed_offset_); | 522 return gfx::ScrollOffset(fixed_offset_); |
523 } | 523 } |
524 bool IsExternalFlingActive() const override { return false; } | 524 bool IsExternalFlingActive() const override { return false; } |
525 void Update() const override { } | 525 void Update() const override { } |
526 | 526 |
527 void set_fixed_offset(const gfx::Vector2dF& fixed_offset) { | 527 void set_fixed_offset(const gfx::Vector2dF& fixed_offset) { |
528 fixed_offset_ = fixed_offset; | 528 fixed_offset_ = fixed_offset; |
529 } | 529 } |
530 | 530 |
531 private: | 531 private: |
(...skipping 29 matching lines...) Expand all Loading... |
561 | 561 |
562 gfx::Vector2dF scroll_delta(1, 1); | 562 gfx::Vector2dF scroll_delta(1, 1); |
563 layer()->ScrollBy(scroll_delta); | 563 layer()->ScrollBy(scroll_delta); |
564 | 564 |
565 EXPECT_VECTOR_EQ(fixed_offset + scroll_delta, layer()->TotalScrollOffset()); | 565 EXPECT_VECTOR_EQ(fixed_offset + scroll_delta, layer()->TotalScrollOffset()); |
566 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 566 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
567 } | 567 } |
568 | 568 |
569 class ScrollDelegateAccept : public LayerImpl::ScrollOffsetDelegate { | 569 class ScrollDelegateAccept : public LayerImpl::ScrollOffsetDelegate { |
570 public: | 570 public: |
571 void SetTotalScrollOffset(const gfx::ScrollOffset& new_value) override { | 571 void SetCurrentScrollOffset(const gfx::ScrollOffset& new_value) override { |
572 current_offset_ = new_value; | 572 current_offset_ = new_value; |
573 } | 573 } |
574 gfx::ScrollOffset GetTotalScrollOffset() override { return current_offset_; } | 574 gfx::ScrollOffset GetCurrentScrollOffset() override { |
| 575 return current_offset_; |
| 576 } |
575 bool IsExternalFlingActive() const override { return false; } | 577 bool IsExternalFlingActive() const override { return false; } |
576 void Update() const override { } | 578 void Update() const override { } |
577 | 579 |
578 private: | 580 private: |
579 gfx::ScrollOffset current_offset_; | 581 gfx::ScrollOffset current_offset_; |
580 }; | 582 }; |
581 | 583 |
582 TEST_F(LayerImplScrollTest, ScrollByWithAcceptingDelegate) { | 584 TEST_F(LayerImplScrollTest, ScrollByWithAcceptingDelegate) { |
583 gfx::ScrollOffset scroll_offset(10, 5); | 585 gfx::ScrollOffset scroll_offset(10, 5); |
584 layer()->SetScrollOffset(scroll_offset); | 586 layer()->SetScrollOffset(scroll_offset); |
(...skipping 24 matching lines...) Expand all Loading... |
609 | 611 |
610 EXPECT_VECTOR_EQ(gfx::Vector2dF(1, 80), layer()->TotalScrollOffset()); | 612 EXPECT_VECTOR_EQ(gfx::Vector2dF(1, 80), layer()->TotalScrollOffset()); |
611 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 613 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
612 } | 614 } |
613 | 615 |
614 TEST_F(LayerImplScrollTest, ApplySentScrollsNoDelegate) { | 616 TEST_F(LayerImplScrollTest, ApplySentScrollsNoDelegate) { |
615 gfx::ScrollOffset scroll_offset(10, 5); | 617 gfx::ScrollOffset scroll_offset(10, 5); |
616 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 618 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
617 gfx::Vector2d sent_scroll_delta(12, -3); | 619 gfx::Vector2d sent_scroll_delta(12, -3); |
618 | 620 |
619 layer()->SetScrollOffset(scroll_offset); | 621 layer()->PushScrollOffsetFromMainThread(scroll_offset); |
620 layer()->ScrollBy(scroll_delta); | 622 layer()->ScrollBy(sent_scroll_delta); |
621 layer()->SetSentScrollDelta(sent_scroll_delta); | 623 layer()->PullDeltaForMainThread(); |
| 624 layer()->SetCurrentScrollOffset(scroll_offset + |
| 625 gfx::ScrollOffset(scroll_delta)); |
622 | 626 |
623 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), | 627 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), |
624 layer()->TotalScrollOffset()); | 628 layer()->TotalScrollOffset()); |
625 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); | 629 EXPECT_VECTOR_EQ(scroll_delta, layer()->ScrollDelta()); |
626 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 630 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
627 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | |
628 | 631 |
629 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 632 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
630 | 633 |
631 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), | 634 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), |
632 layer()->TotalScrollOffset()); | 635 layer()->TotalScrollOffset()); |
633 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); | 636 EXPECT_VECTOR_EQ(scroll_delta - sent_scroll_delta, layer()->ScrollDelta()); |
634 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), | 637 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), |
635 layer()->scroll_offset()); | 638 layer()->scroll_offset()); |
636 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | |
637 } | 639 } |
638 | 640 |
639 TEST_F(LayerImplScrollTest, ApplySentScrollsWithIgnoringDelegate) { | 641 TEST_F(LayerImplScrollTest, ApplySentScrollsWithIgnoringDelegate) { |
640 gfx::ScrollOffset scroll_offset(10, 5); | 642 gfx::ScrollOffset scroll_offset(10, 5); |
641 gfx::Vector2d sent_scroll_delta(12, -3); | 643 gfx::Vector2d sent_scroll_delta(12, -3); |
642 gfx::Vector2dF fixed_offset(32, 12); | 644 gfx::Vector2dF fixed_offset(32, 12); |
643 | 645 |
644 layer()->SetScrollOffset(scroll_offset); | 646 layer()->PushScrollOffsetFromMainThread(scroll_offset); |
| 647 layer()->ScrollBy(sent_scroll_delta); |
| 648 layer()->PullDeltaForMainThread(); |
| 649 layer()->SetCurrentScrollOffset(scroll_offset); |
645 ScrollDelegateIgnore delegate; | 650 ScrollDelegateIgnore delegate; |
646 delegate.set_fixed_offset(fixed_offset); | 651 delegate.set_fixed_offset(fixed_offset); |
647 layer()->SetScrollOffsetDelegate(&delegate); | 652 layer()->SetScrollOffsetDelegate(&delegate); |
648 layer()->SetSentScrollDelta(sent_scroll_delta); | |
649 | 653 |
650 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); | 654 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); |
651 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 655 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
652 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | |
653 | 656 |
654 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 657 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
655 | 658 |
656 EXPECT_VECTOR_EQ(fixed_offset, delegate.last_attempted_set_offset()); | 659 EXPECT_VECTOR_EQ(fixed_offset, delegate.last_attempted_set_offset()); |
657 | 660 |
658 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); | 661 EXPECT_VECTOR_EQ(fixed_offset, layer()->TotalScrollOffset()); |
659 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), | 662 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), |
660 layer()->scroll_offset()); | 663 layer()->scroll_offset()); |
661 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | |
662 } | 664 } |
663 | 665 |
664 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { | 666 TEST_F(LayerImplScrollTest, ApplySentScrollsWithAcceptingDelegate) { |
665 gfx::ScrollOffset scroll_offset(10, 5); | 667 gfx::ScrollOffset scroll_offset(10, 5); |
666 gfx::Vector2d sent_scroll_delta(12, -3); | 668 gfx::Vector2d sent_scroll_delta(12, -3); |
667 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 669 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
668 | 670 |
669 layer()->SetScrollOffset(scroll_offset); | 671 layer()->PushScrollOffsetFromMainThread(scroll_offset); |
| 672 layer()->ScrollBy(sent_scroll_delta); |
| 673 layer()->PullDeltaForMainThread(); |
670 ScrollDelegateAccept delegate; | 674 ScrollDelegateAccept delegate; |
671 layer()->SetScrollOffsetDelegate(&delegate); | 675 layer()->SetScrollOffsetDelegate(&delegate); |
672 layer()->ScrollBy(scroll_delta); | 676 layer()->SetCurrentScrollOffset(scroll_offset + |
673 layer()->SetSentScrollDelta(sent_scroll_delta); | 677 gfx::ScrollOffset(scroll_delta)); |
674 | 678 |
675 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), | 679 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), |
676 layer()->TotalScrollOffset()); | 680 layer()->TotalScrollOffset()); |
677 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); | 681 EXPECT_VECTOR_EQ(scroll_offset, layer()->scroll_offset()); |
678 EXPECT_VECTOR_EQ(sent_scroll_delta, layer()->sent_scroll_delta()); | |
679 | 682 |
680 layer()->ApplySentScrollDeltasFromAbortedCommit(); | 683 layer()->ApplySentScrollDeltasFromAbortedCommit(); |
681 | 684 |
682 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), | 685 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, scroll_delta), |
683 layer()->TotalScrollOffset()); | 686 layer()->TotalScrollOffset()); |
684 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), | 687 EXPECT_VECTOR_EQ(gfx::ScrollOffsetWithDelta(scroll_offset, sent_scroll_delta), |
685 layer()->scroll_offset()); | 688 layer()->scroll_offset()); |
686 EXPECT_VECTOR_EQ(gfx::Vector2d(), layer()->sent_scroll_delta()); | |
687 } | 689 } |
688 | 690 |
689 TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) { | 691 TEST_F(LayerImplScrollTest, ScrollUserUnscrollableLayer) { |
690 gfx::ScrollOffset scroll_offset(10, 5); | 692 gfx::ScrollOffset scroll_offset(10, 5); |
691 gfx::Vector2dF scroll_delta(20.5f, 8.5f); | 693 gfx::Vector2dF scroll_delta(20.5f, 8.5f); |
692 | 694 |
693 layer()->set_user_scrollable_vertical(false); | 695 layer()->set_user_scrollable_vertical(false); |
694 layer()->SetScrollOffset(scroll_offset); | 696 layer()->SetScrollOffset(scroll_offset); |
695 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 697 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
696 | 698 |
697 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); | 699 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 8.5f), unscrolled); |
698 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); | 700 EXPECT_VECTOR_EQ(gfx::Vector2dF(30.5f, 5), layer()->TotalScrollOffset()); |
699 } | 701 } |
700 | 702 |
701 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsTotalScrollOffset) { | 703 TEST_F(LayerImplScrollTest, PushPropertiesToMirrorsTotalScrollOffset) { |
702 gfx::ScrollOffset scroll_offset(10, 5); | 704 gfx::ScrollOffset scroll_offset(10, 5); |
703 gfx::Vector2dF scroll_delta(12, 18); | 705 gfx::Vector2dF scroll_delta(12, 18); |
704 | 706 |
705 host_impl().CreatePendingTree(); | 707 host_impl().CreatePendingTree(); |
706 | 708 |
707 layer()->SetScrollOffset(scroll_offset); | 709 layer()->SetScrollOffset(scroll_offset); |
708 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); | 710 gfx::Vector2dF unscrolled = layer()->ScrollBy(scroll_delta); |
709 | 711 |
710 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled); | 712 EXPECT_VECTOR_EQ(gfx::Vector2dF(0, 0), unscrolled); |
711 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); | 713 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); |
712 | 714 |
713 layer()->SetSentScrollDelta(scroll_delta); | 715 layer()->PullDeltaForMainThread(); |
714 | 716 |
715 scoped_ptr<LayerImpl> pending_layer = | 717 scoped_ptr<LayerImpl> pending_layer = LayerImpl::Create( |
716 LayerImpl::Create(host_impl().sync_tree(), layer()->id()); | 718 host_impl().sync_tree(), layer()->id(), layer()->synced_scroll_offset()); |
717 pending_layer->SetScrollOffset(layer()->TotalScrollOffset()); | 719 pending_layer->SetScrollOffset(layer()->TotalScrollOffset()); |
718 | 720 |
719 pending_layer->PushPropertiesTo(layer()); | 721 pending_layer->PushPropertiesTo(layer()); |
720 | 722 |
721 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); | 723 EXPECT_VECTOR_EQ(gfx::Vector2dF(22, 23), layer()->TotalScrollOffset()); |
722 EXPECT_VECTOR_EQ(layer()->TotalScrollOffset(), | 724 EXPECT_VECTOR_EQ(layer()->TotalScrollOffset(), |
723 pending_layer->TotalScrollOffset()); | 725 pending_layer->TotalScrollOffset()); |
724 } | 726 } |
725 | 727 |
726 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) { | 728 TEST_F(LayerImplScrollTest, SetNewScrollbarParameters) { |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
869 | 871 |
870 ASSERT_TRUE(layer(IV_SCROLL, ACTIVE)->scrollable()); | 872 ASSERT_TRUE(layer(IV_SCROLL, ACTIVE)->scrollable()); |
871 | 873 |
872 ASSERT_TRUE(LayerHasScrollbar(OV_SCROLL, ACTIVE)); | 874 ASSERT_TRUE(LayerHasScrollbar(OV_SCROLL, ACTIVE)); |
873 ASSERT_TRUE(LayerHasScrollbar(IV_CLIP, ACTIVE)); | 875 ASSERT_TRUE(LayerHasScrollbar(IV_CLIP, ACTIVE)); |
874 ASSERT_TRUE(LayerHasScrollbar(IV_SCROLL, ACTIVE)); | 876 ASSERT_TRUE(LayerHasScrollbar(IV_SCROLL, ACTIVE)); |
875 } | 877 } |
876 | 878 |
877 } // namespace | 879 } // namespace |
878 } // namespace cc | 880 } // namespace cc |
OLD | NEW |