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

Side by Side Diff: cc/layer_tree_host_impl_unittest.cc

Issue 12093015: Move page scale ownership to LayerTreeImpl. (Closed) Base URL: http://git.chromium.org/chromium/src.git@coordchange3
Patch Set: Created 7 years, 10 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 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/layer_tree_host_impl.h" 5 #include "cc/layer_tree_host_impl.h"
6 6
7 #include <cmath> 7 #include <cmath>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 554 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 setupScrollAndContentsLayers(gfx::Size(100, 100)); 565 setupScrollAndContentsLayers(gfx::Size(100, 100));
566 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 566 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50));
567 initializeRendererAndDrawFrame(); 567 initializeRendererAndDrawFrame();
568 568
569 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); 569 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer();
570 DCHECK(scrollLayer); 570 DCHECK(scrollLayer);
571 571
572 const float minPageScale = 1, maxPageScale = 4; 572 const float minPageScale = 1, maxPageScale = 4;
573 const gfx::Transform identityScaleTransform; 573 const gfx::Transform identityScaleTransform;
574 574
575 // The impl-based pinch zoom should adjust the max scroll position.
576 {
577 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
578 m_hostImpl->activeTree()->SetPageScaleDelta(1);
579 scrollLayer->setImplTransform(identityScaleTransform);
580 scrollLayer->setScrollDelta(gfx::Vector2d());
581
582 float pageScaleDelta = 2;
583 m_hostImpl->pinchGestureBegin();
584 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50));
585 m_hostImpl->pinchGestureEnd();
586 EXPECT_TRUE(m_didRequestRedraw);
587 EXPECT_TRUE(m_didRequestCommit);
588
589 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
590 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta);
591
592 EXPECT_EQ(gfx::Vector2d(75, 75), m_hostImpl->rootLayer()->maxScrollOffse t());
593 }
594
575 // Scrolling after a pinch gesture should always be in local space. The scr oll deltas do not 595 // Scrolling after a pinch gesture should always be in local space. The scr oll deltas do not
576 // have the page scale factor applied. 596 // have the page scale factor applied.
577 { 597 {
578 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 598 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
599 m_hostImpl->activeTree()->SetPageScaleDelta(1);
579 scrollLayer->setImplTransform(identityScaleTransform); 600 scrollLayer->setImplTransform(identityScaleTransform);
580 scrollLayer->setScrollDelta(gfx::Vector2d()); 601 scrollLayer->setScrollDelta(gfx::Vector2d());
581 602
582 float pageScaleDelta = 2; 603 float pageScaleDelta = 2;
583 m_hostImpl->pinchGestureBegin(); 604 m_hostImpl->pinchGestureBegin();
584 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(0, 0)); 605 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(0, 0));
585 m_hostImpl->pinchGestureEnd(); 606 m_hostImpl->pinchGestureEnd();
586 607
587 gfx::Vector2d scrollDelta(0, 10); 608 gfx::Vector2d scrollDelta(0, 10);
588 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient:: Wheel), InputHandlerClient::ScrollStarted); 609 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient:: Wheel), InputHandlerClient::ScrollStarted);
589 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 610 m_hostImpl->scrollBy(gfx::Point(), scrollDelta);
590 m_hostImpl->scrollEnd(); 611 m_hostImpl->scrollEnd();
591 612
592 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 613 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
593 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD elta); 614 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), scrollD elta);
594 } 615 }
595 } 616 }
596 617
597 TEST_P(LayerTreeHostImplTest, pinchGesture) 618 TEST_P(LayerTreeHostImplTest, pinchGesture)
598 { 619 {
620 // This test is specific to the page-scale based pinch zoom.
621 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
622 return;
623
599 setupScrollAndContentsLayers(gfx::Size(100, 100)); 624 setupScrollAndContentsLayers(gfx::Size(100, 100));
600 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 625 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50));
601 initializeRendererAndDrawFrame(); 626 initializeRendererAndDrawFrame();
602 627
603 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer(); 628 LayerImpl* scrollLayer = m_hostImpl->rootScrollLayer();
604 DCHECK(scrollLayer); 629 DCHECK(scrollLayer);
605 630
606 const float minPageScale = m_hostImpl->settings().pageScalePinchZoomEnabled ? 1 : 0.5; 631 const float minPageScale = m_hostImpl->settings().pageScalePinchZoomEnabled ? 1 : 0.5;
607 const float maxPageScale = 4; 632 const float maxPageScale = 4;
608 const gfx::Transform identityScaleTransform; 633 const gfx::Transform identityScaleTransform;
609 634
610 // Basic pinch zoom in gesture 635 // Basic pinch zoom in gesture
611 { 636 {
612 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 637 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
613 scrollLayer->setImplTransform(identityScaleTransform); 638 scrollLayer->setImplTransform(identityScaleTransform);
614 scrollLayer->setScrollDelta(gfx::Vector2d()); 639 scrollLayer->setScrollDelta(gfx::Vector2d());
615 640
616 float pageScaleDelta = 2; 641 float pageScaleDelta = 2;
617 m_hostImpl->pinchGestureBegin(); 642 m_hostImpl->pinchGestureBegin();
618 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50)); 643 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50));
619 m_hostImpl->pinchGestureEnd(); 644 m_hostImpl->pinchGestureEnd();
620 EXPECT_TRUE(m_didRequestRedraw); 645 EXPECT_TRUE(m_didRequestRedraw);
621 EXPECT_TRUE(m_didRequestCommit); 646 EXPECT_TRUE(m_didRequestCommit);
622 647
623 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 648 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
624 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); 649 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta);
625 } 650 }
626 651
627 // Zoom-in clamping 652 // Zoom-in clamping
628 { 653 {
629 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 654 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
630 scrollLayer->setImplTransform(identityScaleTransform); 655 scrollLayer->setImplTransform(identityScaleTransform);
631 scrollLayer->setScrollDelta(gfx::Vector2d()); 656 scrollLayer->setScrollDelta(gfx::Vector2d());
632 float pageScaleDelta = 10; 657 float pageScaleDelta = 10;
633 658
634 m_hostImpl->pinchGestureBegin(); 659 m_hostImpl->pinchGestureBegin();
635 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50)); 660 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(50, 50));
636 m_hostImpl->pinchGestureEnd(); 661 m_hostImpl->pinchGestureEnd();
637 662
638 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 663 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
639 EXPECT_EQ(scrollInfo->pageScaleDelta, maxPageScale); 664 EXPECT_EQ(scrollInfo->pageScaleDelta, maxPageScale);
640 } 665 }
641 666
642 // Zoom-out clamping 667 // Zoom-out clamping
643 { 668 {
644 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 669 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
645 scrollLayer->setImplTransform(identityScaleTransform); 670 scrollLayer->setImplTransform(identityScaleTransform);
646 scrollLayer->setScrollDelta(gfx::Vector2d()); 671 scrollLayer->setScrollDelta(gfx::Vector2d());
647 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50)); 672 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50));
648 673
649 float pageScaleDelta = 0.1f; 674 float pageScaleDelta = 0.1f;
650 m_hostImpl->pinchGestureBegin(); 675 m_hostImpl->pinchGestureBegin();
651 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(0, 0)); 676 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(0, 0));
652 m_hostImpl->pinchGestureEnd(); 677 m_hostImpl->pinchGestureEnd();
653 678
654 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 679 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
655 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); 680 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale);
656 681
657 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { 682 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) {
658 // Pushed to (0,0) via clamping against contents layer size. 683 // Pushed to (0,0) via clamping against contents layer size.
659 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-50, -5 0)); 684 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-50, -5 0));
660 } else { 685 } else {
661 EXPECT_TRUE(scrollInfo->scrolls.empty()); 686 EXPECT_TRUE(scrollInfo->scrolls.empty());
662 } 687 }
663 } 688 }
664 689
665 // Two-finger panning should not happen based on pinch events only 690 // Two-finger panning should not happen based on pinch events only
666 { 691 {
667 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 692 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
668 scrollLayer->setImplTransform(identityScaleTransform); 693 scrollLayer->setImplTransform(identityScaleTransform);
669 scrollLayer->setScrollDelta(gfx::Vector2d()); 694 scrollLayer->setScrollDelta(gfx::Vector2d());
670 scrollLayer->setScrollOffset(gfx::Vector2d(20, 20)); 695 scrollLayer->setScrollOffset(gfx::Vector2d(20, 20));
671 696
672 float pageScaleDelta = 1; 697 float pageScaleDelta = 1;
673 m_hostImpl->pinchGestureBegin(); 698 m_hostImpl->pinchGestureBegin();
674 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(10, 10)); 699 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(10, 10));
675 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(20, 20)); 700 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(20, 20));
676 m_hostImpl->pinchGestureEnd(); 701 m_hostImpl->pinchGestureEnd();
677 702
678 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 703 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
679 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta); 704 EXPECT_EQ(scrollInfo->pageScaleDelta, pageScaleDelta);
680 EXPECT_TRUE(scrollInfo->scrolls.empty()); 705 EXPECT_TRUE(scrollInfo->scrolls.empty());
681 } 706 }
682 707
683 // Two-finger panning should work with interleaved scroll events 708 // Two-finger panning should work with interleaved scroll events
684 { 709 {
685 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 710 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
686 scrollLayer->setImplTransform(identityScaleTransform); 711 scrollLayer->setImplTransform(identityScaleTransform);
687 scrollLayer->setScrollDelta(gfx::Vector2d()); 712 scrollLayer->setScrollDelta(gfx::Vector2d());
688 scrollLayer->setScrollOffset(gfx::Vector2d(20, 20)); 713 scrollLayer->setScrollOffset(gfx::Vector2d(20, 20));
689 714
690 float pageScaleDelta = 1; 715 float pageScaleDelta = 1;
691 m_hostImpl->scrollBegin(gfx::Point(10, 10), InputHandlerClient::Wheel); 716 m_hostImpl->scrollBegin(gfx::Point(10, 10), InputHandlerClient::Wheel);
692 m_hostImpl->pinchGestureBegin(); 717 m_hostImpl->pinchGestureBegin();
693 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(10, 10)); 718 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(10, 10));
694 m_hostImpl->scrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10)); 719 m_hostImpl->scrollBy(gfx::Point(10, 10), gfx::Vector2d(-10, -10));
695 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(20, 20)); 720 m_hostImpl->pinchGestureUpdate(pageScaleDelta, gfx::Point(20, 20));
(...skipping 18 matching lines...) Expand all
714 const float minPageScale = 0.5; 739 const float minPageScale = 0.5;
715 const float maxPageScale = 4; 740 const float maxPageScale = 4;
716 const base::TimeTicks startTime = base::TimeTicks() + base::TimeDelta::FromS econds(1); 741 const base::TimeTicks startTime = base::TimeTicks() + base::TimeDelta::FromS econds(1);
717 const base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100); 742 const base::TimeDelta duration = base::TimeDelta::FromMilliseconds(100);
718 const base::TimeTicks halfwayThroughAnimation = startTime + duration / 2; 743 const base::TimeTicks halfwayThroughAnimation = startTime + duration / 2;
719 const base::TimeTicks endTime = startTime + duration; 744 const base::TimeTicks endTime = startTime + duration;
720 const gfx::Transform identityScaleTransform; 745 const gfx::Transform identityScaleTransform;
721 746
722 // Non-anchor zoom-in 747 // Non-anchor zoom-in
723 { 748 {
724 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 749 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
725 scrollLayer->setImplTransform(identityScaleTransform); 750 scrollLayer->setImplTransform(identityScaleTransform);
726 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50)); 751 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50));
727 752
728 m_hostImpl->startPageScaleAnimation(gfx::Vector2d(0, 0), false, 2, start Time, duration); 753 m_hostImpl->startPageScaleAnimation(gfx::Vector2d(0, 0), false, 2, start Time, duration);
729 m_hostImpl->animate(halfwayThroughAnimation, base::Time()); 754 m_hostImpl->animate(halfwayThroughAnimation, base::Time());
730 EXPECT_TRUE(m_didRequestRedraw); 755 EXPECT_TRUE(m_didRequestRedraw);
731 m_hostImpl->animate(endTime, base::Time()); 756 m_hostImpl->animate(endTime, base::Time());
732 EXPECT_TRUE(m_didRequestCommit); 757 EXPECT_TRUE(m_didRequestCommit);
733 758
734 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 759 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
735 EXPECT_EQ(scrollInfo->pageScaleDelta, 2); 760 EXPECT_EQ(scrollInfo->pageScaleDelta, 2);
736 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-50, -50)); 761 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-50, -50));
737 } 762 }
738 763
739 // Anchor zoom-out 764 // Anchor zoom-out
740 { 765 {
741 m_hostImpl->setPageScaleFactorAndLimits(1, minPageScale, maxPageScale); 766 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, minPageScale, m axPageScale);
742 scrollLayer->setImplTransform(identityScaleTransform); 767 scrollLayer->setImplTransform(identityScaleTransform);
743 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50)); 768 scrollLayer->setScrollOffset(gfx::Vector2d(50, 50));
744 769
745 m_hostImpl->startPageScaleAnimation(gfx::Vector2d(25, 25), true, minPage Scale, startTime, duration); 770 m_hostImpl->startPageScaleAnimation(gfx::Vector2d(25, 25), true, minPage Scale, startTime, duration);
746 m_hostImpl->animate(endTime, base::Time()); 771 m_hostImpl->animate(endTime, base::Time());
747 EXPECT_TRUE(m_didRequestRedraw); 772 EXPECT_TRUE(m_didRequestRedraw);
748 EXPECT_TRUE(m_didRequestCommit); 773 EXPECT_TRUE(m_didRequestCommit);
749 774
750 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as(); 775 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDelt as();
751 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale); 776 EXPECT_EQ(scrollInfo->pageScaleDelta, minPageScale);
752 // Pushed to (0,0) via clamping against contents layer size. 777 // Pushed to (0,0) via clamping against contents layer size.
753 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-50, -50)); 778 expectContains(*scrollInfo, scrollLayer->id(), gfx::Vector2d(-50, -50));
754 } 779 }
755 } 780 }
756 781
757 TEST_P(LayerTreeHostImplTest, compositorFrameMetadata) 782 TEST_P(LayerTreeHostImplTest, compositorFrameMetadata)
758 { 783 {
784 // This test is specific to the page-scale based pinch zoom.
785 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
786 return;
787
759 setupScrollAndContentsLayers(gfx::Size(100, 100)); 788 setupScrollAndContentsLayers(gfx::Size(100, 100));
760 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50)); 789 m_hostImpl->setViewportSize(gfx::Size(50, 50), gfx::Size(50, 50));
761 m_hostImpl->setPageScaleFactorAndLimits(1.0f, 0.5f, 4.0f); 790 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1.0f, 0.5f, 4.0f);
762 initializeRendererAndDrawFrame(); 791 initializeRendererAndDrawFrame();
763 792
764 { 793 {
765 CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetada ta(); 794 CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetada ta();
766 EXPECT_EQ(gfx::Vector2dF(0.0f, 0.0f), metadata.root_scroll_offset); 795 EXPECT_EQ(gfx::Vector2dF(0.0f, 0.0f), metadata.root_scroll_offset);
767 EXPECT_EQ(1.0f, metadata.page_scale_factor); 796 EXPECT_EQ(1.0f, metadata.page_scale_factor);
768 EXPECT_EQ(gfx::SizeF(50.0f, 50.0f), metadata.viewport_size); 797 EXPECT_EQ(gfx::SizeF(50.0f, 50.0f), metadata.viewport_size);
769 EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size); 798 EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size);
770 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 799 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
771 EXPECT_EQ(4.0f, metadata.max_page_scale_factor); 800 EXPECT_EQ(4.0f, metadata.max_page_scale_factor);
(...skipping 23 matching lines...) Expand all
795 EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset); 824 EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
796 EXPECT_EQ(2, metadata.page_scale_factor); 825 EXPECT_EQ(2, metadata.page_scale_factor);
797 EXPECT_EQ(gfx::SizeF(25.0f, 25.0f), metadata.viewport_size); 826 EXPECT_EQ(gfx::SizeF(25.0f, 25.0f), metadata.viewport_size);
798 EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size); 827 EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size);
799 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 828 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
800 EXPECT_EQ(4.0f, metadata.max_page_scale_factor); 829 EXPECT_EQ(4.0f, metadata.max_page_scale_factor);
801 } 830 }
802 831
803 // Likewise if set from the main thread. 832 // Likewise if set from the main thread.
804 m_hostImpl->processScrollDeltas(); 833 m_hostImpl->processScrollDeltas();
805 m_hostImpl->setPageScaleFactorAndLimits(4.0f, 0.5f, 4.0f); 834 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(4.0f, 0.5f, 4.0f);
835 m_hostImpl->activeTree()->SetPageScaleDelta(1.0f);
806 { 836 {
807 CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetada ta(); 837 CompositorFrameMetadata metadata = m_hostImpl->makeCompositorFrameMetada ta();
808 EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset); 838 EXPECT_EQ(gfx::Vector2dF(0.0f, 10.0f), metadata.root_scroll_offset);
809 EXPECT_EQ(4.0f, metadata.page_scale_factor); 839 EXPECT_EQ(4.0f, metadata.page_scale_factor);
810 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size); 840 EXPECT_EQ(gfx::SizeF(12.5f, 12.5f), metadata.viewport_size);
811 EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size); 841 EXPECT_EQ(gfx::SizeF(100.0f, 100.0f), metadata.root_layer_size);
812 EXPECT_EQ(0.5f, metadata.min_page_scale_factor); 842 EXPECT_EQ(0.5f, metadata.min_page_scale_factor);
813 EXPECT_EQ(4.0f, metadata.max_page_scale_factor); 843 EXPECT_EQ(4.0f, metadata.max_page_scale_factor);
814 } 844 }
815 } 845 }
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 m_hostImpl->activeTree()->SetRootLayer(scrollLayer.Pass()); 1183 m_hostImpl->activeTree()->SetRootLayer(scrollLayer.Pass());
1154 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1184 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1155 initializeRendererAndDrawFrame(); 1185 initializeRendererAndDrawFrame();
1156 1186
1157 // Scrolling fails because the content layer is asking to be scrolled on the main thread. 1187 // Scrolling fails because the content layer is asking to be scrolled on the main thread.
1158 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollOnMainThread); 1188 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollOnMainThread);
1159 } 1189 }
1160 1190
1161 TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnMainThread) 1191 TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnMainThread)
1162 { 1192 {
1193 // This test is specific to the page-scale based pinch zoom.
1194 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
1195 return;
1196
1163 gfx::Size surfaceSize(10, 10); 1197 gfx::Size surfaceSize(10, 10);
1164 float pageScale = 2; 1198 float pageScale = 2;
1165 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); 1199 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize);
1166 m_hostImpl->activeTree()->SetRootLayer(root.Pass()); 1200 m_hostImpl->activeTree()->SetRootLayer(root.Pass());
1167 m_hostImpl->activeTree()->DidBecomeActive(); 1201 m_hostImpl->activeTree()->DidBecomeActive();
1168 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1202 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1169 initializeRendererAndDrawFrame(); 1203 initializeRendererAndDrawFrame();
1170 1204
1171 gfx::Vector2d scrollDelta(0, 10); 1205 gfx::Vector2d scrollDelta(0, 10);
1172 gfx::Vector2d expectedScrollDelta(scrollDelta); 1206 gfx::Vector2d expectedScrollDelta(scrollDelta);
1173 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); 1207 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset());
1174 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted); 1208 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted);
1175 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 1209 m_hostImpl->scrollBy(gfx::Point(), scrollDelta);
1176 m_hostImpl->scrollEnd(); 1210 m_hostImpl->scrollEnd();
1177 1211
1178 // Set new page scale from main thread. 1212 // Set new page scale from main thread.
1179 m_hostImpl->setPageScaleFactorAndLimits(pageScale, pageScale, pageScale); 1213 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(pageScale, pageScale, pageScale);
1180 1214
1181 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { 1215 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) {
1182 // The scale should apply to the scroll delta. 1216 // The scale should apply to the scroll delta.
1183 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected ScrollDelta, pageScale)); 1217 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected ScrollDelta, pageScale));
1184 } 1218 }
1185 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 1219 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
1186 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta); 1220 expectContains(*scrollInfo.get(), m_hostImpl->rootLayer()->id(), expectedScr ollDelta);
1187 1221
1188 // The scroll range should also have been updated. 1222 // The scroll range should also have been updated.
1189 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll); 1223 EXPECT_EQ(m_hostImpl->rootLayer()->maxScrollOffset(), expectedMaxScroll);
(...skipping 22 matching lines...) Expand all
1212 } 1246 }
1213 1247
1214 TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread) 1248 TEST_P(LayerTreeHostImplTest, scrollRootAndChangePageScaleOnImplThread)
1215 { 1249 {
1216 gfx::Size surfaceSize(10, 10); 1250 gfx::Size surfaceSize(10, 10);
1217 float pageScale = 2; 1251 float pageScale = 2;
1218 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize); 1252 scoped_ptr<LayerImpl> root = createScrollableLayer(1, surfaceSize);
1219 m_hostImpl->activeTree()->SetRootLayer(root.Pass()); 1253 m_hostImpl->activeTree()->SetRootLayer(root.Pass());
1220 m_hostImpl->activeTree()->DidBecomeActive(); 1254 m_hostImpl->activeTree()->DidBecomeActive();
1221 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1255 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1222 m_hostImpl->setPageScaleFactorAndLimits(1, 1, pageScale); 1256 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(1, 1, pageScale);
1223 initializeRendererAndDrawFrame(); 1257 initializeRendererAndDrawFrame();
1224 1258
1225 gfx::Vector2d scrollDelta(0, 10); 1259 gfx::Vector2d scrollDelta(0, 10);
1226 gfx::Vector2d expectedScrollDelta(scrollDelta); 1260 gfx::Vector2d expectedScrollDelta(scrollDelta);
1227 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset()); 1261 gfx::Vector2d expectedMaxScroll(m_hostImpl->rootLayer()->maxScrollOffset());
1228 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted); 1262 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted);
1229 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 1263 m_hostImpl->scrollBy(gfx::Point(), scrollDelta);
1230 m_hostImpl->scrollEnd(); 1264 m_hostImpl->scrollEnd();
1231 1265
1232 // Set new page scale on impl thread by pinching. 1266 // Set new page scale on impl thread by pinching.
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1288 EXPECT_EQ(root->drawTransform().matrix().getDouble(0, 0), newPageScale); 1322 EXPECT_EQ(root->drawTransform().matrix().getDouble(0, 0), newPageScale);
1289 EXPECT_EQ(root->drawTransform().matrix().getDouble(1, 1), newPageScale); 1323 EXPECT_EQ(root->drawTransform().matrix().getDouble(1, 1), newPageScale);
1290 EXPECT_EQ(child->drawTransform().matrix().getDouble(0, 0), newPageScale); 1324 EXPECT_EQ(child->drawTransform().matrix().getDouble(0, 0), newPageScale);
1291 EXPECT_EQ(child->drawTransform().matrix().getDouble(1, 1), newPageScale); 1325 EXPECT_EQ(child->drawTransform().matrix().getDouble(1, 1), newPageScale);
1292 EXPECT_EQ(grandChild->drawTransform().matrix().getDouble(0, 0), newPageScale ); 1326 EXPECT_EQ(grandChild->drawTransform().matrix().getDouble(0, 0), newPageScale );
1293 EXPECT_EQ(grandChild->drawTransform().matrix().getDouble(1, 1), newPageScale ); 1327 EXPECT_EQ(grandChild->drawTransform().matrix().getDouble(1, 1), newPageScale );
1294 } 1328 }
1295 1329
1296 TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread) 1330 TEST_P(LayerTreeHostImplTest, scrollChildAndChangePageScaleOnMainThread)
1297 { 1331 {
1332 // This test is specific to the page-scale based pinch zoom.
1333 if (!m_hostImpl->settings().pageScalePinchZoomEnabled)
1334 return;
1335
1298 gfx::Size surfaceSize(10, 10); 1336 gfx::Size surfaceSize(10, 10);
1299 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1); 1337 scoped_ptr<LayerImpl> root = LayerImpl::create(m_hostImpl->activeTree(), 1);
1300 root->setBounds(surfaceSize); 1338 root->setBounds(surfaceSize);
1301 root->setContentBounds(surfaceSize); 1339 root->setContentBounds(surfaceSize);
1302 // Also mark the root scrollable so it becomes the root scroll layer. 1340 // Also mark the root scrollable so it becomes the root scroll layer.
1303 root->setScrollable(true); 1341 root->setScrollable(true);
1304 int scrollLayerId = 2; 1342 int scrollLayerId = 2;
1305 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize)); 1343 root->addChild(createScrollableLayer(scrollLayerId, surfaceSize));
1306 m_hostImpl->activeTree()->SetRootLayer(root.Pass()); 1344 m_hostImpl->activeTree()->SetRootLayer(root.Pass());
1307 m_hostImpl->activeTree()->DidBecomeActive(); 1345 m_hostImpl->activeTree()->DidBecomeActive();
1308 m_hostImpl->setViewportSize(surfaceSize, surfaceSize); 1346 m_hostImpl->setViewportSize(surfaceSize, surfaceSize);
1309 initializeRendererAndDrawFrame(); 1347 initializeRendererAndDrawFrame();
1310 1348
1311 LayerImpl* child = m_hostImpl->rootLayer()->children()[0]; 1349 LayerImpl* child = m_hostImpl->rootLayer()->children()[0];
1312 1350
1313 gfx::Vector2d scrollDelta(0, 10); 1351 gfx::Vector2d scrollDelta(0, 10);
1314 gfx::Vector2d expectedScrollDelta(scrollDelta); 1352 gfx::Vector2d expectedScrollDelta(scrollDelta);
1315 gfx::Vector2d expectedMaxScroll(child->maxScrollOffset()); 1353 gfx::Vector2d expectedMaxScroll(child->maxScrollOffset());
1316 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted); 1354 EXPECT_EQ(m_hostImpl->scrollBegin(gfx::Point(5, 5), InputHandlerClient::Whee l), InputHandlerClient::ScrollStarted);
1317 m_hostImpl->scrollBy(gfx::Point(), scrollDelta); 1355 m_hostImpl->scrollBy(gfx::Point(), scrollDelta);
1318 m_hostImpl->scrollEnd(); 1356 m_hostImpl->scrollEnd();
1319 1357
1320 float pageScale = 2; 1358 float pageScale = 2;
1321 m_hostImpl->setPageScaleFactorAndLimits(pageScale, 1, pageScale); 1359 m_hostImpl->activeTree()->SetPageScaleFactorAndLimits(pageScale, 1, pageScal e);
1322 1360
1323 drawOneFrame(); 1361 drawOneFrame();
1324 1362
1325 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) { 1363 if (!m_hostImpl->settings().pageScalePinchZoomEnabled) {
1326 // The scale should apply to the scroll delta. 1364 // The scale should apply to the scroll delta.
1327 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected ScrollDelta, pageScale)); 1365 expectedScrollDelta = gfx::ToFlooredVector2d(gfx::ScaleVector2d(expected ScrollDelta, pageScale));
1328 } 1366 }
1329 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ; 1367 scoped_ptr<ScrollAndScaleSet> scrollInfo = m_hostImpl->processScrollDeltas() ;
1330 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta); 1368 expectContains(*scrollInfo.get(), scrollLayerId, expectedScrollDelta);
1331 1369
(...skipping 2839 matching lines...) Expand 10 before | Expand all | Expand 10 after
4171 m_hostImpl->didDrawAllLayers(frame); 4209 m_hostImpl->didDrawAllLayers(frame);
4172 } 4210 }
4173 } 4211 }
4174 4212
4175 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests, 4213 INSTANTIATE_TEST_CASE_P(LayerTreeHostImplTests,
4176 LayerTreeHostImplTest, 4214 LayerTreeHostImplTest,
4177 ::testing::Values(false, true)); 4215 ::testing::Values(false, true));
4178 4216
4179 } // namespace 4217 } // namespace
4180 } // namespace cc 4218 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698