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

Side by Side Diff: Source/web/tests/WebFrameTest.cpp

Issue 23819019: Refactor fixed layout mode (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 2 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 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 settings->setAcceleratedCompositingForOverflowScrollEnabled(true); 166 settings->setAcceleratedCompositingForOverflowScrollEnabled(true);
167 settings->setAcceleratedCompositingForScrollableFramesEnabled(true); 167 settings->setAcceleratedCompositingForScrollableFramesEnabled(true);
168 settings->setCompositedScrollingForFramesEnabled(true); 168 settings->setCompositedScrollingForFramesEnabled(true);
169 settings->setFixedPositionCreatesStackingContext(true); 169 settings->setFixedPositionCreatesStackingContext(true);
170 } 170 }
171 171
172 void initializeTextSelectionWebView(const std::string& url, FrameTestHelpers ::WebViewHelper* webViewHelper) 172 void initializeTextSelectionWebView(const std::string& url, FrameTestHelpers ::WebViewHelper* webViewHelper)
173 { 173 {
174 webViewHelper->initializeAndLoad(url, true); 174 webViewHelper->initializeAndLoad(url, true);
175 webViewHelper->webView()->settings()->setDefaultFontSize(12); 175 webViewHelper->webView()->settings()->setDefaultFontSize(12);
176 webViewHelper->webView()->enableFixedLayoutMode(false);
177 webViewHelper->webView()->resize(WebSize(640, 480)); 176 webViewHelper->webView()->resize(WebSize(640, 480));
178 } 177 }
179 178
180 std::string m_baseURL; 179 std::string m_baseURL;
181 std::string m_chromeURL; 180 std::string m_chromeURL;
182 }; 181 };
183 182
184 class UseMockScrollbarSettings { 183 class UseMockScrollbarSettings {
185 public: 184 public:
186 UseMockScrollbarSettings() 185 UseMockScrollbarSettings()
(...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 579
581 class FixedLayoutTestWebViewClient : public WebViewClient { 580 class FixedLayoutTestWebViewClient : public WebViewClient {
582 public: 581 public:
583 virtual WebScreenInfo screenInfo() OVERRIDE { return m_screenInfo; } 582 virtual WebScreenInfo screenInfo() OVERRIDE { return m_screenInfo; }
584 583
585 WebScreenInfo m_screenInfo; 584 WebScreenInfo m_screenInfo;
586 }; 585 };
587 586
588 TEST_F(WebFrameTest, FrameViewNeedsLayoutOnFixedLayoutResize) 587 TEST_F(WebFrameTest, FrameViewNeedsLayoutOnFixedLayoutResize)
589 { 588 {
589 UseMockScrollbarSettings mockScrollbarSettings;
590 registerMockedHttpURLLoad("fixed_layout.html"); 590 registerMockedHttpURLLoad("fixed_layout.html");
591 591
592 FixedLayoutTestWebViewClient client; 592 FixedLayoutTestWebViewClient client;
593 int viewportWidth = 640; 593 int viewportWidth = 640;
594 int viewportHeight = 480; 594 int viewportHeight = 480;
595 595
596 // Make sure we initialize to minimum scale, even if the window size 596 // Make sure we initialize to minimum scale, even if the window size
597 // only becomes available after the load begins. 597 // only becomes available after the load begins.
598 FrameTestHelpers::WebViewHelper webViewHelper; 598 FrameTestHelpers::WebViewHelper webViewHelper;
599 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 599 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
600 webViewHelper.webView()->enableFixedLayoutMode(true);
601 webViewHelper.webView()->settings()->setViewportEnabled(true); 600 webViewHelper.webView()->settings()->setViewportEnabled(true);
602 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 601 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
603 webViewHelper.webView()->layout(); 602 webViewHelper.webView()->layout();
604 603
605 webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->setFixedLayoutSiz e(WebCore::IntSize(100, 100)); 604 webViewHelper.webViewImpl()->setFixedLayoutSize(WebCore::IntSize(100, 100));
606 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout()); 605 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout());
607 606
608 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount(); 607 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount();
609 webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->setFrameRect(WebC ore::IntRect(0, 0, 641, 481)); 608 webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->setFrameRect(WebC ore::IntRect(0, 0, 641, 481));
610 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount()); 609 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount());
611 610
612 webViewHelper.webViewImpl()->layout(); 611 webViewHelper.webViewImpl()->layout();
613 } 612 }
614 613
615 TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate) 614 TEST_F(WebFrameTest, ChangeInFixedLayoutTriggersTextAutosizingRecalculate)
616 { 615 {
616 UseMockScrollbarSettings mockScrollbarSettings;
617 registerMockedHttpURLLoad("fixed_layout.html"); 617 registerMockedHttpURLLoad("fixed_layout.html");
618 618
619 FixedLayoutTestWebViewClient client; 619 FixedLayoutTestWebViewClient client;
620 int viewportWidth = 640; 620 int viewportWidth = 640;
621 int viewportHeight = 480; 621 int viewportHeight = 480;
622 622
623 // Make sure we initialize to minimum scale, even if the window size 623 // Make sure we initialize to minimum scale, even if the window size
624 // only becomes available after the load begins. 624 // only becomes available after the load begins.
625 FrameTestHelpers::WebViewHelper webViewHelper; 625 FrameTestHelpers::WebViewHelper webViewHelper;
626 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 626 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
627 webViewHelper.webView()->enableFixedLayoutMode(true);
628 webViewHelper.webView()->settings()->setViewportEnabled(true); 627 webViewHelper.webView()->settings()->setViewportEnabled(true);
629 628
630 WebCore::Document* document = webViewHelper.webViewImpl()->page()->mainFrame ()->document(); 629 WebCore::Document* document = webViewHelper.webViewImpl()->page()->mainFrame ()->document();
631 document->settings()->setTextAutosizingEnabled(true); 630 document->settings()->setTextAutosizingEnabled(true);
632 EXPECT_TRUE(document->settings()->textAutosizingEnabled()); 631 EXPECT_TRUE(document->settings()->textAutosizingEnabled());
633 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight)); 632 webViewHelper.webViewImpl()->resize(WebSize(viewportWidth, viewportHeight));
634 webViewHelper.webViewImpl()->layout(); 633 webViewHelper.webViewImpl()->layout();
635 634
636 WebCore::RenderObject* renderer = document->renderer(); 635 WebCore::RenderObject* renderer = document->renderer();
637 bool multiplierSetAtLeastOnce = false; 636 bool multiplierSetAtLeastOnce = false;
638 while (renderer) { 637 while (renderer) {
639 if (renderer->style()) { 638 if (renderer->style()) {
640 renderer->style()->setTextAutosizingMultiplier(2); 639 renderer->style()->setTextAutosizingMultiplier(2);
641 EXPECT_EQ(2, renderer->style()->textAutosizingMultiplier()); 640 EXPECT_EQ(2, renderer->style()->textAutosizingMultiplier());
642 multiplierSetAtLeastOnce = true; 641 multiplierSetAtLeastOnce = true;
643 } 642 }
644 renderer = renderer->nextInPreOrder(); 643 renderer = renderer->nextInPreOrder();
645 } 644 }
646 EXPECT_TRUE(multiplierSetAtLeastOnce); 645 EXPECT_TRUE(multiplierSetAtLeastOnce);
647 646
648 WebCore::ViewportDescription description = document->viewportDescription(); 647 WebCore::ViewportDescription description = document->viewportDescription();
649 // Choose a width that's not going match the viewport width of the loaded do cument. 648 // Choose a width that's not going match the viewport width of the loaded do cument.
650 description.minWidth = WebCore::Length(100, WebCore::Fixed); 649 description.minWidth = WebCore::Length(100, WebCore::Fixed);
651 description.maxWidth = WebCore::Length(100, WebCore::Fixed); 650 description.maxWidth = WebCore::Length(100, WebCore::Fixed);
652 webViewHelper.webViewImpl()->updatePageDefinedPageScaleConstraints(descripti on); 651 webViewHelper.webViewImpl()->updatePageDefinedViewportConstraints(descriptio n);
653 652
654 bool multiplierCheckedAtLeastOnce = false; 653 bool multiplierCheckedAtLeastOnce = false;
655 renderer = document->renderer(); 654 renderer = document->renderer();
656 while (renderer) { 655 while (renderer) {
657 if (renderer->style()) { 656 if (renderer->style()) {
658 EXPECT_EQ(1, renderer->style()->textAutosizingMultiplier()); 657 EXPECT_EQ(1, renderer->style()->textAutosizingMultiplier());
659 multiplierCheckedAtLeastOnce = true; 658 multiplierCheckedAtLeastOnce = true;
660 } 659 }
661 renderer = renderer->nextInPreOrder(); 660 renderer = renderer->nextInPreOrder();
662 } 661 }
663 EXPECT_TRUE(multiplierCheckedAtLeastOnce); 662 EXPECT_TRUE(multiplierCheckedAtLeastOnce);
664 } 663 }
665 664
666 TEST_F(WebFrameTest, FixedLayoutSizeStopsResizeFromChangingLayoutSize) 665 TEST_F(WebFrameTest, FixedLayoutSizeStopsResizeFromChangingLayoutSize)
667 { 666 {
667 UseMockScrollbarSettings mockScrollbarSettings;
668 registerMockedHttpURLLoad("fixed_layout.html"); 668 registerMockedHttpURLLoad("fixed_layout.html");
669 669
670 int viewportWidth = 640; 670 int viewportWidth = 640;
671 int viewportHeight = 480; 671 int viewportHeight = 480;
672 672
673 int fixedLayoutWidth = viewportWidth / 2; 673 int fixedLayoutWidth = viewportWidth / 2;
674 int fixedLayoutHeight = viewportHeight / 2; 674 int fixedLayoutHeight = viewportHeight / 2;
675 675
676 FrameTestHelpers::WebViewHelper webViewHelper; 676 FrameTestHelpers::WebViewHelper webViewHelper;
677 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html"); 677 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html");
678 webViewHelper.webView()->enableFixedLayoutMode(true);
679 webViewHelper.webView()->settings()->setViewportEnabled(true); 678 webViewHelper.webView()->settings()->setViewportEnabled(true);
680 webViewHelper.webView()->setFixedLayoutSize(WebSize(fixedLayoutWidth, fixedL ayoutHeight)); 679 webViewHelper.webView()->setFixedLayoutSize(WebSize(fixedLayoutWidth, fixedL ayoutHeight));
681 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 680 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
682 webViewHelper.webView()->layout(); 681 webViewHelper.webView()->layout();
683 682
684 EXPECT_EQ(fixedLayoutWidth, webViewHelper.webView()->fixedLayoutSize().width ); 683 EXPECT_EQ(fixedLayoutWidth, webViewHelper.webViewImpl()->page()->mainFrame() ->view()->layoutSize().width());
685 EXPECT_EQ(fixedLayoutHeight, webViewHelper.webView()->fixedLayoutSize().heig ht); 684 EXPECT_EQ(fixedLayoutHeight, webViewHelper.webViewImpl()->page()->mainFrame( )->view()->layoutSize().height());
686 } 685 }
687 686
688 TEST_F(WebFrameTest, FixedLayoutSizePreventsResizeFromChangingPageScale) 687 TEST_F(WebFrameTest, FixedLayoutSizePreventsResizeFromChangingPageScale)
689 { 688 {
689 UseMockScrollbarSettings mockScrollbarSettings;
690 registerMockedHttpURLLoad("fixed_layout.html"); 690 registerMockedHttpURLLoad("fixed_layout.html");
691 691
692 int viewportWidth = 640; 692 int viewportWidth = 640;
693 int viewportHeight = 480; 693 int viewportHeight = 480;
694 694
695 int fixedLayoutWidth = viewportWidth / 2; 695 int fixedLayoutWidth = viewportWidth / 2;
696 int fixedLayoutHeight = viewportHeight / 2; 696 int fixedLayoutHeight = viewportHeight / 2;
697 697
698 FrameTestHelpers::WebViewHelper webViewHelper; 698 FrameTestHelpers::WebViewHelper webViewHelper;
699 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html"); 699 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html");
700 webViewHelper.webView()->enableFixedLayoutMode(true);
701 webViewHelper.webView()->settings()->setViewportEnabled(true); 700 webViewHelper.webView()->settings()->setViewportEnabled(true);
702 webViewHelper.webView()->setFixedLayoutSize(WebSize(fixedLayoutWidth, fixedL ayoutHeight)); 701 webViewHelper.webView()->setFixedLayoutSize(WebSize(fixedLayoutWidth, fixedL ayoutHeight));
703 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 702 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
704 webViewHelper.webView()->layout(); 703 webViewHelper.webView()->layout();
705 float pageScaleFactor = webViewHelper.webView()->pageScaleFactor(); 704 float pageScaleFactor = webViewHelper.webView()->pageScaleFactor();
706 705
707 webViewHelper.webView()->resize(WebSize(viewportWidth * 2, viewportHeight * 2)); 706 webViewHelper.webView()->resize(WebSize(viewportWidth * 2, viewportHeight * 2));
708 707
709 EXPECT_EQ(pageScaleFactor, webViewHelper.webView()->pageScaleFactor()); 708 EXPECT_EQ(pageScaleFactor, webViewHelper.webView()->pageScaleFactor());
710 } 709 }
711 710
712 TEST_F(WebFrameTest, FixedLayoutSizePreventsLayoutFromChangingPageScale) 711 TEST_F(WebFrameTest, FixedLayoutSizePreventsLayoutFromChangingPageScale)
713 { 712 {
713 UseMockScrollbarSettings mockScrollbarSettings;
714 registerMockedHttpURLLoad("fixed_layout.html"); 714 registerMockedHttpURLLoad("fixed_layout.html");
715 715
716 int viewportWidth = 640; 716 int viewportWidth = 640;
717 int viewportHeight = 480; 717 int viewportHeight = 480;
718 718
719 int fixedLayoutWidth = viewportWidth * 2; 719 int fixedLayoutWidth = viewportWidth * 2;
720 int fixedLayoutHeight = viewportHeight * 2; 720 int fixedLayoutHeight = viewportHeight * 2;
721 721
722 FrameTestHelpers::WebViewHelper webViewHelper; 722 FrameTestHelpers::WebViewHelper webViewHelper;
723 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html"); 723 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html");
724 webViewHelper.webView()->enableFixedLayoutMode(true);
725 webViewHelper.webView()->settings()->setViewportEnabled(true); 724 webViewHelper.webView()->settings()->setViewportEnabled(true);
726 webViewHelper.webView()->setFixedLayoutSize(WebSize(viewportWidth, viewportH eight)); 725 webViewHelper.webView()->setFixedLayoutSize(WebSize(viewportWidth, viewportH eight));
727 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 726 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
728 webViewHelper.webView()->layout(); 727 webViewHelper.webView()->layout();
729 float pageScaleFactor = webViewHelper.webView()->pageScaleFactor(); 728 float pageScaleFactor = webViewHelper.webView()->pageScaleFactor();
730 729
731 webViewHelper.webView()->setFixedLayoutSize(WebSize(fixedLayoutWidth, fixedL ayoutHeight)); 730 webViewHelper.webView()->setFixedLayoutSize(WebSize(fixedLayoutWidth, fixedL ayoutHeight));
732 webViewHelper.webView()->layout(); 731 webViewHelper.webView()->layout();
733 732
734 EXPECT_EQ(pageScaleFactor, webViewHelper.webView()->pageScaleFactor()); 733 EXPECT_EQ(pageScaleFactor, webViewHelper.webView()->pageScaleFactor());
735 } 734 }
736 735
737 TEST_F(WebFrameTest, PreferredSizeAndContentSizeReportedCorrectlyWithZeroHeightF ixedLayout) 736 TEST_F(WebFrameTest, PreferredSizeAndContentSizeReportedCorrectlyWithZeroHeightF ixedLayout)
738 { 737 {
738 UseMockScrollbarSettings mockScrollbarSettings;
739 registerMockedHttpURLLoad("200-by-300.html"); 739 registerMockedHttpURLLoad("200-by-300.html");
740 740
741 int windowWidth = 100; 741 int windowWidth = 100;
742 int windowHeight = 100; 742 int windowHeight = 100;
743 int viewportWidth = 100; 743 int viewportWidth = 100;
744 int viewportHeight = 0; 744 int viewportHeight = 0;
745 int divWidth = 200; 745 int divWidth = 200;
746 int divHeight = 300; 746 int divHeight = 300;
747 747
748 FixedLayoutTestWebViewClient client; 748 FixedLayoutTestWebViewClient client;
749 client.m_screenInfo.deviceScaleFactor = 1; 749 client.m_screenInfo.deviceScaleFactor = 1;
750 750
751 FrameTestHelpers::WebViewHelper webViewHelper; 751 FrameTestHelpers::WebViewHelper webViewHelper;
752 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, 0, &cli ent); 752 webViewHelper.initializeAndLoad(m_baseURL + "200-by-300.html", true, 0, &cli ent);
753 webViewHelper.webView()->enableFixedLayoutMode(true);
754 webViewHelper.webView()->settings()->setViewportEnabled(true); 753 webViewHelper.webView()->settings()->setViewportEnabled(true);
755 webViewHelper.webView()->resize(WebSize(windowWidth, windowHeight)); 754 webViewHelper.webView()->resize(WebSize(windowWidth, windowHeight));
756 webViewHelper.webView()->setFixedLayoutSize(WebSize(viewportWidth, viewportH eight)); 755 webViewHelper.webView()->setFixedLayoutSize(WebSize(viewportWidth, viewportH eight));
757 webViewHelper.webView()->layout(); 756 webViewHelper.webView()->layout();
758 757
759 EXPECT_EQ(divWidth, webViewHelper.webView()->mainFrame()->contentsSize().wid th); 758 EXPECT_EQ(divWidth, webViewHelper.webView()->mainFrame()->contentsSize().wid th);
760 EXPECT_EQ(divHeight, webViewHelper.webView()->mainFrame()->contentsSize().he ight); 759 EXPECT_EQ(divHeight, webViewHelper.webView()->mainFrame()->contentsSize().he ight);
761 760
762 EXPECT_EQ(divWidth, webViewHelper.webView()->contentsPreferredMinimumSize(). width); 761 EXPECT_EQ(divWidth, webViewHelper.webView()->contentsPreferredMinimumSize(). width);
763 EXPECT_EQ(divHeight, webViewHelper.webView()->contentsPreferredMinimumSize() .height); 762 EXPECT_EQ(divHeight, webViewHelper.webView()->contentsPreferredMinimumSize() .height);
764 } 763 }
765 764
766 TEST_F(WebFrameTest, DisablingFixedLayoutSizeSetsCorrectLayoutSize) 765 TEST_F(WebFrameTest, DisablingFixedLayoutSizeSetsCorrectLayoutSize)
767 { 766 {
767 UseMockScrollbarSettings mockScrollbarSettings;
768 registerMockedHttpURLLoad("no_viewport_tag.html"); 768 registerMockedHttpURLLoad("no_viewport_tag.html");
769 769
770 FixedLayoutTestWebViewClient client; 770 FixedLayoutTestWebViewClient client;
771 client.m_screenInfo.deviceScaleFactor = 1; 771 client.m_screenInfo.deviceScaleFactor = 1;
772 int viewportWidth = 640; 772 int viewportWidth = 640;
773 int viewportHeight = 480; 773 int viewportHeight = 480;
774 774
775 FrameTestHelpers::WebViewHelper webViewHelper; 775 FrameTestHelpers::WebViewHelper webViewHelper;
776 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client); 776 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client);
777 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 777 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
778 webViewHelper.webView()->enableFixedLayoutMode(true);
779 webViewHelper.webView()->settings()->setUseWideViewport(true); 778 webViewHelper.webView()->settings()->setUseWideViewport(true);
780 webViewHelper.webView()->settings()->setViewportEnabled(true); 779 webViewHelper.webView()->settings()->setViewportEnabled(true);
781 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 780 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
782 781
783 webViewHelper.webView()->setFixedLayoutSize(WebSize(viewportWidth, viewportH eight)); 782 webViewHelper.webView()->setFixedLayoutSize(WebSize(viewportWidth, viewportH eight));
784 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout()); 783 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout());
785 webViewHelper.webView()->layout(); 784 webViewHelper.webView()->layout();
786 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width()); 785 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width());
787 786
788 webViewHelper.webView()->setFixedLayoutSize(WebSize(0, 0)); 787 webViewHelper.webView()->setFixedLayoutSize(WebSize(0, 0));
789 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout()); 788 EXPECT_TRUE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->needs Layout());
790 webViewHelper.webView()->layout(); 789 webViewHelper.webView()->layout();
791 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 790 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
792 } 791 }
793 792
794 TEST_F(WebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag) 793 TEST_F(WebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag)
795 { 794 {
795 UseMockScrollbarSettings mockScrollbarSettings;
796 registerMockedHttpURLLoad("no_viewport_tag.html"); 796 registerMockedHttpURLLoad("no_viewport_tag.html");
797 797
798 int viewportWidth = 640; 798 int viewportWidth = 640;
799 int viewportHeight = 480; 799 int viewportHeight = 480;
800 800
801 FixedLayoutTestWebViewClient client; 801 FixedLayoutTestWebViewClient client;
802 client.m_screenInfo.deviceScaleFactor = 2; 802 client.m_screenInfo.deviceScaleFactor = 2;
803 803
804 FrameTestHelpers::WebViewHelper webViewHelper; 804 FrameTestHelpers::WebViewHelper webViewHelper;
805 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client); 805 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client);
806 806
807 webViewHelper.webView()->settings()->setViewportEnabled(true); 807 webViewHelper.webView()->settings()->setViewportEnabled(true);
808 webViewHelper.webView()->enableFixedLayoutMode(true);
809 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 808 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
810 webViewHelper.webView()->layout(); 809 webViewHelper.webView()->layout();
811 810
812 EXPECT_EQ(2, webViewHelper.webView()->deviceScaleFactor()); 811 EXPECT_EQ(2, webViewHelper.webView()->deviceScaleFactor());
813 812
814 // Device scale factor should be independent of page scale. 813 // Device scale factor should be independent of page scale.
815 webViewHelper.webView()->setPageScaleFactorLimits(1, 2); 814 webViewHelper.webView()->setPageScaleFactorLimits(1, 2);
816 webViewHelper.webView()->setPageScaleFactorPreservingScrollOffset(0.5); 815 webViewHelper.webView()->setPageScaleFactorPreservingScrollOffset(0.5);
817 webViewHelper.webView()->layout(); 816 webViewHelper.webView()->layout();
818 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor()); 817 EXPECT_EQ(1, webViewHelper.webView()->pageScaleFactor());
(...skipping 10 matching lines...) Expand all
829 828
830 FixedLayoutTestWebViewClient client; 829 FixedLayoutTestWebViewClient client;
831 client.m_screenInfo.deviceScaleFactor = 1; 830 client.m_screenInfo.deviceScaleFactor = 1;
832 int viewportWidth = 640; 831 int viewportWidth = 640;
833 int viewportHeight = 480; 832 int viewportHeight = 480;
834 833
835 // Make sure we initialize to minimum scale, even if the window size 834 // Make sure we initialize to minimum scale, even if the window size
836 // only becomes available after the load begins. 835 // only becomes available after the load begins.
837 FrameTestHelpers::WebViewHelper webViewHelper; 836 FrameTestHelpers::WebViewHelper webViewHelper;
838 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 837 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
839 webViewHelper.webView()->enableFixedLayoutMode(true);
840 webViewHelper.webView()->settings()->setViewportEnabled(true); 838 webViewHelper.webView()->settings()->setViewportEnabled(true);
841 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 839 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
842 840
843 int defaultFixedLayoutWidth = 980; 841 int defaultFixedLayoutWidth = 980;
844 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th; 842 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid th;
845 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() ); 843 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() );
846 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor()); 844 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor());
847 845
848 // Assume the user has pinch zoomed to page scale factor 2. 846 // Assume the user has pinch zoomed to page scale factor 2.
849 float userPinchPageScaleFactor = 2; 847 float userPinchPageScaleFactor = 2;
(...skipping 19 matching lines...) Expand all
869 867
870 FixedLayoutTestWebViewClient client; 868 FixedLayoutTestWebViewClient client;
871 client.m_screenInfo.deviceScaleFactor = 1; 869 client.m_screenInfo.deviceScaleFactor = 1;
872 int viewportWidth = 640; 870 int viewportWidth = 640;
873 int viewportHeight = 480; 871 int viewportHeight = 480;
874 872
875 // Make sure we initialize to minimum scale, even if the window size 873 // Make sure we initialize to minimum scale, even if the window size
876 // only becomes available after the load begins. 874 // only becomes available after the load begins.
877 FrameTestHelpers::WebViewHelper webViewHelper; 875 FrameTestHelpers::WebViewHelper webViewHelper;
878 webViewHelper.initializeAndLoad(m_baseURL + "wide_document.html", true, 0, & client); 876 webViewHelper.initializeAndLoad(m_baseURL + "wide_document.html", true, 0, & client);
879 webViewHelper.webView()->enableFixedLayoutMode(true);
880 webViewHelper.webView()->settings()->setViewportEnabled(true); 877 webViewHelper.webView()->settings()->setViewportEnabled(true);
881 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 878 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
882 879
883 int wideDocumentWidth = 1500; 880 int wideDocumentWidth = 1500;
884 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; 881 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth;
885 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() ); 882 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() );
886 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor()); 883 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor());
887 884
888 // Assume the user has pinch zoomed to page scale factor 2. 885 // Assume the user has pinch zoomed to page scale factor 2.
889 float userPinchPageScaleFactor = 2; 886 float userPinchPageScaleFactor = 2;
890 webViewHelper.webView()->setPageScaleFactorPreservingScrollOffset(userPinchP ageScaleFactor); 887 webViewHelper.webView()->setPageScaleFactorPreservingScrollOffset(userPinchP ageScaleFactor);
891 webViewHelper.webView()->layout(); 888 webViewHelper.webView()->layout();
892 889
893 // Make sure we don't reset to initial scale if the page continues to load. 890 // Make sure we don't reset to initial scale if the page continues to load.
894 bool isNewNavigation; 891 bool isNewNavigation;
895 webViewHelper.webViewImpl()->didCommitLoad(&isNewNavigation, false); 892 webViewHelper.webViewImpl()->didCommitLoad(&isNewNavigation, false);
896 webViewHelper.webViewImpl()->didChangeContentsSize(); 893 webViewHelper.webViewImpl()->didChangeContentsSize();
897 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 894 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
898 895
899 // Make sure we don't reset to initial scale if the viewport size changes. 896 // Make sure we don't reset to initial scale if the viewport size changes.
900 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) ); 897 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight + 100) );
901 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ()); 898 EXPECT_EQ(userPinchPageScaleFactor, webViewHelper.webView()->pageScaleFactor ());
902 } 899 }
903 900
904 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse) 901 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse)
905 { 902 {
903 UseMockScrollbarSettings mockScrollbarSettings;
906 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 904 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
907 905
908 FixedLayoutTestWebViewClient client; 906 FixedLayoutTestWebViewClient client;
909 client.m_screenInfo.deviceScaleFactor = 1; 907 client.m_screenInfo.deviceScaleFactor = 1;
910 int viewportWidth = 640; 908 int viewportWidth = 640;
911 int viewportHeight = 480; 909 int viewportHeight = 480;
912 910
913 FrameTestHelpers::WebViewHelper webViewHelper; 911 FrameTestHelpers::WebViewHelper webViewHelper;
914 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client); 912 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client);
915 webViewHelper.webView()->enableFixedLayoutMode(true);
916 webViewHelper.webView()->settings()->setViewportEnabled(true); 913 webViewHelper.webView()->settings()->setViewportEnabled(true);
917 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 914 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
918 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 915 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
919 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 916 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
920 917
921 // The page must be displayed at 100% zoom. 918 // The page must be displayed at 100% zoom.
922 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 919 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
923 } 920 }
924 921
925 TEST_F(WebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport) 922 TEST_F(WebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport)
926 { 923 {
924 UseMockScrollbarSettings mockScrollbarSettings;
927 registerMockedHttpURLLoad("large-div.html"); 925 registerMockedHttpURLLoad("large-div.html");
928 926
929 FixedLayoutTestWebViewClient client; 927 FixedLayoutTestWebViewClient client;
930 client.m_screenInfo.deviceScaleFactor = 1; 928 client.m_screenInfo.deviceScaleFactor = 1;
931 int viewportWidth = 640; 929 int viewportWidth = 640;
932 int viewportHeight = 480; 930 int viewportHeight = 480;
933 931
934 FrameTestHelpers::WebViewHelper webViewHelper; 932 FrameTestHelpers::WebViewHelper webViewHelper;
935 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt); 933 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt);
936 webViewHelper.webView()->enableFixedLayoutMode(true);
937 webViewHelper.webView()->settings()->setViewportEnabled(true); 934 webViewHelper.webView()->settings()->setViewportEnabled(true);
938 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 935 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
939 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 936 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
940 webViewHelper.webView()->settings()->setUseWideViewport(false); 937 webViewHelper.webView()->settings()->setUseWideViewport(false);
941 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 938 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
942 939
943 // The page must be displayed at 100% zoom, despite that it hosts a wide div element. 940 // The page must be displayed at 100% zoom, despite that it hosts a wide div element.
944 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 941 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
945 } 942 }
946 943
947 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth) 944 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth)
948 { 945 {
946 UseMockScrollbarSettings mockScrollbarSettings;
949 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 947 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
950 948
951 FixedLayoutTestWebViewClient client; 949 FixedLayoutTestWebViewClient client;
952 client.m_screenInfo.deviceScaleFactor = 1; 950 client.m_screenInfo.deviceScaleFactor = 1;
953 int viewportWidth = 640; 951 int viewportWidth = 640;
954 int viewportHeight = 480; 952 int viewportHeight = 480;
955 953
956 FrameTestHelpers::WebViewHelper webViewHelper; 954 FrameTestHelpers::WebViewHelper webViewHelper;
957 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client); 955 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client);
958 webViewHelper.webView()->enableFixedLayoutMode(true);
959 webViewHelper.webView()->settings()->setViewportEnabled(true); 956 webViewHelper.webView()->settings()->setViewportEnabled(true);
960 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 957 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
961 webViewHelper.webView()->settings()->setUseWideViewport(false); 958 webViewHelper.webView()->settings()->setUseWideViewport(false);
962 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 959 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
963 960
964 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored. 961 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
965 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width()); 962 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width());
966 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->contentsSize().height()); 963 EXPECT_EQ(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl()->fram eView()->contentsSize().height());
967 } 964 }
968 965
969 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale) 966 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale)
970 { 967 {
968 UseMockScrollbarSettings mockScrollbarSettings;
971 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 969 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
972 970
973 FixedLayoutTestWebViewClient client; 971 FixedLayoutTestWebViewClient client;
974 client.m_screenInfo.deviceScaleFactor = 1; 972 client.m_screenInfo.deviceScaleFactor = 1;
975 int viewportWidth = 640; 973 int viewportWidth = 640;
976 int viewportHeight = 480; 974 int viewportHeight = 480;
977 975
978 FrameTestHelpers::WebViewHelper webViewHelper; 976 FrameTestHelpers::WebViewHelper webViewHelper;
979 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client); 977 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client);
980 webViewHelper.webView()->enableFixedLayoutMode(true);
981 webViewHelper.webView()->settings()->setViewportEnabled(true); 978 webViewHelper.webView()->settings()->setViewportEnabled(true);
982 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 979 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
983 webViewHelper.webView()->settings()->setUseWideViewport(false); 980 webViewHelper.webView()->settings()->setUseWideViewport(false);
984 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 981 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
985 982
986 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored. 983 // The page sets viewport width to 3000, but with UseWideViewport == false i t must be ignored.
987 // While the initial scale specified by the page must be accounted. 984 // While the initial scale specified by the page must be accounted.
988 EXPECT_EQ(viewportWidth / 2, webViewHelper.webViewImpl()->mainFrameImpl()->f rameView()->contentsSize().width()); 985 EXPECT_EQ(viewportWidth / 2, webViewHelper.webViewImpl()->mainFrameImpl()->f rameView()->contentsSize().width());
989 EXPECT_EQ(viewportHeight / 2, webViewHelper.webViewImpl()->mainFrameImpl()-> frameView()->contentsSize().height()); 986 EXPECT_EQ(viewportHeight / 2, webViewHelper.webViewImpl()->mainFrameImpl()-> frameView()->contentsSize().height());
990 } 987 }
991 988
992 TEST_F(WebFrameTest, WideViewportSetsTo980WithoutViewportTag) 989 TEST_F(WebFrameTest, WideViewportSetsTo980WithoutViewportTag)
993 { 990 {
991 UseMockScrollbarSettings mockScrollbarSettings;
994 registerMockedHttpURLLoad("no_viewport_tag.html"); 992 registerMockedHttpURLLoad("no_viewport_tag.html");
995 993
996 FixedLayoutTestWebViewClient client; 994 FixedLayoutTestWebViewClient client;
997 client.m_screenInfo.deviceScaleFactor = 1; 995 client.m_screenInfo.deviceScaleFactor = 1;
998 int viewportWidth = 640; 996 int viewportWidth = 640;
999 int viewportHeight = 480; 997 int viewportHeight = 480;
1000 998
1001 FrameTestHelpers::WebViewHelper webViewHelper; 999 FrameTestHelpers::WebViewHelper webViewHelper;
1002 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client); 1000 webViewHelper.initializeAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client);
1003 webViewHelper.webView()->enableFixedLayoutMode(true);
1004 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1001 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1005 webViewHelper.webView()->settings()->setUseWideViewport(true); 1002 webViewHelper.webView()->settings()->setUseWideViewport(true);
1006 webViewHelper.webView()->settings()->setViewportEnabled(true); 1003 webViewHelper.webView()->settings()->setViewportEnabled(true);
1007 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1004 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1008 1005
1009 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 1006 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
1010 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height()); 1007 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height());
1011 } 1008 }
1012 1009
1013 TEST_F(WebFrameTest, NoWideViewportAndHeightInMeta) 1010 TEST_F(WebFrameTest, NoWideViewportAndHeightInMeta)
1014 { 1011 {
1012 UseMockScrollbarSettings mockScrollbarSettings;
1015 registerMockedHttpURLLoad("viewport-height-1000.html"); 1013 registerMockedHttpURLLoad("viewport-height-1000.html");
1016 1014
1017 FixedLayoutTestWebViewClient client; 1015 FixedLayoutTestWebViewClient client;
1018 client.m_screenInfo.deviceScaleFactor = 1; 1016 client.m_screenInfo.deviceScaleFactor = 1;
1019 int viewportWidth = 640; 1017 int viewportWidth = 640;
1020 int viewportHeight = 480; 1018 int viewportHeight = 480;
1021 1019
1022 FrameTestHelpers::WebViewHelper webViewHelper; 1020 FrameTestHelpers::WebViewHelper webViewHelper;
1023 webViewHelper.initializeAndLoad(m_baseURL + "viewport-height-1000.html", tru e, 0, &client); 1021 webViewHelper.initializeAndLoad(m_baseURL + "viewport-height-1000.html", tru e, 0, &client);
1024 webViewHelper.webView()->enableFixedLayoutMode(true);
1025 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1022 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1026 webViewHelper.webView()->settings()->setUseWideViewport(false); 1023 webViewHelper.webView()->settings()->setUseWideViewport(false);
1027 webViewHelper.webView()->settings()->setViewportEnabled(true); 1024 webViewHelper.webView()->settings()->setViewportEnabled(true);
1028 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1025 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1029 1026
1030 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width()); 1027 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->contentsSize().width());
1031 } 1028 }
1032 1029
1033 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth) 1030 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth)
1034 { 1031 {
1032 UseMockScrollbarSettings mockScrollbarSettings;
1035 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); 1033 registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
1036 1034
1037 FixedLayoutTestWebViewClient client; 1035 FixedLayoutTestWebViewClient client;
1038 client.m_screenInfo.deviceScaleFactor = 1; 1036 client.m_screenInfo.deviceScaleFactor = 1;
1039 int viewportWidth = 640; 1037 int viewportWidth = 640;
1040 int viewportHeight = 480; 1038 int viewportHeight = 480;
1041 1039
1042 FrameTestHelpers::WebViewHelper webViewHelper; 1040 FrameTestHelpers::WebViewHelper webViewHelper;
1043 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale.html" , true, 0, &client); 1041 webViewHelper.initializeAndLoad(m_baseURL + "viewport-2x-initial-scale.html" , true, 0, &client);
1044 webViewHelper.webView()->enableFixedLayoutMode(true);
1045 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1042 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1046 webViewHelper.webView()->settings()->setUseWideViewport(true); 1043 webViewHelper.webView()->settings()->setUseWideViewport(true);
1047 webViewHelper.webView()->settings()->setViewportEnabled(true); 1044 webViewHelper.webView()->settings()->setViewportEnabled(true);
1048 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1045 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1049 1046
1050 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 1047 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
1051 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height()); 1048 EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewHelper.webViewImpl( )->mainFrameImpl()->frameView()->contentsSize().height());
1052 } 1049 }
1053 1050
1054 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesLoadWithOverviewMode) 1051 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesLoadWithOverviewMode)
1055 { 1052 {
1053 UseMockScrollbarSettings mockScrollbarSettings;
1056 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1054 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1057 1055
1058 FixedLayoutTestWebViewClient client; 1056 FixedLayoutTestWebViewClient client;
1059 client.m_screenInfo.deviceScaleFactor = 1; 1057 client.m_screenInfo.deviceScaleFactor = 1;
1060 int viewportWidth = 640; 1058 int viewportWidth = 640;
1061 int viewportHeight = 480; 1059 int viewportHeight = 480;
1062 1060
1063 FrameTestHelpers::WebViewHelper webViewHelper; 1061 FrameTestHelpers::WebViewHelper webViewHelper;
1064 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client); 1062 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client);
1065 webViewHelper.webView()->enableFixedLayoutMode(true);
1066 webViewHelper.webView()->settings()->setViewportEnabled(true); 1063 webViewHelper.webView()->settings()->setViewportEnabled(true);
1067 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1064 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1068 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1065 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1069 1066
1070 // The page must be displayed at 200% zoom, as specified in its viewport met a tag. 1067 // The page must be displayed at 200% zoom, as specified in its viewport met a tag.
1071 EXPECT_EQ(2.0f, webViewHelper.webView()->pageScaleFactor()); 1068 EXPECT_EQ(2.0f, webViewHelper.webView()->pageScaleFactor());
1072 } 1069 }
1073 1070
1074 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently) 1071 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently)
1075 { 1072 {
1076 UseMockScrollbarSettings mockScrollbarSettings; 1073 UseMockScrollbarSettings mockScrollbarSettings;
1077 1074
1078 registerMockedHttpURLLoad("fixed_layout.html"); 1075 registerMockedHttpURLLoad("fixed_layout.html");
1079 1076
1080 FixedLayoutTestWebViewClient client; 1077 FixedLayoutTestWebViewClient client;
1081 client.m_screenInfo.deviceScaleFactor = 1; 1078 client.m_screenInfo.deviceScaleFactor = 1;
1082 float enforcedPageScaleFactor = 2.0f; 1079 float enforcedPageScaleFactor = 2.0f;
1083 1080
1084 FrameTestHelpers::WebViewHelper webViewHelper; 1081 FrameTestHelpers::WebViewHelper webViewHelper;
1085 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 1082 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
1086 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1083 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1087 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1084 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1088 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor ); 1085 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScaleFactor );
1089 webViewHelper.webView()->enableFixedLayoutMode(true);
1090 webViewHelper.webView()->settings()->setViewportEnabled(true); 1086 webViewHelper.webView()->settings()->setViewportEnabled(true);
1091 webViewHelper.webView()->layout(); 1087 webViewHelper.webView()->layout();
1092 1088
1093 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1089 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1094 1090
1095 int viewportWidth = 640; 1091 int viewportWidth = 640;
1096 int viewportHeight = 480; 1092 int viewportHeight = 480;
1097 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1093 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1098 webViewHelper.webView()->layout(); 1094 webViewHelper.webView()->layout();
1099 1095
1100 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1096 EXPECT_EQ(enforcedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1101 1097
1102 webViewHelper.webView()->setInitialPageScaleOverride(-1); 1098 webViewHelper.webView()->setInitialPageScaleOverride(-1);
1103 webViewHelper.webView()->layout(); 1099 webViewHelper.webView()->layout();
1104 EXPECT_EQ(1.0, webViewHelper.webView()->pageScaleFactor()); 1100 EXPECT_EQ(1.0, webViewHelper.webView()->pageScaleFactor());
1105 } 1101 }
1106 1102
1107 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWithOverviewMod e) 1103 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWithOverviewMod e)
1108 { 1104 {
1105 UseMockScrollbarSettings mockScrollbarSettings;
1109 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); 1106 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
1110 1107
1111 FixedLayoutTestWebViewClient client; 1108 FixedLayoutTestWebViewClient client;
1112 client.m_screenInfo.deviceScaleFactor = 1; 1109 client.m_screenInfo.deviceScaleFactor = 1;
1113 int viewportWidth = 640; 1110 int viewportWidth = 640;
1114 int viewportHeight = 480; 1111 int viewportHeight = 480;
1115 float enforcedPageScalePactor = 0.5f; 1112 float enforcedPageScalePactor = 0.5f;
1116 1113
1117 FrameTestHelpers::WebViewHelper webViewHelper; 1114 FrameTestHelpers::WebViewHelper webViewHelper;
1118 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client); 1115 webViewHelper.initializeAndLoad(m_baseURL + "viewport-auto-initial-scale.htm l", true, 0, &client);
1119 webViewHelper.webView()->enableFixedLayoutMode(true);
1120 webViewHelper.webView()->settings()->setViewportEnabled(true); 1116 webViewHelper.webView()->settings()->setViewportEnabled(true);
1121 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false); 1117 webViewHelper.webView()->settings()->setLoadWithOverviewMode(false);
1122 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScalePactor ); 1118 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScalePactor );
1123 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1119 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1124 1120
1125 EXPECT_EQ(enforcedPageScalePactor, webViewHelper.webView()->pageScaleFactor( )); 1121 EXPECT_EQ(enforcedPageScalePactor, webViewHelper.webView()->pageScaleFactor( ));
1126 } 1122 }
1127 1123
1128 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale) 1124 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale)
1129 { 1125 {
1126 UseMockScrollbarSettings mockScrollbarSettings;
1130 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); 1127 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
1131 1128
1132 FixedLayoutTestWebViewClient client; 1129 FixedLayoutTestWebViewClient client;
1133 client.m_screenInfo.deviceScaleFactor = 1; 1130 client.m_screenInfo.deviceScaleFactor = 1;
1134 int viewportWidth = 640; 1131 int viewportWidth = 640;
1135 int viewportHeight = 480; 1132 int viewportHeight = 480;
1136 float enforcedPageScalePactor = 0.5f; 1133 float enforcedPageScalePactor = 0.5f;
1137 1134
1138 FrameTestHelpers::WebViewHelper webViewHelper; 1135 FrameTestHelpers::WebViewHelper webViewHelper;
1139 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client); 1136 webViewHelper.initializeAndLoad(m_baseURL + "viewport-wide-2x-initial-scale. html", true, 0, &client);
1140 webViewHelper.webView()->enableFixedLayoutMode(true);
1141 webViewHelper.webView()->settings()->setViewportEnabled(true); 1137 webViewHelper.webView()->settings()->setViewportEnabled(true);
1142 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScalePactor ); 1138 webViewHelper.webView()->setInitialPageScaleOverride(enforcedPageScalePactor );
1143 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1139 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1144 1140
1145 EXPECT_EQ(enforcedPageScalePactor, webViewHelper.webView()->pageScaleFactor( )); 1141 EXPECT_EQ(enforcedPageScalePactor, webViewHelper.webView()->pageScaleFactor( ));
1146 } 1142 }
1147 1143
1148 TEST_F(WebFrameTest, WideViewportInitialScaleDoesNotExpandFixedLayoutWidth) 1144 TEST_F(WebFrameTest, WideViewportInitialScaleDoesNotExpandFixedLayoutWidth)
1149 { 1145 {
1146 UseMockScrollbarSettings mockScrollbarSettings;
1150 registerMockedHttpURLLoad("viewport-device-0.5x-initial-scale.html"); 1147 registerMockedHttpURLLoad("viewport-device-0.5x-initial-scale.html");
1151 1148
1152 FixedLayoutTestWebViewClient client; 1149 FixedLayoutTestWebViewClient client;
1153 client.m_screenInfo.deviceScaleFactor = 1; 1150 client.m_screenInfo.deviceScaleFactor = 1;
1154 int viewportWidth = 640; 1151 int viewportWidth = 640;
1155 int viewportHeight = 480; 1152 int viewportHeight = 480;
1156 1153
1157 FrameTestHelpers::WebViewHelper webViewHelper; 1154 FrameTestHelpers::WebViewHelper webViewHelper;
1158 webViewHelper.initializeAndLoad(m_baseURL + "viewport-device-0.5x-initial-sc ale.html", true, 0, &client); 1155 webViewHelper.initializeAndLoad(m_baseURL + "viewport-device-0.5x-initial-sc ale.html", true, 0, &client);
1159 webViewHelper.webView()->enableFixedLayoutMode(true);
1160 webViewHelper.webView()->settings()->setViewportEnabled(true); 1156 webViewHelper.webView()->settings()->setViewportEnabled(true);
1161 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1157 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1162 webViewHelper.webView()->settings()->setUseWideViewport(true); 1158 webViewHelper.webView()->settings()->setUseWideViewport(true);
1163 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1159 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1164 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1160 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1165 1161
1166 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->fixedLayoutSize().width()); 1162 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
1167 } 1163 }
1168 1164
1169 TEST_F(WebFrameTest, WideViewportAndWideContentWithInitialScale) 1165 TEST_F(WebFrameTest, WideViewportAndWideContentWithInitialScale)
1170 { 1166 {
1167 UseMockScrollbarSettings mockScrollbarSettings;
1171 registerMockedHttpURLLoad("wide_document_width_viewport.html"); 1168 registerMockedHttpURLLoad("wide_document_width_viewport.html");
1172 1169
1173 FixedLayoutTestWebViewClient client; 1170 FixedLayoutTestWebViewClient client;
1174 client.m_screenInfo.deviceScaleFactor = 1; 1171 client.m_screenInfo.deviceScaleFactor = 1;
1175 int viewportWidth = 600; 1172 int viewportWidth = 600;
1176 int viewportHeight = 800; 1173 int viewportHeight = 800;
1177 1174
1178 FrameTestHelpers::WebViewHelper webViewHelper; 1175 FrameTestHelpers::WebViewHelper webViewHelper;
1179 webViewHelper.initializeAndLoad("about:blank", true, 0, &client); 1176 webViewHelper.initializeAndLoad("about:blank", true, 0, &client);
1180 webViewHelper.webView()->enableFixedLayoutMode(true);
1181 webViewHelper.webView()->settings()->setViewportEnabled(true); 1177 webViewHelper.webView()->settings()->setViewportEnabled(true);
1182 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1178 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1183 webViewHelper.webView()->settings()->setUseWideViewport(true); 1179 webViewHelper.webView()->settings()->setUseWideViewport(true);
1184 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true); 1180 webViewHelper.webView()->settings()->setViewportMetaLayoutSizeQuirk(true);
1185 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1181 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1186 1182
1187 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document_width_viewport.html"); 1183 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "wide_document_width_viewport.html");
1188 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1184 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1189 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1185 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1190 1186
1191 int wideDocumentWidth = 800; 1187 int wideDocumentWidth = 800;
1192 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; 1188 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth;
1193 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() ); 1189 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->pageScaleFactor() );
1194 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor()); 1190 EXPECT_EQ(minimumPageScaleFactor, webViewHelper.webView()->minimumPageScaleF actor());
1195 } 1191 }
1196 1192
1197 TEST_F(WebFrameTest, ZeroValuesQuirk) 1193 TEST_F(WebFrameTest, ZeroValuesQuirk)
1198 { 1194 {
1195 UseMockScrollbarSettings mockScrollbarSettings;
1199 registerMockedHttpURLLoad("viewport-zero-values.html"); 1196 registerMockedHttpURLLoad("viewport-zero-values.html");
1200 1197
1201 FixedLayoutTestWebViewClient client; 1198 FixedLayoutTestWebViewClient client;
1202 client.m_screenInfo.deviceScaleFactor = 1; 1199 client.m_screenInfo.deviceScaleFactor = 1;
1203 int viewportWidth = 640; 1200 int viewportWidth = 640;
1204 int viewportHeight = 480; 1201 int viewportHeight = 480;
1205 1202
1206 FrameTestHelpers::WebViewHelper webViewHelper; 1203 FrameTestHelpers::WebViewHelper webViewHelper;
1207 webViewHelper.initialize(true, 0, &client); 1204 webViewHelper.initialize(true, 0, &client);
1208 webViewHelper.webView()->enableFixedLayoutMode(true);
1209 webViewHelper.webView()->settings()->setViewportEnabled(true); 1205 webViewHelper.webView()->settings()->setViewportEnabled(true);
1210 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true); 1206 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true);
1211 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1207 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1212 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-zero-values.html"); 1208 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-zero-values.html");
1213 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1209 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1214 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1210 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1215 1211
1216 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->fixedLayoutSize().width()); 1212 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
1217 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1213 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1218 1214
1219 webViewHelper.webView()->settings()->setUseWideViewport(true); 1215 webViewHelper.webView()->settings()->setUseWideViewport(true);
1220 webViewHelper.webView()->layout(); 1216 webViewHelper.webView()->layout();
1221 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->fixedLayoutSize().width()); 1217 EXPECT_EQ(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()->frame View()->layoutSize().width());
1222 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor()); 1218 EXPECT_EQ(1.0f, webViewHelper.webView()->pageScaleFactor());
1223 } 1219 }
1224 1220
1225 TEST_F(WebFrameTest, OverflowHiddenDisablesScrolling) 1221 TEST_F(WebFrameTest, OverflowHiddenDisablesScrolling)
1226 { 1222 {
1227 registerMockedHttpURLLoad("body-overflow-hidden.html"); 1223 registerMockedHttpURLLoad("body-overflow-hidden.html");
1228 1224
1229 FixedLayoutTestWebViewClient client; 1225 FixedLayoutTestWebViewClient client;
1230 client.m_screenInfo.deviceScaleFactor = 1; 1226 client.m_screenInfo.deviceScaleFactor = 1;
1231 int viewportWidth = 640; 1227 int viewportWidth = 640;
(...skipping 24 matching lines...) Expand all
1256 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html"); 1252 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "body-overflow-hidden.html");
1257 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1253 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1258 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1254 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1259 1255
1260 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView(); 1256 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView();
1261 EXPECT_TRUE(view->userInputScrollable(WebCore::VerticalScrollbar)); 1257 EXPECT_TRUE(view->userInputScrollable(WebCore::VerticalScrollbar));
1262 } 1258 }
1263 1259
1264 TEST_F(WebFrameTest, NonZeroValuesNoQuirk) 1260 TEST_F(WebFrameTest, NonZeroValuesNoQuirk)
1265 { 1261 {
1262 UseMockScrollbarSettings mockScrollbarSettings;
1266 registerMockedHttpURLLoad("viewport-nonzero-values.html"); 1263 registerMockedHttpURLLoad("viewport-nonzero-values.html");
1267 1264
1268 FixedLayoutTestWebViewClient client; 1265 FixedLayoutTestWebViewClient client;
1269 client.m_screenInfo.deviceScaleFactor = 1; 1266 client.m_screenInfo.deviceScaleFactor = 1;
1270 int viewportWidth = 640; 1267 int viewportWidth = 640;
1271 int viewportHeight = 480; 1268 int viewportHeight = 480;
1272 float expectedPageScaleFactor = 0.5f; 1269 float expectedPageScaleFactor = 0.5f;
1273 1270
1274 FrameTestHelpers::WebViewHelper webViewHelper; 1271 FrameTestHelpers::WebViewHelper webViewHelper;
1275 webViewHelper.initialize(true, 0, &client); 1272 webViewHelper.initialize(true, 0, &client);
1276 webViewHelper.webView()->enableFixedLayoutMode(true);
1277 webViewHelper.webView()->settings()->setViewportEnabled(true); 1273 webViewHelper.webView()->settings()->setViewportEnabled(true);
1278 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true); 1274 webViewHelper.webView()->settings()->setViewportMetaZeroValuesQuirk(true);
1279 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1275 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1280 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-nonzero-values.html"); 1276 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "viewport-nonzero-values.html");
1281 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1277 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1282 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1278 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1283 1279
1284 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->fixedLayoutSize().width()); 1280 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width());
1285 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1281 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1286 1282
1287 webViewHelper.webView()->settings()->setUseWideViewport(true); 1283 webViewHelper.webView()->settings()->setUseWideViewport(true);
1288 webViewHelper.webView()->layout(); 1284 webViewHelper.webView()->layout();
1289 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->fixedLayoutSize().width()); 1285 EXPECT_EQ(viewportWidth / expectedPageScaleFactor, webViewHelper.webViewImpl ()->mainFrameImpl()->frameView()->layoutSize().width());
1290 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( )); 1286 EXPECT_EQ(expectedPageScaleFactor, webViewHelper.webView()->pageScaleFactor( ));
1291 } 1287 }
1292 1288
1293 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate) 1289 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate)
1294 { 1290 {
1291 UseMockScrollbarSettings mockScrollbarSettings;
1295 registerMockedHttpURLLoad("scale_oscillate.html"); 1292 registerMockedHttpURLLoad("scale_oscillate.html");
1296 1293
1297 FixedLayoutTestWebViewClient client; 1294 FixedLayoutTestWebViewClient client;
1298 client.m_screenInfo.deviceScaleFactor = static_cast<float>(1.325); 1295 client.m_screenInfo.deviceScaleFactor = static_cast<float>(1.325);
1299 int viewportWidth = 800; 1296 int viewportWidth = 800;
1300 int viewportHeight = 1057; 1297 int viewportHeight = 1057;
1301 1298
1302 FrameTestHelpers::WebViewHelper webViewHelper; 1299 FrameTestHelpers::WebViewHelper webViewHelper;
1303 webViewHelper.initializeAndLoad(m_baseURL + "scale_oscillate.html", true, 0, &client); 1300 webViewHelper.initializeAndLoad(m_baseURL + "scale_oscillate.html", true, 0, &client);
1304 webViewHelper.webView()->enableFixedLayoutMode(true);
1305 webViewHelper.webView()->settings()->setViewportEnabled(true); 1301 webViewHelper.webView()->settings()->setViewportEnabled(true);
1306 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1302 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1307 webViewHelper.webView()->layout(); 1303 webViewHelper.webView()->layout();
1308 } 1304 }
1309 1305
1310 TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout) 1306 TEST_F(WebFrameTest, setPageScaleFactorDoesNotLayout)
1311 { 1307 {
1308 UseMockScrollbarSettings mockScrollbarSettings;
1312 registerMockedHttpURLLoad("fixed_layout.html"); 1309 registerMockedHttpURLLoad("fixed_layout.html");
1313 1310
1314 FixedLayoutTestWebViewClient client; 1311 FixedLayoutTestWebViewClient client;
1315 client.m_screenInfo.deviceScaleFactor = 1; 1312 client.m_screenInfo.deviceScaleFactor = 1;
1316 // Small viewport to ensure there are always scrollbars. 1313 // Small viewport to ensure there are always scrollbars.
1317 int viewportWidth = 64; 1314 int viewportWidth = 64;
1318 int viewportHeight = 48; 1315 int viewportHeight = 48;
1319 1316
1320 FrameTestHelpers::WebViewHelper webViewHelper; 1317 FrameTestHelpers::WebViewHelper webViewHelper;
1321 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 1318 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
1322 webViewHelper.webView()->enableFixedLayoutMode(true);
1323 webViewHelper.webView()->settings()->setViewportEnabled(true); 1319 webViewHelper.webView()->settings()->setViewportEnabled(true);
1324 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1320 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1325 webViewHelper.webView()->layout(); 1321 webViewHelper.webView()->layout();
1326 1322
1327 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount(); 1323 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount();
1328 webViewHelper.webViewImpl()->setPageScaleFactor(3, WebPoint()); 1324 webViewHelper.webViewImpl()->setPageScaleFactor(3, WebPoint());
1329 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout()); 1325 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout());
1330 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount()); 1326 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount());
1331 } 1327 }
1332 1328
1333 TEST_F(WebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNotLayout) 1329 TEST_F(WebFrameTest, setPageScaleFactorWithOverlayScrollbarsDoesNotLayout)
1334 { 1330 {
1335 UseMockScrollbarSettings mockScrollbarSettings; 1331 UseMockScrollbarSettings mockScrollbarSettings;
1336 1332
1337 registerMockedHttpURLLoad("fixed_layout.html"); 1333 registerMockedHttpURLLoad("fixed_layout.html");
1338 1334
1339 FixedLayoutTestWebViewClient client; 1335 FixedLayoutTestWebViewClient client;
1340 client.m_screenInfo.deviceScaleFactor = 1; 1336 client.m_screenInfo.deviceScaleFactor = 1;
1341 int viewportWidth = 640; 1337 int viewportWidth = 640;
1342 int viewportHeight = 480; 1338 int viewportHeight = 480;
1343 1339
1344 FrameTestHelpers::WebViewHelper webViewHelper; 1340 FrameTestHelpers::WebViewHelper webViewHelper;
1345 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 1341 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
1346 webViewHelper.webView()->enableFixedLayoutMode(true);
1347 webViewHelper.webView()->settings()->setViewportEnabled(true); 1342 webViewHelper.webView()->settings()->setViewportEnabled(true);
1348 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1343 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1349 webViewHelper.webView()->layout(); 1344 webViewHelper.webView()->layout();
1350 1345
1351 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount(); 1346 int prevLayoutCount = webViewHelper.webViewImpl()->mainFrameImpl()->frameVie w()->layoutCount();
1352 webViewHelper.webViewImpl()->setPageScaleFactor(30, WebPoint()); 1347 webViewHelper.webViewImpl()->setPageScaleFactor(30, WebPoint());
1353 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout()); 1348 EXPECT_FALSE(webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->need sLayout());
1354 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount()); 1349 EXPECT_EQ(prevLayoutCount, webViewHelper.webViewImpl()->mainFrameImpl()->fra meView()->layoutCount());
1355 1350
1356 } 1351 }
1357 1352
1358 TEST_F(WebFrameTest, setPageScaleFactorBeforeFrameHasView) 1353 TEST_F(WebFrameTest, setPageScaleFactorBeforeFrameHasView)
1359 { 1354 {
1360 registerMockedHttpURLLoad("fixed_layout.html"); 1355 registerMockedHttpURLLoad("fixed_layout.html");
1361 1356
1362 float pageScaleFactor = 3; 1357 float pageScaleFactor = 3;
1363 FrameTestHelpers::WebViewHelper webViewHelper; 1358 FrameTestHelpers::WebViewHelper webViewHelper;
1364 webViewHelper.initializeAndLoad("about:html", true, 0, 0); 1359 webViewHelper.initializeAndLoad("about:html", true, 0, 0);
1365 webViewHelper.webView()->setPageScaleFactor(pageScaleFactor, WebPoint()); 1360 webViewHelper.webView()->setPageScaleFactor(pageScaleFactor, WebPoint());
1366 1361
1367 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html"); 1362 FrameTestHelpers::loadFrame(webViewHelper.webView()->mainFrame(), m_baseURL + "fixed_layout.html");
1368 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 1363 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
1369 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView(); 1364 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView();
1370 EXPECT_EQ(pageScaleFactor, view->visibleContentScaleFactor()); 1365 EXPECT_EQ(pageScaleFactor, view->visibleContentScaleFactor());
1371 } 1366 }
1372 1367
1373 TEST_F(WebFrameTest, pageScaleFactorWrittenToHistoryItem) 1368 TEST_F(WebFrameTest, pageScaleFactorWrittenToHistoryItem)
1374 { 1369 {
1370 UseMockScrollbarSettings mockScrollbarSettings;
1375 registerMockedHttpURLLoad("fixed_layout.html"); 1371 registerMockedHttpURLLoad("fixed_layout.html");
1376 1372
1377 FixedLayoutTestWebViewClient client; 1373 FixedLayoutTestWebViewClient client;
1378 client.m_screenInfo.deviceScaleFactor = 1; 1374 client.m_screenInfo.deviceScaleFactor = 1;
1379 int viewportWidth = 640; 1375 int viewportWidth = 640;
1380 int viewportHeight = 480; 1376 int viewportHeight = 480;
1381 1377
1382 FrameTestHelpers::WebViewHelper webViewHelper; 1378 FrameTestHelpers::WebViewHelper webViewHelper;
1383 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 1379 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
1384 webViewHelper.webView()->enableFixedLayoutMode(true);
1385 webViewHelper.webView()->settings()->setViewportEnabled(true); 1380 webViewHelper.webView()->settings()->setViewportEnabled(true);
1386 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1381 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1387 webViewHelper.webView()->layout(); 1382 webViewHelper.webView()->layout();
1388 1383
1389 webViewHelper.webView()->setPageScaleFactor(3, WebPoint()); 1384 webViewHelper.webView()->setPageScaleFactor(3, WebPoint());
1390 webViewHelper.webViewImpl()->page()->mainFrame()->loader()->history()->saveD ocumentAndScrollState(); 1385 webViewHelper.webViewImpl()->page()->mainFrame()->loader()->history()->saveD ocumentAndScrollState();
1391 webViewHelper.webView()->setPageScaleFactor(1, WebPoint()); 1386 webViewHelper.webView()->setPageScaleFactor(1, WebPoint());
1392 webViewHelper.webViewImpl()->page()->mainFrame()->loader()->history()->resto reScrollPositionAndViewState(); 1387 webViewHelper.webViewImpl()->page()->mainFrame()->loader()->history()->resto reScrollPositionAndViewState();
1393 EXPECT_EQ(3, webViewHelper.webView()->pageScaleFactor()); 1388 EXPECT_EQ(3, webViewHelper.webView()->pageScaleFactor());
1394 } 1389 }
1395 1390
1396 TEST_F(WebFrameTest, pageScaleFactorShrinksViewport) 1391 TEST_F(WebFrameTest, pageScaleFactorShrinksViewport)
1397 { 1392 {
1393 UseMockScrollbarSettings mockScrollbarSettings;
1398 registerMockedHttpURLLoad("large-div.html"); 1394 registerMockedHttpURLLoad("large-div.html");
1399 1395
1400 FixedLayoutTestWebViewClient client; 1396 FixedLayoutTestWebViewClient client;
1401 client.m_screenInfo.deviceScaleFactor = 1; 1397 client.m_screenInfo.deviceScaleFactor = 1;
1402 // Small viewport to ensure there are always scrollbars. 1398 // Small viewport to ensure there are always scrollbars.
1403 int viewportWidth = 64; 1399 int viewportWidth = 64;
1404 int viewportHeight = 48; 1400 int viewportHeight = 48;
1405 1401
1406 FrameTestHelpers::WebViewHelper webViewHelper; 1402 FrameTestHelpers::WebViewHelper webViewHelper;
1407 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt); 1403 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt);
1408 webViewHelper.webView()->enableFixedLayoutMode(true);
1409 webViewHelper.webView()->settings()->setViewportEnabled(true); 1404 webViewHelper.webView()->settings()->setViewportEnabled(true);
1410 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1405 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1411 webViewHelper.webView()->layout(); 1406 webViewHelper.webView()->layout();
1412 1407
1413 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView(); 1408 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView();
1414 int viewportWidthMinusScrollbar = viewportWidth - (view->verticalScrollbar() ->isOverlayScrollbar() ? 0 : 15); 1409 int viewportWidthMinusScrollbar = viewportWidth - (view->verticalScrollbar() ->isOverlayScrollbar() ? 0 : 15);
1415 int viewportHeightMinusScrollbar = viewportHeight - (view->horizontalScrollb ar()->isOverlayScrollbar() ? 0 : 15); 1410 int viewportHeightMinusScrollbar = viewportHeight - (view->horizontalScrollb ar()->isOverlayScrollbar() ? 0 : 15);
1416 1411
1417 webViewHelper.webView()->setPageScaleFactor(2, WebPoint()); 1412 webViewHelper.webView()->setPageScaleFactor(2, WebPoint());
1418 1413
1419 WebCore::IntSize unscaledSize = view->unscaledVisibleContentSize(WebCore::Sc rollableArea::IncludeScrollbars); 1414 WebCore::IntSize unscaledSize = view->unscaledVisibleContentSize(WebCore::Sc rollableArea::IncludeScrollbars);
1420 EXPECT_EQ(viewportWidth, unscaledSize.width()); 1415 EXPECT_EQ(viewportWidth, unscaledSize.width());
1421 EXPECT_EQ(viewportHeight, unscaledSize.height()); 1416 EXPECT_EQ(viewportHeight, unscaledSize.height());
1422 1417
1423 WebCore::IntSize unscaledSizeMinusScrollbar = view->unscaledVisibleContentSi ze(WebCore::ScrollableArea::ExcludeScrollbars); 1418 WebCore::IntSize unscaledSizeMinusScrollbar = view->unscaledVisibleContentSi ze(WebCore::ScrollableArea::ExcludeScrollbars);
1424 EXPECT_EQ(viewportWidthMinusScrollbar, unscaledSizeMinusScrollbar.width()); 1419 EXPECT_EQ(viewportWidthMinusScrollbar, unscaledSizeMinusScrollbar.width());
1425 EXPECT_EQ(viewportHeightMinusScrollbar, unscaledSizeMinusScrollbar.height()) ; 1420 EXPECT_EQ(viewportHeightMinusScrollbar, unscaledSizeMinusScrollbar.height()) ;
1426 1421
1427 WebCore::IntSize scaledSize = view->visibleContentRect().size(); 1422 WebCore::IntSize scaledSize = view->visibleContentRect().size();
1428 EXPECT_EQ(ceil(viewportWidthMinusScrollbar / 2.0), scaledSize.width()); 1423 EXPECT_EQ(ceil(viewportWidthMinusScrollbar / 2.0), scaledSize.width());
1429 EXPECT_EQ(ceil(viewportHeightMinusScrollbar / 2.0), scaledSize.height()); 1424 EXPECT_EQ(ceil(viewportHeightMinusScrollbar / 2.0), scaledSize.height());
1430 } 1425 }
1431 1426
1432 TEST_F(WebFrameTest, pageScaleFactorDoesNotApplyCssTransform) 1427 TEST_F(WebFrameTest, pageScaleFactorDoesNotApplyCssTransform)
1433 { 1428 {
1429 UseMockScrollbarSettings mockScrollbarSettings;
1434 registerMockedHttpURLLoad("fixed_layout.html"); 1430 registerMockedHttpURLLoad("fixed_layout.html");
1435 1431
1436 FixedLayoutTestWebViewClient client; 1432 FixedLayoutTestWebViewClient client;
1437 client.m_screenInfo.deviceScaleFactor = 1; 1433 client.m_screenInfo.deviceScaleFactor = 1;
1438 int viewportWidth = 640; 1434 int viewportWidth = 640;
1439 int viewportHeight = 480; 1435 int viewportHeight = 480;
1440 1436
1441 FrameTestHelpers::WebViewHelper webViewHelper; 1437 FrameTestHelpers::WebViewHelper webViewHelper;
1442 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 1438 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
1443 webViewHelper.webView()->enableFixedLayoutMode(true);
1444 webViewHelper.webView()->settings()->setViewportEnabled(true); 1439 webViewHelper.webView()->settings()->setViewportEnabled(true);
1445 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1440 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1446 webViewHelper.webView()->layout(); 1441 webViewHelper.webView()->layout();
1447 1442
1448 webViewHelper.webView()->setPageScaleFactor(2, WebPoint()); 1443 webViewHelper.webView()->setPageScaleFactor(2, WebPoint());
1449 1444
1450 EXPECT_EQ(980, webViewHelper.webViewImpl()->page()->mainFrame()->contentRend erer()->unscaledDocumentRect().width()); 1445 EXPECT_EQ(980, webViewHelper.webViewImpl()->page()->mainFrame()->contentRend erer()->unscaledDocumentRect().width());
1451 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width()); 1446 EXPECT_EQ(980, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->co ntentsSize().width());
1452 } 1447 }
1453 1448
1454 TEST_F(WebFrameTest, targetDensityDpiHigh) 1449 TEST_F(WebFrameTest, targetDensityDpiHigh)
1455 { 1450 {
1456 UseMockScrollbarSettings mockScrollbarSettings; 1451 UseMockScrollbarSettings mockScrollbarSettings;
1457 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); 1452 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html");
1458 1453
1459 FixedLayoutTestWebViewClient client; 1454 FixedLayoutTestWebViewClient client;
1460 // high-dpi = 240 1455 // high-dpi = 240
1461 float targetDpi = 240.0f; 1456 float targetDpi = 240.0f;
1462 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1457 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
1463 int viewportWidth = 640; 1458 int viewportWidth = 640;
1464 int viewportHeight = 480; 1459 int viewportHeight = 480;
1465 1460
1466 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 1461 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
1467 float deviceScaleFactor = deviceScaleFactors[i]; 1462 float deviceScaleFactor = deviceScaleFactors[i];
1468 float deviceDpi = deviceScaleFactor * 160.0f; 1463 float deviceDpi = deviceScaleFactor * 160.0f;
1469 client.m_screenInfo.deviceScaleFactor = deviceScaleFactor; 1464 client.m_screenInfo.deviceScaleFactor = deviceScaleFactor;
1470 1465
1471 FrameTestHelpers::WebViewHelper webViewHelper; 1466 FrameTestHelpers::WebViewHelper webViewHelper;
1472 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- high.html", true, 0, &client); 1467 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- high.html", true, 0, &client);
1473 webViewHelper.webView()->enableFixedLayoutMode(true);
1474 webViewHelper.webView()->settings()->setViewportEnabled(true); 1468 webViewHelper.webView()->settings()->setViewportEnabled(true);
1475 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1469 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1476 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 1470 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
1477 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1471 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1478 1472
1479 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce 1473 // We need to account for the fact that logical pixels are unconditional ly multiplied by deviceScaleFactor to produce
1480 // physical pixels. 1474 // physical pixels.
1481 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi; 1475 float densityDpiScaleRatio = deviceScaleFactor * targetDpi / deviceDpi;
1482 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, webViewHelper.webView( )->fixedLayoutSize().width, 1.0f); 1476 EXPECT_NEAR(viewportWidth * densityDpiScaleRatio, webViewHelper.webViewI mpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
1483 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, webViewHelper.webView ()->fixedLayoutSize().height, 1.0f); 1477 EXPECT_NEAR(viewportHeight * densityDpiScaleRatio, webViewHelper.webView Impl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
1484 EXPECT_NEAR(1.0f / densityDpiScaleRatio, webViewHelper.webView()->pageSc aleFactor(), 0.01f); 1478 EXPECT_NEAR(1.0f / densityDpiScaleRatio, webViewHelper.webView()->pageSc aleFactor(), 0.01f);
1485 } 1479 }
1486 } 1480 }
1487 1481
1488 TEST_F(WebFrameTest, targetDensityDpiDevice) 1482 TEST_F(WebFrameTest, targetDensityDpiDevice)
1489 { 1483 {
1490 UseMockScrollbarSettings mockScrollbarSettings; 1484 UseMockScrollbarSettings mockScrollbarSettings;
1491 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html"); 1485 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html");
1492 1486
1493 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1487 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
1494 1488
1495 FixedLayoutTestWebViewClient client; 1489 FixedLayoutTestWebViewClient client;
1496 int viewportWidth = 640; 1490 int viewportWidth = 640;
1497 int viewportHeight = 480; 1491 int viewportHeight = 480;
1498 1492
1499 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 1493 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
1500 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 1494 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
1501 1495
1502 FrameTestHelpers::WebViewHelper webViewHelper; 1496 FrameTestHelpers::WebViewHelper webViewHelper;
1503 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device.html", true, 0, &client); 1497 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device.html", true, 0, &client);
1504 webViewHelper.webView()->enableFixedLayoutMode(true);
1505 webViewHelper.webView()->settings()->setViewportEnabled(true); 1498 webViewHelper.webView()->settings()->setViewportEnabled(true);
1506 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1499 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1507 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 1500 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
1508 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1501 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1509 1502
1510 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webVi ewHelper.webView()->fixedLayoutSize().width, 1.0f); 1503 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webVi ewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f );
1511 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webV iewHelper.webView()->fixedLayoutSize().height, 1.0f); 1504 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webV iewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1. 0f);
1512 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper. webView()->pageScaleFactor(), 0.01f); 1505 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper. webView()->pageScaleFactor(), 0.01f);
1513 } 1506 }
1514 } 1507 }
1515 1508
1516 TEST_F(WebFrameTest, targetDensityDpiDeviceAndFixedWidth) 1509 TEST_F(WebFrameTest, targetDensityDpiDeviceAndFixedWidth)
1517 { 1510 {
1518 UseMockScrollbarSettings mockScrollbarSettings; 1511 UseMockScrollbarSettings mockScrollbarSettings;
1519 registerMockedHttpURLLoad("viewport-target-densitydpi-device-and-fixed-width .html"); 1512 registerMockedHttpURLLoad("viewport-target-densitydpi-device-and-fixed-width .html");
1520 1513
1521 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; 1514 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f };
1522 1515
1523 FixedLayoutTestWebViewClient client; 1516 FixedLayoutTestWebViewClient client;
1524 int viewportWidth = 640; 1517 int viewportWidth = 640;
1525 int viewportHeight = 480; 1518 int viewportHeight = 480;
1526 1519
1527 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { 1520 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) {
1528 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; 1521 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i];
1529 1522
1530 FrameTestHelpers::WebViewHelper webViewHelper; 1523 FrameTestHelpers::WebViewHelper webViewHelper;
1531 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device-and-fixed-width.html", true, 0, &client); 1524 webViewHelper.initializeAndLoad(m_baseURL + "viewport-target-densitydpi- device-and-fixed-width.html", true, 0, &client);
1532 webViewHelper.webView()->enableFixedLayoutMode(true);
1533 webViewHelper.webView()->settings()->setViewportEnabled(true); 1525 webViewHelper.webView()->settings()->setViewportEnabled(true);
1534 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1526 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1535 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true); 1527 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDP I(true);
1536 webViewHelper.webView()->settings()->setUseWideViewport(true); 1528 webViewHelper.webView()->settings()->setUseWideViewport(true);
1537 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1529 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1538 1530
1539 EXPECT_NEAR(viewportWidth, webViewHelper.webView()->fixedLayoutSize().wi dth, 1.0f); 1531 EXPECT_NEAR(viewportWidth, webViewHelper.webViewImpl()->mainFrameImpl()- >frameView()->layoutSize().width(), 1.0f);
1540 EXPECT_NEAR(viewportHeight, webViewHelper.webView()->fixedLayoutSize().h eight, 1.0f); 1532 EXPECT_NEAR(viewportHeight, webViewHelper.webViewImpl()->mainFrameImpl() ->frameView()->layoutSize().height(), 1.0f);
1541 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f); 1533 EXPECT_NEAR(1.0f, webViewHelper.webView()->pageScaleFactor(), 0.01f);
1542 } 1534 }
1543 } 1535 }
1544 1536
1545 TEST_F(WebFrameTest, NoWideViewportAndScaleLessThanOne) 1537 TEST_F(WebFrameTest, NoWideViewportAndScaleLessThanOne)
1546 { 1538 {
1547 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1.html"); 1539 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1.html");
1548 1540
1549 FixedLayoutTestWebViewClient client; 1541 FixedLayoutTestWebViewClient client;
1550 client.m_screenInfo.deviceScaleFactor = 1.33f; 1542 client.m_screenInfo.deviceScaleFactor = 1.33f;
1551 int viewportWidth = 640; 1543 int viewportWidth = 640;
1552 int viewportHeight = 480; 1544 int viewportHeight = 480;
1553 1545
1554 FrameTestHelpers::WebViewHelper webViewHelper; 1546 FrameTestHelpers::WebViewHelper webViewHelper;
1555 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1.html", true, 0, &client); 1547 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1.html", true, 0, &client);
1556 webViewHelper.webView()->enableFixedLayoutMode(true);
1557 webViewHelper.webView()->settings()->setViewportEnabled(true); 1548 webViewHelper.webView()->settings()->setViewportEnabled(true);
1558 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 1549 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
1559 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1550 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1560 webViewHelper.webView()->settings()->setUseWideViewport(false); 1551 webViewHelper.webView()->settings()->setUseWideViewport(false);
1561 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1552 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1562 webViewHelper.webView()->layout(); 1553 webViewHelper.webView()->layout();
1563 1554
1564 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webView()->fixedLayoutSize().width, 1.0f); 1555 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor, webViewHe lper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width(), 1.0f);
1565 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webView()->fixedLayoutSize().height, 1.0f); 1556 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor, webViewH elper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().height(), 1.0f);
1566 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f); 1557 EXPECT_NEAR(1.0f / client.m_screenInfo.deviceScaleFactor, webViewHelper.webV iew()->pageScaleFactor(), 0.01f);
1567 } 1558 }
1568 1559
1569 TEST_F(WebFrameTest, NoWideViewportAndScaleLessThanOneWithDeviceWidth) 1560 TEST_F(WebFrameTest, NoWideViewportAndScaleLessThanOneWithDeviceWidth)
1570 { 1561 {
1571 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1-device-width.h tml"); 1562 registerMockedHttpURLLoad("viewport-initial-scale-less-than-1-device-width.h tml");
1572 1563
1573 FixedLayoutTestWebViewClient client; 1564 FixedLayoutTestWebViewClient client;
1574 client.m_screenInfo.deviceScaleFactor = 1.33f; 1565 client.m_screenInfo.deviceScaleFactor = 1.33f;
1575 int viewportWidth = 640; 1566 int viewportWidth = 640;
1576 int viewportHeight = 480; 1567 int viewportHeight = 480;
1577 1568
1578 FrameTestHelpers::WebViewHelper webViewHelper; 1569 FrameTestHelpers::WebViewHelper webViewHelper;
1579 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1-device-width.html", true, 0, &client); 1570 webViewHelper.initializeAndLoad(m_baseURL + "viewport-initial-scale-less-tha n-1-device-width.html", true, 0, &client);
1580 webViewHelper.webView()->enableFixedLayoutMode(true);
1581 webViewHelper.webView()->settings()->setViewportEnabled(true); 1571 webViewHelper.webView()->settings()->setViewportEnabled(true);
1582 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue); 1572 webViewHelper.webView()->settings()->setSupportDeprecatedTargetDensityDPI(tr ue);
1583 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true); 1573 webViewHelper.webView()->settings()->setWideViewportQuirkEnabled(true);
1584 webViewHelper.webView()->settings()->setUseWideViewport(false); 1574 webViewHelper.webView()->settings()->setUseWideViewport(false);
1585 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1575 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1586 webViewHelper.webView()->layout(); 1576 webViewHelper.webView()->layout();
1587 1577
1588 const float pageZoom = 0.25f; 1578 const float pageZoom = 0.25f;
1589 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor / pageZoom , webViewHelper.webView()->fixedLayoutSize().width, 1.0f); 1579 EXPECT_NEAR(viewportWidth * client.m_screenInfo.deviceScaleFactor / pageZoom , webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().width( ), 1.0f);
1590 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor / pageZoo m, webViewHelper.webView()->fixedLayoutSize().height, 1.0f); 1580 EXPECT_NEAR(viewportHeight * client.m_screenInfo.deviceScaleFactor / pageZoo m, webViewHelper.webViewImpl()->mainFrameImpl()->frameView()->layoutSize().heigh t(), 1.0f);
1591 EXPECT_NEAR(pageZoom * 1.0f / client.m_screenInfo.deviceScaleFactor, webView Helper.webView()->pageScaleFactor(), 0.01f); 1581 EXPECT_NEAR(pageZoom * 1.0f / client.m_screenInfo.deviceScaleFactor, webView Helper.webView()->pageScaleFactor(), 0.01f);
1592 } 1582 }
1593 1583
1594 class WebFrameResizeTest : public WebFrameTest { 1584 class WebFrameResizeTest : public WebFrameTest {
1595 protected: 1585 protected:
1596 1586
1597 static WebCore::FloatSize computeRelativeOffset(const WebCore::IntPoint& abs oluteOffset, const WebCore::LayoutRect& rect) 1587 static WebCore::FloatSize computeRelativeOffset(const WebCore::IntPoint& abs oluteOffset, const WebCore::LayoutRect& rect)
1598 { 1588 {
1599 WebCore::FloatSize relativeOffset = WebCore::FloatPoint(absoluteOffset) - rect.location(); 1589 WebCore::FloatSize relativeOffset = WebCore::FloatPoint(absoluteOffset) - rect.location();
1600 relativeOffset.scale(1.f / rect.width(), 1.f / rect.height()); 1590 relativeOffset.scale(1.f / rect.width(), 1.f / rect.height());
1601 return relativeOffset; 1591 return relativeOffset;
1602 } 1592 }
1603 1593
1604 void testResizeYieldsCorrectScrollAndScale(const char* url, 1594 void testResizeYieldsCorrectScrollAndScale(const char* url,
1605 const float initialPageScaleFacto r, 1595 const float initialPageScaleFacto r,
1606 const WebSize scrollOffset, 1596 const WebSize scrollOffset,
1607 const WebSize viewportSize, 1597 const WebSize viewportSize,
1608 const bool shouldScaleRelativeToV iewportWidth) { 1598 const bool shouldScaleRelativeToV iewportWidth) {
1599 UseMockScrollbarSettings mockScrollbarSettings;
1609 registerMockedHttpURLLoad(url); 1600 registerMockedHttpURLLoad(url);
1610 1601
1611 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp ortSize.height; 1602 const float aspectRatio = static_cast<float>(viewportSize.width) / viewp ortSize.height;
1612 1603
1613 FrameTestHelpers::WebViewHelper webViewHelper; 1604 FrameTestHelpers::WebViewHelper webViewHelper;
1614 webViewHelper.initializeAndLoad(m_baseURL + url, true); 1605 webViewHelper.initializeAndLoad(m_baseURL + url, true);
1615 webViewHelper.webView()->settings()->setViewportEnabled(true); 1606 webViewHelper.webView()->settings()->setViewportEnabled(true);
1616 webViewHelper.webView()->enableFixedLayoutMode(true);
1617 1607
1618 // Origin scrollOffsets preserved under resize. 1608 // Origin scrollOffsets preserved under resize.
1619 { 1609 {
1620 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view portSize.height)); 1610 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.width, view portSize.height));
1621 webViewHelper.webViewImpl()->setPageScaleFactor(initialPageScaleFact or, WebPoint()); 1611 webViewHelper.webViewImpl()->setPageScaleFactor(initialPageScaleFact or, WebPoint());
1622 ASSERT_EQ(viewportSize, webViewHelper.webViewImpl()->size()); 1612 ASSERT_EQ(viewportSize, webViewHelper.webViewImpl()->size());
1623 ASSERT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS caleFactor()); 1613 ASSERT_EQ(initialPageScaleFactor, webViewHelper.webViewImpl()->pageS caleFactor());
1624 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.height, vie wportSize.width)); 1614 webViewHelper.webViewImpl()->resize(WebSize(viewportSize.height, vie wportSize.width));
1625 float expectedPageScaleFactor = initialPageScaleFactor * (shouldScal eRelativeToViewportWidth ? 1 / aspectRatio : 1); 1615 float expectedPageScaleFactor = initialPageScaleFactor * (shouldScal eRelativeToViewportWidth ? 1 / aspectRatio : 1);
1626 EXPECT_NEAR(expectedPageScaleFactor, webViewHelper.webViewImpl()->pa geScaleFactor(), 0.05f); 1616 EXPECT_NEAR(expectedPageScaleFactor, webViewHelper.webViewImpl()->pa geScaleFactor(), 0.05f);
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1714 UseMockScrollbarSettings mockScrollbarSettings; 1704 UseMockScrollbarSettings mockScrollbarSettings;
1715 registerMockedHttpURLLoad("large-div.html"); 1705 registerMockedHttpURLLoad("large-div.html");
1716 1706
1717 FixedLayoutTestWebViewClient client; 1707 FixedLayoutTestWebViewClient client;
1718 client.m_screenInfo.deviceScaleFactor = 1; 1708 client.m_screenInfo.deviceScaleFactor = 1;
1719 int viewportWidth = 50; 1709 int viewportWidth = 50;
1720 int viewportHeight = 50; 1710 int viewportHeight = 50;
1721 1711
1722 FrameTestHelpers::WebViewHelper webViewHelper; 1712 FrameTestHelpers::WebViewHelper webViewHelper;
1723 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt); 1713 webViewHelper.initializeAndLoad(m_baseURL + "large-div.html", true, 0, &clie nt);
1724 webViewHelper.webView()->enableFixedLayoutMode(true);
1725 webViewHelper.webView()->settings()->setViewportEnabled(true); 1714 webViewHelper.webView()->settings()->setViewportEnabled(true);
1726 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1715 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1727 webViewHelper.webView()->layout(); 1716 webViewHelper.webView()->layout();
1728 1717
1729 // Set <1 page scale so that the clip rect should be larger than 1718 // Set <1 page scale so that the clip rect should be larger than
1730 // the viewport size as passed into resize(). 1719 // the viewport size as passed into resize().
1731 webViewHelper.webView()->setPageScaleFactor(0.5, WebPoint()); 1720 webViewHelper.webView()->setPageScaleFactor(0.5, WebPoint());
1732 1721
1733 SkBitmap bitmap; 1722 SkBitmap bitmap;
1734 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200); 1723 bitmap.setConfig(SkBitmap::kARGB_8888_Config, 200, 200);
(...skipping 21 matching lines...) Expand all
1756 UseMockScrollbarSettings mockScrollbarSettings; 1745 UseMockScrollbarSettings mockScrollbarSettings;
1757 registerMockedHttpURLLoad("fixed_layout.html"); 1746 registerMockedHttpURLLoad("fixed_layout.html");
1758 1747
1759 FixedLayoutTestWebViewClient client; 1748 FixedLayoutTestWebViewClient client;
1760 client.m_screenInfo.deviceScaleFactor = 1; 1749 client.m_screenInfo.deviceScaleFactor = 1;
1761 int viewportWidth = 640; 1750 int viewportWidth = 640;
1762 int viewportHeight = 480; 1751 int viewportHeight = 480;
1763 1752
1764 FrameTestHelpers::WebViewHelper webViewHelper; 1753 FrameTestHelpers::WebViewHelper webViewHelper;
1765 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient); 1754 webViewHelper.initializeAndLoad(m_baseURL + "fixed_layout.html", true, 0, &c lient);
1766 webViewHelper.webView()->enableFixedLayoutMode(true);
1767 webViewHelper.webView()->settings()->setViewportEnabled(true); 1755 webViewHelper.webView()->settings()->setViewportEnabled(true);
1768 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1756 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1769 webViewHelper.webView()->layout(); 1757 webViewHelper.webView()->layout();
1770 1758
1771 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView(); 1759 WebCore::FrameView* view = webViewHelper.webViewImpl()->mainFrameImpl()->fra meView();
1772 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width()); 1760 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width());
1773 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height()); 1761 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height());
1774 1762
1775 webViewHelper.webView()->setPageScaleFactor(10, WebPoint()); 1763 webViewHelper.webView()->setPageScaleFactor(10, WebPoint());
1776 1764
1777 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width()); 1765 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize ().width() - view->visibleContentRect().width());
1778 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height()); 1766 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize() .height() - view->visibleContentRect().height());
1779 } 1767 }
1780 1768
1781 TEST_F(WebFrameTest, CanOverrideScaleLimits) 1769 TEST_F(WebFrameTest, CanOverrideScaleLimits)
1782 { 1770 {
1783 UseMockScrollbarSettings mockScrollbarSettings; 1771 UseMockScrollbarSettings mockScrollbarSettings;
1784 1772
1785 registerMockedHttpURLLoad("no_scale_for_you.html"); 1773 registerMockedHttpURLLoad("no_scale_for_you.html");
1786 1774
1787 FixedLayoutTestWebViewClient client; 1775 FixedLayoutTestWebViewClient client;
1788 client.m_screenInfo.deviceScaleFactor = 1; 1776 client.m_screenInfo.deviceScaleFactor = 1;
1789 int viewportWidth = 640; 1777 int viewportWidth = 640;
1790 int viewportHeight = 480; 1778 int viewportHeight = 480;
1791 1779
1792 FrameTestHelpers::WebViewHelper webViewHelper; 1780 FrameTestHelpers::WebViewHelper webViewHelper;
1793 webViewHelper.initializeAndLoad(m_baseURL + "no_scale_for_you.html", true, 0 , &client); 1781 webViewHelper.initializeAndLoad(m_baseURL + "no_scale_for_you.html", true, 0 , &client);
1794 webViewHelper.webView()->enableFixedLayoutMode(true);
1795 webViewHelper.webView()->settings()->setViewportEnabled(true); 1782 webViewHelper.webView()->settings()->setViewportEnabled(true);
1796 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1783 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1797 1784
1798 EXPECT_EQ(2.0f, webViewHelper.webView()->minimumPageScaleFactor()); 1785 EXPECT_EQ(2.0f, webViewHelper.webView()->minimumPageScaleFactor());
1799 EXPECT_EQ(2.0f, webViewHelper.webView()->maximumPageScaleFactor()); 1786 EXPECT_EQ(2.0f, webViewHelper.webView()->maximumPageScaleFactor());
1800 1787
1801 webViewHelper.webView()->setIgnoreViewportTagScaleLimits(true); 1788 webViewHelper.webView()->setIgnoreViewportTagScaleLimits(true);
1802 webViewHelper.webView()->layout(); 1789 webViewHelper.webView()->layout();
1803 1790
1804 EXPECT_EQ(1.0f, webViewHelper.webView()->minimumPageScaleFactor()); 1791 EXPECT_EQ(1.0f, webViewHelper.webView()->minimumPageScaleFactor());
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1852 const float deviceScaleFactor = 2.0f; 1839 const float deviceScaleFactor = 2.0f;
1853 int viewportWidth = 640 / deviceScaleFactor; 1840 int viewportWidth = 640 / deviceScaleFactor;
1854 int viewportHeight = 1280 / deviceScaleFactor; 1841 int viewportHeight = 1280 / deviceScaleFactor;
1855 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1842 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1856 FrameTestHelpers::WebViewHelper webViewHelper; 1843 FrameTestHelpers::WebViewHelper webViewHelper;
1857 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_di v_test.html"); 1844 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_auto_zoom_into_di v_test.html");
1858 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 1845 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
1859 webViewHelper.webView()->setPageScaleFactorLimits(0.01f, 4); 1846 webViewHelper.webView()->setPageScaleFactorLimits(0.01f, 4);
1860 webViewHelper.webView()->setPageScaleFactor(0.5f, WebPoint(0, 0)); 1847 webViewHelper.webView()->setPageScaleFactor(0.5f, WebPoint(0, 0));
1861 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1848 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1862 webViewHelper.webView()->enableFixedLayoutMode(true);
1863 webViewHelper.webView()->layout(); 1849 webViewHelper.webView()->layout();
1864 1850
1865 WebRect wideDiv(200, 100, 400, 150); 1851 WebRect wideDiv(200, 100, 400, 150);
1866 WebRect tallDiv(200, 300, 400, 800); 1852 WebRect tallDiv(200, 300, 400, 800);
1867 WebRect doubleTapPointWide(wideDiv.x + 50, wideDiv.y + 50, touchPointPadding , touchPointPadding); 1853 WebRect doubleTapPointWide(wideDiv.x + 50, wideDiv.y + 50, touchPointPadding , touchPointPadding);
1868 WebRect doubleTapPointTall(tallDiv.x + 50, tallDiv.y + 50, touchPointPadding , touchPointPadding); 1854 WebRect doubleTapPointTall(tallDiv.x + 50, tallDiv.y + 50, touchPointPadding , touchPointPadding);
1869 WebRect wideBlockBounds; 1855 WebRect wideBlockBounds;
1870 WebRect tallBlockBounds; 1856 WebRect tallBlockBounds;
1871 float scale; 1857 float scale;
1872 WebPoint scroll; 1858 WebPoint scroll;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1929 TEST_F(WebFrameTest, DivAutoZoomWideDivTest) 1915 TEST_F(WebFrameTest, DivAutoZoomWideDivTest)
1930 { 1916 {
1931 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html"); 1917 registerMockedHttpURLLoad("get_wide_div_for_auto_zoom_test.html");
1932 1918
1933 const float deviceScaleFactor = 2.0f; 1919 const float deviceScaleFactor = 2.0f;
1934 int viewportWidth = 640 / deviceScaleFactor; 1920 int viewportWidth = 640 / deviceScaleFactor;
1935 int viewportHeight = 1280 / deviceScaleFactor; 1921 int viewportHeight = 1280 / deviceScaleFactor;
1936 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1922 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1937 FrameTestHelpers::WebViewHelper webViewHelper; 1923 FrameTestHelpers::WebViewHelper webViewHelper;
1938 webViewHelper.initializeAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test .html"); 1924 webViewHelper.initializeAndLoad(m_baseURL + "get_wide_div_for_auto_zoom_test .html");
1939 webViewHelper.webView()->enableFixedLayoutMode(true);
1940 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1925 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1941 webViewHelper.webView()->setPageScaleFactorLimits(1.0f, 4); 1926 webViewHelper.webView()->setPageScaleFactorLimits(1.0f, 4);
1942 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 1927 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
1943 webViewHelper.webView()->setPageScaleFactor(1.0f, WebPoint(0, 0)); 1928 webViewHelper.webView()->setPageScaleFactor(1.0f, WebPoint(0, 0));
1944 webViewHelper.webView()->layout(); 1929 webViewHelper.webView()->layout();
1945 1930
1946 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1931 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
1947 1932
1948 float doubleTapZoomAlreadyLegibleScale = webViewHelper.webViewImpl()->minimu mPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio; 1933 float doubleTapZoomAlreadyLegibleScale = webViewHelper.webViewImpl()->minimu mPageScaleFactor() * doubleTapZoomAlreadyLegibleRatio;
1949 1934
(...skipping 13 matching lines...) Expand all
1963 // When a block is taller than the viewport and a zoom targets a lower part 1948 // When a block is taller than the viewport and a zoom targets a lower part
1964 // of it, then we should keep the target point onscreen instead of snapping 1949 // of it, then we should keep the target point onscreen instead of snapping
1965 // back up the top of the block. 1950 // back up the top of the block.
1966 registerMockedHttpURLLoad("very_tall_div.html"); 1951 registerMockedHttpURLLoad("very_tall_div.html");
1967 1952
1968 const float deviceScaleFactor = 2.0f; 1953 const float deviceScaleFactor = 2.0f;
1969 int viewportWidth = 640 / deviceScaleFactor; 1954 int viewportWidth = 640 / deviceScaleFactor;
1970 int viewportHeight = 1280 / deviceScaleFactor; 1955 int viewportHeight = 1280 / deviceScaleFactor;
1971 FrameTestHelpers::WebViewHelper webViewHelper; 1956 FrameTestHelpers::WebViewHelper webViewHelper;
1972 webViewHelper.initializeAndLoad(m_baseURL + "very_tall_div.html"); 1957 webViewHelper.initializeAndLoad(m_baseURL + "very_tall_div.html");
1973 webViewHelper.webView()->enableFixedLayoutMode(true); 1958 webViewHelper.webView()->settings()->setViewportEnabled(true);
1974 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1959 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
1975 webViewHelper.webView()->setPageScaleFactorLimits(1.0f, 4); 1960 webViewHelper.webView()->setPageScaleFactorLimits(1.0f, 4);
1976 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 1961 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
1977 webViewHelper.webView()->setPageScaleFactor(1.0f, WebPoint(0, 0)); 1962 webViewHelper.webView()->setPageScaleFactor(1.0f, WebPoint(0, 0));
1978 webViewHelper.webView()->layout(); 1963 webViewHelper.webView()->layout();
1979 1964
1980 WebRect div(200, 300, 400, 5000); 1965 WebRect div(200, 300, 400, 5000);
1981 WebPoint point(div.x + 50, div.y + 3000); 1966 WebPoint point(div.x + 50, div.y + 3000);
1982 float scale; 1967 float scale;
1983 WebPoint scroll; 1968 WebPoint scroll;
1984 1969
1985 WebRect blockBounds = webViewHelper.webViewImpl()->computeBlockBounds(WebRec t(point.x, point.y, 0, 0), true); 1970 WebRect blockBounds = webViewHelper.webViewImpl()->computeBlockBounds(WebRec t(point.x, point.y, 0, 0), true);
1986 webViewHelper.webViewImpl()->computeScaleAndScrollForBlockRect(point, blockB ounds, 0, 1.0f, scale, scroll); 1971 webViewHelper.webViewImpl()->computeScaleAndScrollForBlockRect(point, blockB ounds, 0, 1.0f, scale, scroll);
1987 EXPECT_EQ(scale, 1.0f); 1972 EXPECT_EQ(scale, 1.0f);
1988 EXPECT_EQ(scroll.y, 2660); 1973 EXPECT_EQ(scroll.y, 2660);
1989 } 1974 }
1990 1975
1991 TEST_F(WebFrameTest, DivAutoZoomMultipleDivsTest) 1976 TEST_F(WebFrameTest, DivAutoZoomMultipleDivsTest)
1992 { 1977 {
1993 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html"); 1978 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
1994 1979
1995 const float deviceScaleFactor = 2.0f; 1980 const float deviceScaleFactor = 2.0f;
1996 int viewportWidth = 640 / deviceScaleFactor; 1981 int viewportWidth = 640 / deviceScaleFactor;
1997 int viewportHeight = 1280 / deviceScaleFactor; 1982 int viewportHeight = 1280 / deviceScaleFactor;
1998 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 1983 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
1999 FrameTestHelpers::WebViewHelper webViewHelper; 1984 FrameTestHelpers::WebViewHelper webViewHelper;
2000 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html"); 1985 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html");
2001 webViewHelper.webView()->enableFixedLayoutMode(true);
2002 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 1986 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2003 webViewHelper.webView()->setPageScaleFactorLimits(0.5f, 4); 1987 webViewHelper.webView()->setPageScaleFactorLimits(0.5f, 4);
2004 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 1988 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2005 webViewHelper.webView()->setPageScaleFactor(0.5f, WebPoint(0, 0)); 1989 webViewHelper.webView()->setPageScaleFactor(0.5f, WebPoint(0, 0));
2006 webViewHelper.webView()->layout(); 1990 webViewHelper.webView()->layout();
2007 1991
2008 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 1992 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
2009 1993
2010 WebRect topDiv(200, 100, 200, 150); 1994 WebRect topDiv(200, 100, 200, 150);
2011 WebRect bottomDiv(200, 300, 200, 150); 1995 WebRect bottomDiv(200, 300, 200, 150);
(...skipping 28 matching lines...) Expand all
2040 2024
2041 TEST_F(WebFrameTest, DivAutoZoomScaleBoundsTest) 2025 TEST_F(WebFrameTest, DivAutoZoomScaleBoundsTest)
2042 { 2026 {
2043 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html"); 2027 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html");
2044 2028
2045 int viewportWidth = 320; 2029 int viewportWidth = 320;
2046 int viewportHeight = 480; 2030 int viewportHeight = 480;
2047 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2031 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2048 FrameTestHelpers::WebViewHelper webViewHelper; 2032 FrameTestHelpers::WebViewHelper webViewHelper;
2049 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_bounds_check_for_auto _zoom_test.html"); 2033 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_bounds_check_for_auto _zoom_test.html");
2050 webViewHelper.webView()->enableFixedLayoutMode(true);
2051 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2034 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2052 webViewHelper.webView()->setDeviceScaleFactor(1.5f); 2035 webViewHelper.webView()->setDeviceScaleFactor(1.5f);
2053 webViewHelper.webView()->layout(); 2036 webViewHelper.webView()->layout();
2054 2037
2055 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 2038 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
2056 2039
2057 WebRect div(200, 100, 200, 150); 2040 WebRect div(200, 100, 200, 150);
2058 WebPoint doubleTapPoint(div.x + 50, div.y + 50); 2041 WebPoint doubleTapPoint(div.x + 50, div.y + 50);
2059 float scale; 2042 float scale;
2060 2043
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
2103 TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest) 2086 TEST_F(WebFrameTest, DivAutoZoomScaleFontScaleFactorTest)
2104 { 2087 {
2105 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html"); 2088 registerMockedHttpURLLoad("get_scale_bounds_check_for_auto_zoom_test.html");
2106 2089
2107 int viewportWidth = 320; 2090 int viewportWidth = 320;
2108 int viewportHeight = 480; 2091 int viewportHeight = 480;
2109 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2092 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2110 float textAutosizingFontScaleFactor = 1.13f; 2093 float textAutosizingFontScaleFactor = 1.13f;
2111 FrameTestHelpers::WebViewHelper webViewHelper; 2094 FrameTestHelpers::WebViewHelper webViewHelper;
2112 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_bounds_check_for_auto _zoom_test.html"); 2095 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_bounds_check_for_auto _zoom_test.html");
2113 webViewHelper.webView()->enableFixedLayoutMode(true);
2114 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2096 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2115 webViewHelper.webView()->layout(); 2097 webViewHelper.webView()->layout();
2116 2098
2117 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 2099 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
2118 webViewHelper.webViewImpl()->page()->settings().setTextAutosizingEnabled(tru e); 2100 webViewHelper.webViewImpl()->page()->settings().setTextAutosizingEnabled(tru e);
2119 webViewHelper.webViewImpl()->page()->settings().setTextAutosizingFontScaleFa ctor(textAutosizingFontScaleFactor); 2101 webViewHelper.webViewImpl()->page()->settings().setTextAutosizingFontScaleFa ctor(textAutosizingFontScaleFactor);
2120 2102
2121 WebRect div(200, 100, 200, 150); 2103 WebRect div(200, 100, 200, 150);
2122 WebPoint doubleTapPoint(div.x + 50, div.y + 50); 2104 WebPoint doubleTapPoint(div.x + 50, div.y + 50);
2123 float scale; 2105 float scale;
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
2182 TEST_F(WebFrameTest, DivMultipleTargetZoomMultipleDivsTest) 2164 TEST_F(WebFrameTest, DivMultipleTargetZoomMultipleDivsTest)
2183 { 2165 {
2184 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html"); 2166 registerMockedHttpURLLoad("get_multiple_divs_for_auto_zoom_test.html");
2185 2167
2186 const float deviceScaleFactor = 2.0f; 2168 const float deviceScaleFactor = 2.0f;
2187 int viewportWidth = 640 / deviceScaleFactor; 2169 int viewportWidth = 640 / deviceScaleFactor;
2188 int viewportHeight = 1280 / deviceScaleFactor; 2170 int viewportHeight = 1280 / deviceScaleFactor;
2189 float doubleTapZoomAlreadyLegibleRatio = 1.2f; 2171 float doubleTapZoomAlreadyLegibleRatio = 1.2f;
2190 FrameTestHelpers::WebViewHelper webViewHelper; 2172 FrameTestHelpers::WebViewHelper webViewHelper;
2191 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html"); 2173 webViewHelper.initializeAndLoad(m_baseURL + "get_multiple_divs_for_auto_zoom _test.html");
2192 webViewHelper.webView()->enableFixedLayoutMode(true);
2193 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2174 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2194 webViewHelper.webView()->setPageScaleFactorLimits(0.5f, 4); 2175 webViewHelper.webView()->setPageScaleFactorLimits(0.5f, 4);
2195 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor); 2176 webViewHelper.webView()->setDeviceScaleFactor(deviceScaleFactor);
2196 webViewHelper.webView()->setPageScaleFactor(0.5f, WebPoint(0, 0)); 2177 webViewHelper.webView()->setPageScaleFactor(0.5f, WebPoint(0, 0));
2197 webViewHelper.webView()->layout(); 2178 webViewHelper.webView()->layout();
2198 2179
2199 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 2180 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
2200 2181
2201 WebRect viewportRect(0, 0, viewportWidth, viewportHeight); 2182 WebRect viewportRect(0, 0, viewportWidth, viewportHeight);
2202 WebRect topDiv(200, 100, 200, 150); 2183 WebRect topDiv(200, 100, 200, 150);
(...skipping 16 matching lines...) Expand all
2219 { 2200 {
2220 registerMockedHttpURLLoad("get_scale_for_zoom_into_editable_test.html"); 2201 registerMockedHttpURLLoad("get_scale_for_zoom_into_editable_test.html");
2221 2202
2222 int viewportWidth = 450; 2203 int viewportWidth = 450;
2223 int viewportHeight = 300; 2204 int viewportHeight = 300;
2224 float leftBoxRatio = 0.3f; 2205 float leftBoxRatio = 0.3f;
2225 int caretPadding = 10; 2206 int caretPadding = 10;
2226 float minReadableCaretHeight = 18.0f; 2207 float minReadableCaretHeight = 18.0f;
2227 FrameTestHelpers::WebViewHelper webViewHelper; 2208 FrameTestHelpers::WebViewHelper webViewHelper;
2228 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_zoom_into_editabl e_test.html"); 2209 webViewHelper.initializeAndLoad(m_baseURL + "get_scale_for_zoom_into_editabl e_test.html");
2229 webViewHelper.webView()->enableFixedLayoutMode(true);
2230 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); 2210 webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight));
2231 webViewHelper.webView()->setPageScaleFactorLimits(1, 4); 2211 webViewHelper.webView()->setPageScaleFactorLimits(1, 4);
2232 webViewHelper.webView()->layout(); 2212 webViewHelper.webView()->layout();
2233 webViewHelper.webView()->setDeviceScaleFactor(1.5f); 2213 webViewHelper.webView()->setDeviceScaleFactor(1.5f);
2234 webViewHelper.webView()->settings()->setAutoZoomFocusedNodeToLegibleScale(tr ue); 2214 webViewHelper.webView()->settings()->setAutoZoomFocusedNodeToLegibleScale(tr ue);
2235 2215
2236 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true); 2216 webViewHelper.webViewImpl()->enableFakePageScaleAnimationForTesting(true);
2237 2217
2238 WebRect editBoxWithText(200, 200, 250, 20); 2218 WebRect editBoxWithText(200, 200, 250, 20);
2239 WebRect editBoxWithNoText(200, 250, 250, 20); 2219 WebRect editBoxWithNoText(200, 250, 250, 20);
(...skipping 1268 matching lines...) Expand 10 before | Expand all | Expand 10 after
3508 webViewHelper.webView()->resize(WebSize(1000, 1000)); 3488 webViewHelper.webView()->resize(WebSize(1000, 1000));
3509 webViewHelper.webView()->layout(); 3489 webViewHelper.webView()->layout();
3510 3490
3511 client.resetTriggered(); 3491 client.resetTriggered();
3512 webViewHelper.webView()->handleInputEvent(fatTap(50, 50)); 3492 webViewHelper.webView()->handleInputEvent(fatTap(50, 50));
3513 EXPECT_FALSE(client.triggered()); 3493 EXPECT_FALSE(client.triggered());
3514 } 3494 }
3515 3495
3516 TEST_F(WebFrameTest, DisambiguationPopupMobileSite) 3496 TEST_F(WebFrameTest, DisambiguationPopupMobileSite)
3517 { 3497 {
3498 UseMockScrollbarSettings mockScrollbarSettings;
3518 const std::string htmlFile = "disambiguation_popup_mobile_site.html"; 3499 const std::string htmlFile = "disambiguation_popup_mobile_site.html";
3519 registerMockedHttpURLLoad(htmlFile); 3500 registerMockedHttpURLLoad(htmlFile);
3520 3501
3521 DisambiguationPopupTestWebViewClient client; 3502 DisambiguationPopupTestWebViewClient client;
3522 3503
3523 // Make sure we initialize to minimum scale, even if the window size 3504 // Make sure we initialize to minimum scale, even if the window size
3524 // only becomes available after the load begins. 3505 // only becomes available after the load begins.
3525 FrameTestHelpers::WebViewHelper webViewHelper; 3506 FrameTestHelpers::WebViewHelper webViewHelper;
3526 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client); 3507 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client);
3527 webViewHelper.webView()->enableFixedLayoutMode(true);
3528 webViewHelper.webView()->settings()->setViewportEnabled(true); 3508 webViewHelper.webView()->settings()->setViewportEnabled(true);
3529 webViewHelper.webView()->resize(WebSize(1000, 1000)); 3509 webViewHelper.webView()->resize(WebSize(1000, 1000));
3530 webViewHelper.webView()->layout(); 3510 webViewHelper.webView()->layout();
3531 3511
3532 client.resetTriggered(); 3512 client.resetTriggered();
3533 webViewHelper.webView()->handleInputEvent(fatTap(0, 0)); 3513 webViewHelper.webView()->handleInputEvent(fatTap(0, 0));
3534 EXPECT_FALSE(client.triggered()); 3514 EXPECT_FALSE(client.triggered());
3535 3515
3536 client.resetTriggered(); 3516 client.resetTriggered();
3537 webViewHelper.webView()->handleInputEvent(fatTap(200, 115)); 3517 webViewHelper.webView()->handleInputEvent(fatTap(200, 115));
3538 EXPECT_FALSE(client.triggered()); 3518 EXPECT_FALSE(client.triggered());
3539 3519
3540 for (int i = 0; i <= 46; i++) { 3520 for (int i = 0; i <= 46; i++) {
3541 client.resetTriggered(); 3521 client.resetTriggered();
3542 webViewHelper.webView()->handleInputEvent(fatTap(120, 230 + i * 5)); 3522 webViewHelper.webView()->handleInputEvent(fatTap(120, 230 + i * 5));
3543 EXPECT_FALSE(client.triggered()); 3523 EXPECT_FALSE(client.triggered());
3544 } 3524 }
3545 3525
3546 for (int i = 0; i <= 46; i++) { 3526 for (int i = 0; i <= 46; i++) {
3547 client.resetTriggered(); 3527 client.resetTriggered();
3548 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590)); 3528 webViewHelper.webView()->handleInputEvent(fatTap(10 + i * 5, 590));
3549 EXPECT_FALSE(client.triggered()); 3529 EXPECT_FALSE(client.triggered());
3550 } 3530 }
3551 } 3531 }
3552 3532
3553 TEST_F(WebFrameTest, DisambiguationPopupViewportSite) 3533 TEST_F(WebFrameTest, DisambiguationPopupViewportSite)
3554 { 3534 {
3535 UseMockScrollbarSettings mockScrollbarSettings;
3555 const std::string htmlFile = "disambiguation_popup_viewport_site.html"; 3536 const std::string htmlFile = "disambiguation_popup_viewport_site.html";
3556 registerMockedHttpURLLoad(htmlFile); 3537 registerMockedHttpURLLoad(htmlFile);
3557 3538
3558 DisambiguationPopupTestWebViewClient client; 3539 DisambiguationPopupTestWebViewClient client;
3559 3540
3560 // Make sure we initialize to minimum scale, even if the window size 3541 // Make sure we initialize to minimum scale, even if the window size
3561 // only becomes available after the load begins. 3542 // only becomes available after the load begins.
3562 FrameTestHelpers::WebViewHelper webViewHelper; 3543 FrameTestHelpers::WebViewHelper webViewHelper;
3563 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client); 3544 webViewHelper.initializeAndLoad(m_baseURL + htmlFile, true, 0, &client);
3564 webViewHelper.webView()->enableFixedLayoutMode(true);
3565 webViewHelper.webView()->settings()->setViewportEnabled(true); 3545 webViewHelper.webView()->settings()->setViewportEnabled(true);
3566 webViewHelper.webView()->resize(WebSize(1000, 1000)); 3546 webViewHelper.webView()->resize(WebSize(1000, 1000));
3567 webViewHelper.webView()->layout(); 3547 webViewHelper.webView()->layout();
3568 3548
3569 client.resetTriggered(); 3549 client.resetTriggered();
3570 webViewHelper.webView()->handleInputEvent(fatTap(0, 0)); 3550 webViewHelper.webView()->handleInputEvent(fatTap(0, 0));
3571 EXPECT_FALSE(client.triggered()); 3551 EXPECT_FALSE(client.triggered());
3572 3552
3573 client.resetTriggered(); 3553 client.resetTriggered();
3574 webViewHelper.webView()->handleInputEvent(fatTap(200, 115)); 3554 webViewHelper.webView()->handleInputEvent(fatTap(200, 115));
(...skipping 960 matching lines...) Expand 10 before | Expand all | Expand 10 after
4535 4515
4536 FrameTestHelpers::loadFrame(frame, 4516 FrameTestHelpers::loadFrame(frame,
4537 "javascript:window.frames[1].location.assign('" + m_baseURL + "find.html ')"); 4517 "javascript:window.frames[1].location.assign('" + m_baseURL + "find.html ')");
4538 runPendingTasks(); 4518 runPendingTasks();
4539 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests(); 4519 Platform::current()->unitTestSupport()->serveAsynchronousMockedRequests();
4540 EXPECT_EQ(client.frame(), iframe); 4520 EXPECT_EQ(client.frame(), iframe);
4541 EXPECT_FALSE(client.replacesCurrentHistoryItem()); 4521 EXPECT_FALSE(client.replacesCurrentHistoryItem());
4542 } 4522 }
4543 4523
4544 } // namespace 4524 } // namespace
OLDNEW
« no previous file with comments | « Source/web/tests/ScrollAnimatorNoneTest.cpp ('k') | Source/web/tests/WebInputEventConversionTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698