OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |