Home | History | Annotate | Download | only in tests
      1 /*
      2  * Copyright (C) 2013 Google Inc. All rights reserved.
      3  *
      4  * Redistribution and use in source and binary forms, with or without
      5  * modification, are permitted provided that the following conditions are
      6  * met:
      7  *
      8  *     * Redistributions of source code must retain the above copyright
      9  * notice, this list of conditions and the following disclaimer.
     10  *     * Redistributions in binary form must reproduce the above
     11  * copyright notice, this list of conditions and the following disclaimer
     12  * in the documentation and/or other materials provided with the
     13  * distribution.
     14  *     * Neither the name of Google Inc. nor the names of its
     15  * contributors may be used to endorse or promote products derived from
     16  * this software without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     19  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     20  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     21  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     22  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     23  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     24  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     28  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29  */
     30 
     31 #include "config.h"
     32 
     33 #include "core/frame/FrameView.h"
     34 #include "core/frame/LocalFrame.h"
     35 #include "core/frame/Settings.h"
     36 #include "core/page/InjectedStyleSheets.h"
     37 #include "core/page/Page.h"
     38 #include "core/page/PageScaleConstraints.h"
     39 #include "platform/Length.h"
     40 #include "platform/geometry/IntPoint.h"
     41 #include "platform/geometry/IntRect.h"
     42 #include "platform/geometry/IntSize.h"
     43 #include "platform/scroll/ScrollbarTheme.h"
     44 #include "public/platform/Platform.h"
     45 #include "public/platform/WebUnitTestSupport.h"
     46 #include "public/web/WebConsoleMessage.h"
     47 #include "public/web/WebFrame.h"
     48 #include "public/web/WebScriptSource.h"
     49 #include "public/web/WebSettings.h"
     50 #include "public/web/WebViewClient.h"
     51 #include "web/tests/FrameTestHelpers.h"
     52 #include "web/tests/URLTestHelpers.h"
     53 #include <gmock/gmock.h>
     54 #include <gtest/gtest.h>
     55 
     56 #include <vector>
     57 
     58 using namespace blink;
     59 using WebCore::LocalFrame;
     60 using WebCore::FrameView;
     61 using WebCore::IntPoint;
     62 using WebCore::IntRect;
     63 using WebCore::IntSize;
     64 using WebCore::Page;
     65 using WebCore::PageScaleConstraints;
     66 using WebCore::ViewportDescription;
     67 using blink::FrameTestHelpers::runPendingTasks;
     68 
     69 namespace {
     70 
     71 class ViewportTest : public testing::Test {
     72 protected:
     73     ViewportTest()
     74         : m_baseURL("http://www.test.com/")
     75         , m_chromeURL("chrome://")
     76     {
     77     }
     78 
     79     virtual ~ViewportTest()
     80     {
     81         Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
     82     }
     83 
     84     void registerMockedHttpURLLoad(const std::string& fileName)
     85     {
     86         URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8(fileName.c_str()));
     87     }
     88 
     89     void registerMockedChromeURLLoad(const std::string& fileName)
     90     {
     91         URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_chromeURL.c_str()), WebString::fromUTF8(fileName.c_str()));
     92     }
     93 
     94     void executeScript(WebFrame* frame, const WebString& code)
     95     {
     96         frame->executeScript(WebScriptSource(code));
     97         runPendingTasks();
     98     }
     99 
    100     std::string m_baseURL;
    101     std::string m_chromeURL;
    102 };
    103 
    104 class UseMockScrollbarSettings {
    105 public:
    106     UseMockScrollbarSettings()
    107     {
    108         WebCore::Settings::setMockScrollbarsEnabled(true);
    109         WebCore::RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true);
    110         EXPECT_TRUE(WebCore::ScrollbarTheme::theme()->usesOverlayScrollbars());
    111     }
    112 
    113     ~UseMockScrollbarSettings()
    114     {
    115         WebCore::Settings::setMockScrollbarsEnabled(false);
    116         WebCore::RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(false);
    117     }
    118 };
    119 
    120 static void setViewportSettings(WebSettings* settings)
    121 {
    122     settings->setViewportEnabled(true);
    123     settings->setViewportMetaEnabled(true);
    124     settings->setMainFrameResizesAreOrientationChanges(true);
    125 }
    126 
    127 static PageScaleConstraints runViewportTest(Page* page, int initialWidth, int initialHeight)
    128 {
    129     IntSize initialViewportSize(initialWidth, initialHeight);
    130     toLocalFrame(page->mainFrame())->view()->setFrameRect(IntRect(IntPoint::zero(), initialViewportSize));
    131     ViewportDescription description = page->viewportDescription();
    132     PageScaleConstraints constraints = description.resolve(initialViewportSize, WebCore::Length(980, WebCore::Fixed));
    133 
    134     constraints.fitToContentsWidth(constraints.layoutSize.width(), initialWidth);
    135     return constraints;
    136 }
    137 
    138 TEST_F(ViewportTest, viewport1)
    139 {
    140     UseMockScrollbarSettings mockScrollbarSettings;
    141     registerMockedHttpURLLoad("viewport/viewport-1.html");
    142 
    143     FrameTestHelpers::WebViewHelper webViewHelper;
    144     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-1.html", true, 0, 0, setViewportSettings);
    145 
    146     Page* page = webViewHelper.webViewImpl()->page();
    147     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    148 
    149     EXPECT_EQ(320, constraints.layoutSize.width());
    150     EXPECT_EQ(352, constraints.layoutSize.height());
    151     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
    152     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    153     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    154     EXPECT_TRUE(page->viewportDescription().userZoom);
    155 }
    156 
    157 TEST_F(ViewportTest, viewport2)
    158 {
    159     UseMockScrollbarSettings mockScrollbarSettings;
    160     registerMockedHttpURLLoad("viewport/viewport-2.html");
    161 
    162     FrameTestHelpers::WebViewHelper webViewHelper;
    163     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-2.html", true, 0, 0, setViewportSettings);
    164 
    165     Page* page = webViewHelper.webViewImpl()->page();
    166     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    167 
    168     EXPECT_EQ(980, constraints.layoutSize.width());
    169     EXPECT_EQ(352, constraints.layoutSize.height());
    170     EXPECT_NEAR(0.32f, constraints.initialScale, 0.01f);
    171     EXPECT_NEAR(0.32f, constraints.minimumScale, 0.01f);
    172     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    173     EXPECT_TRUE(page->viewportDescription().userZoom);
    174 }
    175 
    176 TEST_F(ViewportTest, viewport3)
    177 {
    178     UseMockScrollbarSettings mockScrollbarSettings;
    179     registerMockedHttpURLLoad("viewport/viewport-3.html");
    180 
    181     FrameTestHelpers::WebViewHelper webViewHelper;
    182     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-3.html", true, 0, 0, setViewportSettings);
    183 
    184     Page* page = webViewHelper.webViewImpl()->page();
    185     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    186 
    187     EXPECT_EQ(320, constraints.layoutSize.width());
    188     EXPECT_EQ(352, constraints.layoutSize.height());
    189     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
    190     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    191     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    192     EXPECT_TRUE(page->viewportDescription().userZoom);
    193 }
    194 
    195 TEST_F(ViewportTest, viewport4)
    196 {
    197     UseMockScrollbarSettings mockScrollbarSettings;
    198     registerMockedHttpURLLoad("viewport/viewport-4.html");
    199 
    200     FrameTestHelpers::WebViewHelper webViewHelper;
    201     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-4.html", true, 0, 0, setViewportSettings);
    202 
    203     Page* page = webViewHelper.webViewImpl()->page();
    204     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    205 
    206     EXPECT_EQ(160, constraints.layoutSize.width());
    207     EXPECT_EQ(176, constraints.layoutSize.height());
    208     EXPECT_NEAR(2.0f, constraints.initialScale, 0.01f);
    209     EXPECT_NEAR(2.0f, constraints.minimumScale, 0.01f);
    210     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    211     EXPECT_TRUE(page->viewportDescription().userZoom);
    212 }
    213 
    214 TEST_F(ViewportTest, viewport5)
    215 {
    216     UseMockScrollbarSettings mockScrollbarSettings;
    217     registerMockedHttpURLLoad("viewport/viewport-5.html");
    218 
    219     FrameTestHelpers::WebViewHelper webViewHelper;
    220     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-5.html", true, 0, 0, setViewportSettings);
    221 
    222     Page* page = webViewHelper.webViewImpl()->page();
    223     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    224 
    225     EXPECT_EQ(640, constraints.layoutSize.width());
    226     EXPECT_EQ(704, constraints.layoutSize.height());
    227     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
    228     EXPECT_NEAR(0.5f, constraints.minimumScale, 0.01f);
    229     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    230     EXPECT_TRUE(page->viewportDescription().userZoom);
    231 }
    232 
    233 TEST_F(ViewportTest, viewport6)
    234 {
    235     UseMockScrollbarSettings mockScrollbarSettings;
    236     registerMockedHttpURLLoad("viewport/viewport-6.html");
    237 
    238     FrameTestHelpers::WebViewHelper webViewHelper;
    239     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-6.html", true, 0, 0, setViewportSettings);
    240 
    241     Page* page = webViewHelper.webViewImpl()->page();
    242     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    243 
    244     EXPECT_EQ(200, constraints.layoutSize.width());
    245     EXPECT_EQ(220, constraints.layoutSize.height());
    246     EXPECT_NEAR(1.6f, constraints.initialScale, 0.01f);
    247     EXPECT_NEAR(1.6f, constraints.minimumScale, 0.01f);
    248     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    249     EXPECT_TRUE(page->viewportDescription().userZoom);
    250 }
    251 
    252 TEST_F(ViewportTest, viewport7)
    253 {
    254     UseMockScrollbarSettings mockScrollbarSettings;
    255     registerMockedHttpURLLoad("viewport/viewport-7.html");
    256 
    257     FrameTestHelpers::WebViewHelper webViewHelper;
    258     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-7.html", true, 0, 0, setViewportSettings);
    259 
    260     Page* page = webViewHelper.webViewImpl()->page();
    261     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    262 
    263     EXPECT_EQ(1280, constraints.layoutSize.width());
    264     EXPECT_EQ(1408, constraints.layoutSize.height());
    265     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    266     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    267     EXPECT_NEAR(0.25f, constraints.maximumScale, 0.01f);
    268     EXPECT_TRUE(page->viewportDescription().userZoom);
    269 }
    270 
    271 TEST_F(ViewportTest, viewport8)
    272 {
    273     UseMockScrollbarSettings mockScrollbarSettings;
    274     registerMockedHttpURLLoad("viewport/viewport-8.html");
    275 
    276     FrameTestHelpers::WebViewHelper webViewHelper;
    277     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-8.html", true, 0, 0, setViewportSettings);
    278 
    279     Page* page = webViewHelper.webViewImpl()->page();
    280     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    281 
    282     EXPECT_EQ(1280, constraints.layoutSize.width());
    283     EXPECT_EQ(1408, constraints.layoutSize.height());
    284     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    285     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    286     EXPECT_NEAR(0.25f, constraints.maximumScale, 0.01f);
    287     EXPECT_TRUE(page->viewportDescription().userZoom);
    288 }
    289 
    290 TEST_F(ViewportTest, viewport9)
    291 {
    292     UseMockScrollbarSettings mockScrollbarSettings;
    293     registerMockedHttpURLLoad("viewport/viewport-9.html");
    294 
    295     FrameTestHelpers::WebViewHelper webViewHelper;
    296     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-9.html", true, 0, 0, setViewportSettings);
    297 
    298     Page* page = webViewHelper.webViewImpl()->page();
    299     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    300 
    301     EXPECT_EQ(1280, constraints.layoutSize.width());
    302     EXPECT_EQ(1408, constraints.layoutSize.height());
    303     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    304     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    305     EXPECT_NEAR(0.25f, constraints.maximumScale, 0.01f);
    306     EXPECT_TRUE(page->viewportDescription().userZoom);
    307 }
    308 
    309 TEST_F(ViewportTest, viewport10)
    310 {
    311     UseMockScrollbarSettings mockScrollbarSettings;
    312     registerMockedHttpURLLoad("viewport/viewport-10.html");
    313 
    314     FrameTestHelpers::WebViewHelper webViewHelper;
    315     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-10.html", true, 0, 0, setViewportSettings);
    316 
    317     Page* page = webViewHelper.webViewImpl()->page();
    318     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    319 
    320     EXPECT_EQ(1280, constraints.layoutSize.width());
    321     EXPECT_EQ(1408, constraints.layoutSize.height());
    322     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    323     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    324     EXPECT_NEAR(0.25f, constraints.maximumScale, 0.01f);
    325     EXPECT_TRUE(page->viewportDescription().userZoom);
    326 }
    327 
    328 TEST_F(ViewportTest, viewport11)
    329 {
    330     UseMockScrollbarSettings mockScrollbarSettings;
    331     registerMockedHttpURLLoad("viewport/viewport-11.html");
    332 
    333     FrameTestHelpers::WebViewHelper webViewHelper;
    334     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-11.html", true, 0, 0, setViewportSettings);
    335 
    336     Page* page = webViewHelper.webViewImpl()->page();
    337     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    338 
    339     EXPECT_EQ(980, constraints.layoutSize.width());
    340     EXPECT_EQ(1078, constraints.layoutSize.height());
    341     EXPECT_NEAR(0.32f, constraints.initialScale, 0.01f);
    342     EXPECT_NEAR(0.32f, constraints.minimumScale, 0.01f);
    343     EXPECT_NEAR(0.5f, constraints.maximumScale, 0.01f);
    344     EXPECT_TRUE(page->viewportDescription().userZoom);
    345 }
    346 
    347 TEST_F(ViewportTest, viewport12)
    348 {
    349     UseMockScrollbarSettings mockScrollbarSettings;
    350     registerMockedHttpURLLoad("viewport/viewport-12.html");
    351 
    352     FrameTestHelpers::WebViewHelper webViewHelper;
    353     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-12.html", true, 0, 0, setViewportSettings);
    354 
    355     Page* page = webViewHelper.webViewImpl()->page();
    356     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    357 
    358     EXPECT_EQ(640, constraints.layoutSize.width());
    359     EXPECT_EQ(704, constraints.layoutSize.height());
    360     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
    361     EXPECT_NEAR(0.5f, constraints.minimumScale, 0.01f);
    362     EXPECT_NEAR(0.5f, constraints.maximumScale, 0.01f);
    363     EXPECT_TRUE(page->viewportDescription().userZoom);
    364 }
    365 
    366 TEST_F(ViewportTest, viewport13)
    367 {
    368     UseMockScrollbarSettings mockScrollbarSettings;
    369     registerMockedHttpURLLoad("viewport/viewport-13.html");
    370 
    371     FrameTestHelpers::WebViewHelper webViewHelper;
    372     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-13.html", true, 0, 0, setViewportSettings);
    373 
    374     Page* page = webViewHelper.webViewImpl()->page();
    375     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    376 
    377     EXPECT_EQ(1280, constraints.layoutSize.width());
    378     EXPECT_EQ(1408, constraints.layoutSize.height());
    379     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    380     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    381     EXPECT_NEAR(0.5f, constraints.maximumScale, 0.01f);
    382     EXPECT_TRUE(page->viewportDescription().userZoom);
    383 }
    384 
    385 TEST_F(ViewportTest, viewport14)
    386 {
    387     UseMockScrollbarSettings mockScrollbarSettings;
    388     registerMockedHttpURLLoad("viewport/viewport-14.html");
    389 
    390     FrameTestHelpers::WebViewHelper webViewHelper;
    391     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-14.html", true, 0, 0, setViewportSettings);
    392 
    393     Page* page = webViewHelper.webViewImpl()->page();
    394     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    395 
    396     EXPECT_EQ(320, constraints.layoutSize.width());
    397     EXPECT_EQ(352, constraints.layoutSize.height());
    398     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
    399     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    400     EXPECT_NEAR(1.0f, constraints.maximumScale, 0.01f);
    401     EXPECT_TRUE(page->viewportDescription().userZoom);
    402 }
    403 
    404 TEST_F(ViewportTest, viewport15)
    405 {
    406     UseMockScrollbarSettings mockScrollbarSettings;
    407     registerMockedHttpURLLoad("viewport/viewport-15.html");
    408 
    409     FrameTestHelpers::WebViewHelper webViewHelper;
    410     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-15.html", true, 0, 0, setViewportSettings);
    411 
    412     Page* page = webViewHelper.webViewImpl()->page();
    413     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    414 
    415     EXPECT_EQ(980, constraints.layoutSize.width());
    416     EXPECT_EQ(1078, constraints.layoutSize.height());
    417     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
    418     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    419     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    420     EXPECT_TRUE(page->viewportDescription().userZoom);
    421 }
    422 
    423 TEST_F(ViewportTest, viewport16)
    424 {
    425     UseMockScrollbarSettings mockScrollbarSettings;
    426     registerMockedHttpURLLoad("viewport/viewport-16.html");
    427 
    428     FrameTestHelpers::WebViewHelper webViewHelper;
    429     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-16.html", true, 0, 0, setViewportSettings);
    430 
    431     Page* page = webViewHelper.webViewImpl()->page();
    432     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    433 
    434     EXPECT_EQ(980, constraints.layoutSize.width());
    435     EXPECT_EQ(1078, constraints.layoutSize.height());
    436     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
    437     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
    438     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    439     EXPECT_TRUE(page->viewportDescription().userZoom);
    440 }
    441 
    442 TEST_F(ViewportTest, viewport17)
    443 {
    444     UseMockScrollbarSettings mockScrollbarSettings;
    445     registerMockedHttpURLLoad("viewport/viewport-17.html");
    446 
    447     FrameTestHelpers::WebViewHelper webViewHelper;
    448     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-17.html", true, 0, 0, setViewportSettings);
    449 
    450     Page* page = webViewHelper.webViewImpl()->page();
    451     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    452 
    453     EXPECT_EQ(980, constraints.layoutSize.width());
    454     EXPECT_EQ(1078, constraints.layoutSize.height());
    455     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
    456     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
    457     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    458     EXPECT_TRUE(page->viewportDescription().userZoom);
    459 }
    460 
    461 TEST_F(ViewportTest, viewport18)
    462 {
    463     UseMockScrollbarSettings mockScrollbarSettings;
    464     registerMockedHttpURLLoad("viewport/viewport-18.html");
    465 
    466     FrameTestHelpers::WebViewHelper webViewHelper;
    467     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-18.html", true, 0, 0, setViewportSettings);
    468 
    469     Page* page = webViewHelper.webViewImpl()->page();
    470     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    471 
    472     EXPECT_EQ(64, constraints.layoutSize.width());
    473     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
    474     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
    475     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
    476     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    477     EXPECT_TRUE(page->viewportDescription().userZoom);
    478 }
    479 
    480 TEST_F(ViewportTest, viewport19)
    481 {
    482     UseMockScrollbarSettings mockScrollbarSettings;
    483     registerMockedHttpURLLoad("viewport/viewport-19.html");
    484 
    485     FrameTestHelpers::WebViewHelper webViewHelper;
    486     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-19.html", true, 0, 0, setViewportSettings);
    487 
    488     Page* page = webViewHelper.webViewImpl()->page();
    489     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    490 
    491     EXPECT_EQ(160, constraints.layoutSize.width());
    492     EXPECT_EQ(176, constraints.layoutSize.height());
    493     EXPECT_NEAR(2.0f, constraints.initialScale, 0.01f);
    494     EXPECT_NEAR(2.0f, constraints.minimumScale, 0.01f);
    495     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    496     EXPECT_TRUE(page->viewportDescription().userZoom);
    497 }
    498 
    499 TEST_F(ViewportTest, viewport20)
    500 {
    501     UseMockScrollbarSettings mockScrollbarSettings;
    502     registerMockedHttpURLLoad("viewport/viewport-20.html");
    503 
    504     FrameTestHelpers::WebViewHelper webViewHelper;
    505     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-20.html", true, 0, 0, setViewportSettings);
    506 
    507     Page* page = webViewHelper.webViewImpl()->page();
    508     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    509 
    510     EXPECT_EQ(980, constraints.layoutSize.width());
    511     EXPECT_EQ(1078, constraints.layoutSize.height());
    512     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
    513     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
    514     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
    515     EXPECT_TRUE(page->viewportDescription().userZoom);
    516 }
    517 
    518 TEST_F(ViewportTest, viewport21)
    519 {
    520     UseMockScrollbarSettings mockScrollbarSettings;
    521     registerMockedHttpURLLoad("viewport/viewport-21.html");
    522 
    523     FrameTestHelpers::WebViewHelper webViewHelper;
    524     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-21.html", true, 0, 0, setViewportSettings);
    525 
    526     Page* page = webViewHelper.webViewImpl()->page();
    527     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    528 
    529     EXPECT_EQ(980, constraints.layoutSize.width());
    530     EXPECT_EQ(1078, constraints.layoutSize.height());
    531     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
    532     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
    533     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
    534     EXPECT_TRUE(page->viewportDescription().userZoom);
    535 }
    536 
    537 TEST_F(ViewportTest, viewport22)
    538 {
    539     UseMockScrollbarSettings mockScrollbarSettings;
    540     registerMockedHttpURLLoad("viewport/viewport-22.html");
    541 
    542     FrameTestHelpers::WebViewHelper webViewHelper;
    543     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-22.html", true, 0, 0, setViewportSettings);
    544 
    545     Page* page = webViewHelper.webViewImpl()->page();
    546     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    547 
    548     EXPECT_EQ(980, constraints.layoutSize.width());
    549     EXPECT_EQ(1078, constraints.layoutSize.height());
    550     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
    551     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
    552     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
    553     EXPECT_TRUE(page->viewportDescription().userZoom);
    554 }
    555 
    556 TEST_F(ViewportTest, viewport23)
    557 {
    558     UseMockScrollbarSettings mockScrollbarSettings;
    559     registerMockedHttpURLLoad("viewport/viewport-23.html");
    560 
    561     FrameTestHelpers::WebViewHelper webViewHelper;
    562     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-23.html", true, 0, 0, setViewportSettings);
    563 
    564     Page* page = webViewHelper.webViewImpl()->page();
    565     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    566 
    567     EXPECT_EQ(980, constraints.layoutSize.width());
    568     EXPECT_EQ(1078, constraints.layoutSize.height());
    569     EXPECT_NEAR(3.0f, constraints.initialScale, 0.01f);
    570     EXPECT_NEAR(3.0f, constraints.minimumScale, 0.01f);
    571     EXPECT_NEAR(3.0f, constraints.maximumScale, 0.01f);
    572     EXPECT_TRUE(page->viewportDescription().userZoom);
    573 }
    574 
    575 TEST_F(ViewportTest, viewport24)
    576 {
    577     UseMockScrollbarSettings mockScrollbarSettings;
    578     registerMockedHttpURLLoad("viewport/viewport-24.html");
    579 
    580     FrameTestHelpers::WebViewHelper webViewHelper;
    581     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-24.html", true, 0, 0, setViewportSettings);
    582 
    583     Page* page = webViewHelper.webViewImpl()->page();
    584     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    585 
    586     EXPECT_EQ(980, constraints.layoutSize.width());
    587     EXPECT_EQ(1078, constraints.layoutSize.height());
    588     EXPECT_NEAR(4.0f, constraints.initialScale, 0.01f);
    589     EXPECT_NEAR(4.0f, constraints.minimumScale, 0.01f);
    590     EXPECT_NEAR(4.0f, constraints.maximumScale, 0.01f);
    591     EXPECT_TRUE(page->viewportDescription().userZoom);
    592 }
    593 
    594 TEST_F(ViewportTest, viewport25)
    595 {
    596     UseMockScrollbarSettings mockScrollbarSettings;
    597     registerMockedHttpURLLoad("viewport/viewport-25.html");
    598 
    599     FrameTestHelpers::WebViewHelper webViewHelper;
    600     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-25.html", true, 0, 0, setViewportSettings);
    601 
    602     Page* page = webViewHelper.webViewImpl()->page();
    603     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    604 
    605     EXPECT_EQ(980, constraints.layoutSize.width());
    606     EXPECT_EQ(1078, constraints.layoutSize.height());
    607     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
    608     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
    609     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
    610     EXPECT_TRUE(page->viewportDescription().userZoom);
    611 }
    612 
    613 TEST_F(ViewportTest, viewport26)
    614 {
    615     UseMockScrollbarSettings mockScrollbarSettings;
    616     registerMockedHttpURLLoad("viewport/viewport-26.html");
    617 
    618     FrameTestHelpers::WebViewHelper webViewHelper;
    619     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-26.html", true, 0, 0, setViewportSettings);
    620 
    621     Page* page = webViewHelper.webViewImpl()->page();
    622     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    623 
    624     EXPECT_EQ(980, constraints.layoutSize.width());
    625     EXPECT_EQ(1078, constraints.layoutSize.height());
    626     EXPECT_NEAR(8.0f, constraints.initialScale, 0.01f);
    627     EXPECT_NEAR(8.0f, constraints.minimumScale, 0.01f);
    628     EXPECT_NEAR(9.0f, constraints.maximumScale, 0.01f);
    629     EXPECT_TRUE(page->viewportDescription().userZoom);
    630 }
    631 
    632 TEST_F(ViewportTest, viewport27)
    633 {
    634     UseMockScrollbarSettings mockScrollbarSettings;
    635     registerMockedHttpURLLoad("viewport/viewport-27.html");
    636 
    637     FrameTestHelpers::WebViewHelper webViewHelper;
    638     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-27.html", true, 0, 0, setViewportSettings);
    639 
    640     Page* page = webViewHelper.webViewImpl()->page();
    641     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    642 
    643     EXPECT_EQ(980, constraints.layoutSize.width());
    644     EXPECT_EQ(1078, constraints.layoutSize.height());
    645     EXPECT_NEAR(0.32f, constraints.initialScale, 0.01f);
    646     EXPECT_NEAR(0.32f, constraints.minimumScale, 0.01f);
    647     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    648     EXPECT_TRUE(page->viewportDescription().userZoom);
    649 }
    650 
    651 TEST_F(ViewportTest, viewport28)
    652 {
    653     UseMockScrollbarSettings mockScrollbarSettings;
    654     registerMockedHttpURLLoad("viewport/viewport-28.html");
    655 
    656     FrameTestHelpers::WebViewHelper webViewHelper;
    657     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-28.html", true, 0, 0, setViewportSettings);
    658 
    659     Page* page = webViewHelper.webViewImpl()->page();
    660     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    661 
    662     EXPECT_EQ(352, constraints.layoutSize.width());
    663     EXPECT_NEAR(387.2, constraints.layoutSize.height(), 0.01);
    664     EXPECT_NEAR(0.91f, constraints.initialScale, 0.01f);
    665     EXPECT_NEAR(0.91f, constraints.minimumScale, 0.01f);
    666     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    667     EXPECT_TRUE(page->viewportDescription().userZoom);
    668 }
    669 
    670 TEST_F(ViewportTest, viewport29)
    671 {
    672     UseMockScrollbarSettings mockScrollbarSettings;
    673     registerMockedHttpURLLoad("viewport/viewport-29.html");
    674 
    675     FrameTestHelpers::WebViewHelper webViewHelper;
    676     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-29.html", true, 0, 0, setViewportSettings);
    677 
    678     Page* page = webViewHelper.webViewImpl()->page();
    679     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    680 
    681     EXPECT_EQ(700, constraints.layoutSize.width());
    682     EXPECT_EQ(770, constraints.layoutSize.height());
    683     EXPECT_NEAR(0.46f, constraints.initialScale, 0.01f);
    684     EXPECT_NEAR(0.46f, constraints.minimumScale, 0.01f);
    685     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    686     EXPECT_TRUE(page->viewportDescription().userZoom);
    687 }
    688 
    689 TEST_F(ViewportTest, viewport30)
    690 {
    691     UseMockScrollbarSettings mockScrollbarSettings;
    692     registerMockedHttpURLLoad("viewport/viewport-30.html");
    693 
    694     FrameTestHelpers::WebViewHelper webViewHelper;
    695     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-30.html", true, 0, 0, setViewportSettings);
    696 
    697     Page* page = webViewHelper.webViewImpl()->page();
    698     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    699 
    700     EXPECT_EQ(200, constraints.layoutSize.width());
    701     EXPECT_EQ(220, constraints.layoutSize.height());
    702     EXPECT_NEAR(1.6f, constraints.initialScale, 0.01f);
    703     EXPECT_NEAR(1.6f, constraints.minimumScale, 0.01f);
    704     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    705     EXPECT_TRUE(page->viewportDescription().userZoom);
    706 }
    707 
    708 TEST_F(ViewportTest, viewport31)
    709 {
    710     UseMockScrollbarSettings mockScrollbarSettings;
    711     registerMockedHttpURLLoad("viewport/viewport-31.html");
    712 
    713     FrameTestHelpers::WebViewHelper webViewHelper;
    714     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-31.html", true, 0, 0, setViewportSettings);
    715 
    716     Page* page = webViewHelper.webViewImpl()->page();
    717     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    718 
    719     EXPECT_EQ(980, constraints.layoutSize.width());
    720     EXPECT_EQ(700, constraints.layoutSize.height());
    721     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
    722     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
    723     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    724     EXPECT_TRUE(page->viewportDescription().userZoom);
    725 }
    726 
    727 TEST_F(ViewportTest, viewport32)
    728 {
    729     UseMockScrollbarSettings mockScrollbarSettings;
    730     registerMockedHttpURLLoad("viewport/viewport-32.html");
    731 
    732     FrameTestHelpers::WebViewHelper webViewHelper;
    733     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-32.html", true, 0, 0, setViewportSettings);
    734 
    735     Page* page = webViewHelper.webViewImpl()->page();
    736     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    737 
    738     EXPECT_EQ(980, constraints.layoutSize.width());
    739     EXPECT_EQ(200, constraints.layoutSize.height());
    740     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
    741     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
    742     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    743     EXPECT_TRUE(page->viewportDescription().userZoom);
    744 }
    745 
    746 TEST_F(ViewportTest, viewport33)
    747 {
    748     UseMockScrollbarSettings mockScrollbarSettings;
    749     registerMockedHttpURLLoad("viewport/viewport-33.html");
    750 
    751     FrameTestHelpers::WebViewHelper webViewHelper;
    752     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-33.html", true, 0, 0, setViewportSettings);
    753 
    754     Page* page = webViewHelper.webViewImpl()->page();
    755     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    756 
    757     EXPECT_EQ(320, constraints.layoutSize.width());
    758     EXPECT_EQ(352, constraints.layoutSize.height());
    759     EXPECT_NEAR(2.0f, constraints.initialScale, 0.01f);
    760     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    761     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    762     EXPECT_TRUE(page->viewportDescription().userZoom);
    763 }
    764 
    765 TEST_F(ViewportTest, viewport34)
    766 {
    767     UseMockScrollbarSettings mockScrollbarSettings;
    768     registerMockedHttpURLLoad("viewport/viewport-34.html");
    769 
    770     FrameTestHelpers::WebViewHelper webViewHelper;
    771     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-34.html", true, 0, 0, setViewportSettings);
    772 
    773     Page* page = webViewHelper.webViewImpl()->page();
    774     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    775 
    776     EXPECT_EQ(640, constraints.layoutSize.width());
    777     EXPECT_EQ(704, constraints.layoutSize.height());
    778     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
    779     EXPECT_NEAR(0.5f, constraints.minimumScale, 0.01f);
    780     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    781     EXPECT_TRUE(page->viewportDescription().userZoom);
    782 }
    783 
    784 TEST_F(ViewportTest, viewport35)
    785 {
    786     UseMockScrollbarSettings mockScrollbarSettings;
    787     registerMockedHttpURLLoad("viewport/viewport-35.html");
    788 
    789     FrameTestHelpers::WebViewHelper webViewHelper;
    790     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-35.html", true, 0, 0, setViewportSettings);
    791 
    792     Page* page = webViewHelper.webViewImpl()->page();
    793     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    794 
    795     EXPECT_EQ(1280, constraints.layoutSize.width());
    796     EXPECT_EQ(1408, constraints.layoutSize.height());
    797     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    798     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    799     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    800     EXPECT_TRUE(page->viewportDescription().userZoom);
    801 }
    802 
    803 TEST_F(ViewportTest, viewport36)
    804 {
    805     UseMockScrollbarSettings mockScrollbarSettings;
    806     registerMockedHttpURLLoad("viewport/viewport-36.html");
    807 
    808     FrameTestHelpers::WebViewHelper webViewHelper;
    809     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-36.html", true, 0, 0, setViewportSettings);
    810 
    811     Page* page = webViewHelper.webViewImpl()->page();
    812     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    813 
    814     EXPECT_NEAR(636.36, constraints.layoutSize.width(), 0.01f);
    815     EXPECT_EQ(700, constraints.layoutSize.height());
    816     EXPECT_NEAR(1.6f, constraints.initialScale, 0.01f);
    817     EXPECT_NEAR(0.50f, constraints.minimumScale, 0.01f);
    818     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    819     EXPECT_TRUE(page->viewportDescription().userZoom);
    820 }
    821 
    822 TEST_F(ViewportTest, viewport37)
    823 {
    824     UseMockScrollbarSettings mockScrollbarSettings;
    825     registerMockedHttpURLLoad("viewport/viewport-37.html");
    826 
    827     FrameTestHelpers::WebViewHelper webViewHelper;
    828     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-37.html", true, 0, 0, setViewportSettings);
    829 
    830     Page* page = webViewHelper.webViewImpl()->page();
    831     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    832 
    833     EXPECT_EQ(320, constraints.layoutSize.width());
    834     EXPECT_EQ(352, constraints.layoutSize.height());
    835     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
    836     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    837     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    838     EXPECT_TRUE(page->viewportDescription().userZoom);
    839 }
    840 
    841 TEST_F(ViewportTest, viewport38)
    842 {
    843     UseMockScrollbarSettings mockScrollbarSettings;
    844     registerMockedHttpURLLoad("viewport/viewport-38.html");
    845 
    846     FrameTestHelpers::WebViewHelper webViewHelper;
    847     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-38.html", true, 0, 0, setViewportSettings);
    848 
    849     Page* page = webViewHelper.webViewImpl()->page();
    850     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    851 
    852     EXPECT_EQ(640, constraints.layoutSize.width());
    853     EXPECT_EQ(704, constraints.layoutSize.height());
    854     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
    855     EXPECT_NEAR(0.5f, constraints.minimumScale, 0.01f);
    856     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    857     EXPECT_TRUE(page->viewportDescription().userZoom);
    858 }
    859 
    860 TEST_F(ViewportTest, viewport39)
    861 {
    862     UseMockScrollbarSettings mockScrollbarSettings;
    863     registerMockedHttpURLLoad("viewport/viewport-39.html");
    864 
    865     FrameTestHelpers::WebViewHelper webViewHelper;
    866     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-39.html", true, 0, 0, setViewportSettings);
    867 
    868     Page* page = webViewHelper.webViewImpl()->page();
    869     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    870 
    871     EXPECT_EQ(200, constraints.layoutSize.width());
    872     EXPECT_EQ(700, constraints.layoutSize.height());
    873     EXPECT_NEAR(1.6f, constraints.initialScale, 0.01f);
    874     EXPECT_NEAR(1.6f, constraints.minimumScale, 0.01f);
    875     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    876     EXPECT_TRUE(page->viewportDescription().userZoom);
    877 }
    878 
    879 TEST_F(ViewportTest, viewport40)
    880 {
    881     UseMockScrollbarSettings mockScrollbarSettings;
    882     registerMockedHttpURLLoad("viewport/viewport-40.html");
    883 
    884     FrameTestHelpers::WebViewHelper webViewHelper;
    885     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-40.html", true, 0, 0, setViewportSettings);
    886 
    887     Page* page = webViewHelper.webViewImpl()->page();
    888     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    889 
    890     EXPECT_EQ(700, constraints.layoutSize.width());
    891     EXPECT_EQ(352, constraints.layoutSize.height());
    892     EXPECT_NEAR(0.46f, constraints.initialScale, 0.01f);
    893     EXPECT_NEAR(0.46f, constraints.minimumScale, 0.01f);
    894     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    895     EXPECT_TRUE(page->viewportDescription().userZoom);
    896 }
    897 
    898 TEST_F(ViewportTest, viewport41)
    899 {
    900     UseMockScrollbarSettings mockScrollbarSettings;
    901     registerMockedHttpURLLoad("viewport/viewport-41.html");
    902 
    903     FrameTestHelpers::WebViewHelper webViewHelper;
    904     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-41.html", true, 0, 0, setViewportSettings);
    905 
    906     Page* page = webViewHelper.webViewImpl()->page();
    907     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    908 
    909     EXPECT_EQ(1000, constraints.layoutSize.width());
    910     EXPECT_EQ(704, constraints.layoutSize.height());
    911     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
    912     EXPECT_NEAR(0.32f, constraints.minimumScale, 0.01f);
    913     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    914     EXPECT_TRUE(page->viewportDescription().userZoom);
    915 }
    916 
    917 TEST_F(ViewportTest, viewport42)
    918 {
    919     UseMockScrollbarSettings mockScrollbarSettings;
    920     registerMockedHttpURLLoad("viewport/viewport-42.html");
    921 
    922     FrameTestHelpers::WebViewHelper webViewHelper;
    923     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-42.html", true, 0, 0, setViewportSettings);
    924 
    925     Page* page = webViewHelper.webViewImpl()->page();
    926     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    927 
    928     EXPECT_EQ(320, constraints.layoutSize.width());
    929     EXPECT_EQ(1000, constraints.layoutSize.height());
    930     EXPECT_NEAR(2.0f, constraints.initialScale, 0.01f);
    931     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
    932     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    933     EXPECT_TRUE(page->viewportDescription().userZoom);
    934 }
    935 
    936 TEST_F(ViewportTest, viewport43)
    937 {
    938     UseMockScrollbarSettings mockScrollbarSettings;
    939     registerMockedHttpURLLoad("viewport/viewport-43.html");
    940 
    941     FrameTestHelpers::WebViewHelper webViewHelper;
    942     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-43.html", true, 0, 0, setViewportSettings);
    943 
    944     Page* page = webViewHelper.webViewImpl()->page();
    945     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    946 
    947     EXPECT_EQ(64, constraints.layoutSize.width());
    948     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
    949     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
    950     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
    951     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    952     EXPECT_TRUE(page->viewportDescription().userZoom);
    953 }
    954 
    955 TEST_F(ViewportTest, viewport44)
    956 {
    957     UseMockScrollbarSettings mockScrollbarSettings;
    958     registerMockedHttpURLLoad("viewport/viewport-44.html");
    959 
    960     FrameTestHelpers::WebViewHelper webViewHelper;
    961     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-44.html", true, 0, 0, setViewportSettings);
    962 
    963     Page* page = webViewHelper.webViewImpl()->page();
    964     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    965 
    966     EXPECT_EQ(10000, constraints.layoutSize.width());
    967     EXPECT_EQ(10000, constraints.layoutSize.height());
    968     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
    969     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
    970     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
    971     EXPECT_TRUE(page->viewportDescription().userZoom);
    972 }
    973 
    974 TEST_F(ViewportTest, viewport45)
    975 {
    976     UseMockScrollbarSettings mockScrollbarSettings;
    977     registerMockedHttpURLLoad("viewport/viewport-45.html");
    978 
    979     FrameTestHelpers::WebViewHelper webViewHelper;
    980     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-45.html", true, 0, 0, setViewportSettings);
    981 
    982     Page* page = webViewHelper.webViewImpl()->page();
    983     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
    984 
    985     EXPECT_EQ(3200, constraints.layoutSize.width());
    986     EXPECT_EQ(3520, constraints.layoutSize.height());
    987     EXPECT_NEAR(0.1f, constraints.initialScale, 0.01f);
    988     EXPECT_NEAR(0.1f, constraints.minimumScale, 0.01f);
    989     EXPECT_NEAR(0.1f, constraints.maximumScale, 0.01f);
    990     EXPECT_TRUE(page->viewportDescription().userZoom);
    991 }
    992 
    993 TEST_F(ViewportTest, viewport46)
    994 {
    995     UseMockScrollbarSettings mockScrollbarSettings;
    996     registerMockedHttpURLLoad("viewport/viewport-46.html");
    997 
    998     FrameTestHelpers::WebViewHelper webViewHelper;
    999     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-46.html", true, 0, 0, setViewportSettings);
   1000 
   1001     Page* page = webViewHelper.webViewImpl()->page();
   1002     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1003 
   1004     EXPECT_EQ(32, constraints.layoutSize.width());
   1005     EXPECT_NEAR(35.2, constraints.layoutSize.height(), 0.01f);
   1006     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
   1007     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
   1008     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
   1009     EXPECT_TRUE(page->viewportDescription().userZoom);
   1010 }
   1011 
   1012 TEST_F(ViewportTest, viewport47)
   1013 {
   1014     UseMockScrollbarSettings mockScrollbarSettings;
   1015     registerMockedHttpURLLoad("viewport/viewport-47.html");
   1016 
   1017     FrameTestHelpers::WebViewHelper webViewHelper;
   1018     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-47.html", true, 0, 0, setViewportSettings);
   1019 
   1020     Page* page = webViewHelper.webViewImpl()->page();
   1021     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1022 
   1023     EXPECT_EQ(320, constraints.layoutSize.width());
   1024     EXPECT_EQ(3000, constraints.layoutSize.height());
   1025     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1026     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1027     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1028     EXPECT_TRUE(page->viewportDescription().userZoom);
   1029 }
   1030 
   1031 TEST_F(ViewportTest, viewport48)
   1032 {
   1033     UseMockScrollbarSettings mockScrollbarSettings;
   1034     registerMockedHttpURLLoad("viewport/viewport-48.html");
   1035 
   1036     FrameTestHelpers::WebViewHelper webViewHelper;
   1037     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-48.html", true, 0, 0, setViewportSettings);
   1038 
   1039     Page* page = webViewHelper.webViewImpl()->page();
   1040     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1041 
   1042     EXPECT_EQ(3000, constraints.layoutSize.width());
   1043     EXPECT_EQ(352, constraints.layoutSize.height());
   1044     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1045     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
   1046     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1047     EXPECT_TRUE(page->viewportDescription().userZoom);
   1048 }
   1049 
   1050 TEST_F(ViewportTest, viewport49)
   1051 {
   1052     UseMockScrollbarSettings mockScrollbarSettings;
   1053     registerMockedHttpURLLoad("viewport/viewport-49.html");
   1054 
   1055     FrameTestHelpers::WebViewHelper webViewHelper;
   1056     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-49.html", true, 0, 0, setViewportSettings);
   1057 
   1058     Page* page = webViewHelper.webViewImpl()->page();
   1059     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1060 
   1061     EXPECT_EQ(320, constraints.layoutSize.width());
   1062     EXPECT_EQ(352, constraints.layoutSize.height());
   1063     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1064     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1065     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1066     EXPECT_TRUE(page->viewportDescription().userZoom);
   1067 }
   1068 
   1069 TEST_F(ViewportTest, viewport50)
   1070 {
   1071     UseMockScrollbarSettings mockScrollbarSettings;
   1072     registerMockedHttpURLLoad("viewport/viewport-50.html");
   1073 
   1074     FrameTestHelpers::WebViewHelper webViewHelper;
   1075     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-50.html", true, 0, 0, setViewportSettings);
   1076 
   1077     Page* page = webViewHelper.webViewImpl()->page();
   1078     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1079 
   1080     EXPECT_EQ(980, constraints.layoutSize.width());
   1081     EXPECT_EQ(1078, constraints.layoutSize.height());
   1082     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1083     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1084     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1085     EXPECT_TRUE(page->viewportDescription().userZoom);
   1086 }
   1087 
   1088 TEST_F(ViewportTest, viewport51)
   1089 {
   1090     UseMockScrollbarSettings mockScrollbarSettings;
   1091     registerMockedHttpURLLoad("viewport/viewport-51.html");
   1092 
   1093     FrameTestHelpers::WebViewHelper webViewHelper;
   1094     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-51.html", true, 0, 0, setViewportSettings);
   1095 
   1096     Page* page = webViewHelper.webViewImpl()->page();
   1097     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1098 
   1099     EXPECT_EQ(980, constraints.layoutSize.width());
   1100     EXPECT_EQ(1078, constraints.layoutSize.height());
   1101     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1102     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1103     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1104     EXPECT_TRUE(page->viewportDescription().userZoom);
   1105 }
   1106 
   1107 TEST_F(ViewportTest, viewport52)
   1108 {
   1109     UseMockScrollbarSettings mockScrollbarSettings;
   1110     registerMockedHttpURLLoad("viewport/viewport-52.html");
   1111 
   1112     FrameTestHelpers::WebViewHelper webViewHelper;
   1113     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-52.html", true, 0, 0, setViewportSettings);
   1114 
   1115     Page* page = webViewHelper.webViewImpl()->page();
   1116     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1117 
   1118     EXPECT_EQ(64, constraints.layoutSize.width());
   1119     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1120     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1121     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1122     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1123     EXPECT_TRUE(page->viewportDescription().userZoom);
   1124 }
   1125 
   1126 TEST_F(ViewportTest, viewport53)
   1127 {
   1128     UseMockScrollbarSettings mockScrollbarSettings;
   1129     registerMockedHttpURLLoad("viewport/viewport-53.html");
   1130 
   1131     FrameTestHelpers::WebViewHelper webViewHelper;
   1132     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-53.html", true, 0, 0, setViewportSettings);
   1133 
   1134     Page* page = webViewHelper.webViewImpl()->page();
   1135     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1136 
   1137     EXPECT_EQ(980, constraints.layoutSize.width());
   1138     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1139     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1140     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1141     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1142     EXPECT_TRUE(page->viewportDescription().userZoom);
   1143 }
   1144 
   1145 TEST_F(ViewportTest, viewport54)
   1146 {
   1147     UseMockScrollbarSettings mockScrollbarSettings;
   1148     registerMockedHttpURLLoad("viewport/viewport-54.html");
   1149 
   1150     FrameTestHelpers::WebViewHelper webViewHelper;
   1151     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-54.html", true, 0, 0, setViewportSettings);
   1152 
   1153     Page* page = webViewHelper.webViewImpl()->page();
   1154     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1155 
   1156     EXPECT_EQ(64, constraints.layoutSize.width());
   1157     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1158     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1159     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1160     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1161     EXPECT_TRUE(page->viewportDescription().userZoom);
   1162 }
   1163 
   1164 TEST_F(ViewportTest, viewport55)
   1165 {
   1166     UseMockScrollbarSettings mockScrollbarSettings;
   1167     registerMockedHttpURLLoad("viewport/viewport-55.html");
   1168 
   1169     FrameTestHelpers::WebViewHelper webViewHelper;
   1170     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-55.html", true, 0, 0, setViewportSettings);
   1171 
   1172     Page* page = webViewHelper.webViewImpl()->page();
   1173     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1174 
   1175     EXPECT_EQ(64, constraints.layoutSize.width());
   1176     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1177     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1178     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1179     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1180     EXPECT_TRUE(page->viewportDescription().userZoom);
   1181 }
   1182 
   1183 TEST_F(ViewportTest, viewport56)
   1184 {
   1185     UseMockScrollbarSettings mockScrollbarSettings;
   1186     registerMockedHttpURLLoad("viewport/viewport-56.html");
   1187 
   1188     FrameTestHelpers::WebViewHelper webViewHelper;
   1189     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-56.html", true, 0, 0, setViewportSettings);
   1190 
   1191     Page* page = webViewHelper.webViewImpl()->page();
   1192     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1193 
   1194     EXPECT_EQ(980, constraints.layoutSize.width());
   1195     EXPECT_EQ(1078, constraints.layoutSize.height());
   1196     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1197     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1198     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1199     EXPECT_TRUE(page->viewportDescription().userZoom);
   1200 }
   1201 
   1202 TEST_F(ViewportTest, viewport57)
   1203 {
   1204     UseMockScrollbarSettings mockScrollbarSettings;
   1205     registerMockedHttpURLLoad("viewport/viewport-57.html");
   1206 
   1207     FrameTestHelpers::WebViewHelper webViewHelper;
   1208     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-57.html", true, 0, 0, setViewportSettings);
   1209 
   1210     Page* page = webViewHelper.webViewImpl()->page();
   1211     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1212 
   1213     EXPECT_EQ(320, constraints.layoutSize.width());
   1214     EXPECT_EQ(352, constraints.layoutSize.height());
   1215     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1216     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1217     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1218     EXPECT_TRUE(page->viewportDescription().userZoom);
   1219 }
   1220 
   1221 TEST_F(ViewportTest, viewport58)
   1222 {
   1223     UseMockScrollbarSettings mockScrollbarSettings;
   1224     registerMockedHttpURLLoad("viewport/viewport-58.html");
   1225 
   1226     FrameTestHelpers::WebViewHelper webViewHelper;
   1227     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-58.html", true, 0, 0, setViewportSettings);
   1228 
   1229     Page* page = webViewHelper.webViewImpl()->page();
   1230     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1231 
   1232     EXPECT_EQ(3200, constraints.layoutSize.width());
   1233     EXPECT_EQ(3520, constraints.layoutSize.height());
   1234     EXPECT_NEAR(0.1f, constraints.initialScale, 0.01f);
   1235     EXPECT_NEAR(0.1f, constraints.minimumScale, 0.01f);
   1236     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1237     EXPECT_TRUE(page->viewportDescription().userZoom);
   1238 }
   1239 
   1240 TEST_F(ViewportTest, viewport59)
   1241 {
   1242     UseMockScrollbarSettings mockScrollbarSettings;
   1243     registerMockedHttpURLLoad("viewport/viewport-59.html");
   1244 
   1245     FrameTestHelpers::WebViewHelper webViewHelper;
   1246     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-59.html", true, 0, 0, setViewportSettings);
   1247 
   1248     Page* page = webViewHelper.webViewImpl()->page();
   1249     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1250 
   1251     EXPECT_EQ(320, constraints.layoutSize.width());
   1252     EXPECT_EQ(352, constraints.layoutSize.height());
   1253     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1254     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1255     EXPECT_NEAR(1.0f, constraints.maximumScale, 0.01f);
   1256     EXPECT_TRUE(page->viewportDescription().userZoom);
   1257 }
   1258 
   1259 TEST_F(ViewportTest, viewport60)
   1260 {
   1261     UseMockScrollbarSettings mockScrollbarSettings;
   1262     registerMockedHttpURLLoad("viewport/viewport-60.html");
   1263 
   1264     FrameTestHelpers::WebViewHelper webViewHelper;
   1265     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-60.html", true, 0, 0, setViewportSettings);
   1266 
   1267     Page* page = webViewHelper.webViewImpl()->page();
   1268     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1269 
   1270     EXPECT_EQ(32, constraints.layoutSize.width());
   1271     EXPECT_NEAR(35.2, constraints.layoutSize.height(), 0.01f);
   1272     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
   1273     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
   1274     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
   1275     EXPECT_TRUE(page->viewportDescription().userZoom);
   1276 }
   1277 
   1278 TEST_F(ViewportTest, viewport61)
   1279 {
   1280     UseMockScrollbarSettings mockScrollbarSettings;
   1281     registerMockedHttpURLLoad("viewport/viewport-61.html");
   1282 
   1283     FrameTestHelpers::WebViewHelper webViewHelper;
   1284     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-61.html", true, 0, 0, setViewportSettings);
   1285 
   1286     Page* page = webViewHelper.webViewImpl()->page();
   1287     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1288 
   1289     EXPECT_EQ(320, constraints.layoutSize.width());
   1290     EXPECT_EQ(352, constraints.layoutSize.height());
   1291     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1292     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1293     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1294     EXPECT_TRUE(page->viewportDescription().userZoom);
   1295 }
   1296 
   1297 TEST_F(ViewportTest, viewport62)
   1298 {
   1299     UseMockScrollbarSettings mockScrollbarSettings;
   1300     registerMockedHttpURLLoad("viewport/viewport-62.html");
   1301 
   1302     FrameTestHelpers::WebViewHelper webViewHelper;
   1303     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-62.html", true, 0, 0, setViewportSettings);
   1304 
   1305     Page* page = webViewHelper.webViewImpl()->page();
   1306     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1307 
   1308     EXPECT_EQ(320, constraints.layoutSize.width());
   1309     EXPECT_EQ(352, constraints.layoutSize.height());
   1310     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1311     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1312     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1313     EXPECT_TRUE(page->viewportDescription().userZoom);
   1314 }
   1315 
   1316 TEST_F(ViewportTest, viewport63)
   1317 {
   1318     UseMockScrollbarSettings mockScrollbarSettings;
   1319     registerMockedHttpURLLoad("viewport/viewport-63.html");
   1320 
   1321     FrameTestHelpers::WebViewHelper webViewHelper;
   1322     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-63.html", true, 0, 0, setViewportSettings);
   1323 
   1324     Page* page = webViewHelper.webViewImpl()->page();
   1325     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1326 
   1327     EXPECT_EQ(320, constraints.layoutSize.width());
   1328     EXPECT_EQ(352, constraints.layoutSize.height());
   1329     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1330     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1331     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1332     EXPECT_TRUE(page->viewportDescription().userZoom);
   1333 }
   1334 
   1335 TEST_F(ViewportTest, viewport64)
   1336 {
   1337     UseMockScrollbarSettings mockScrollbarSettings;
   1338     registerMockedHttpURLLoad("viewport/viewport-64.html");
   1339 
   1340     FrameTestHelpers::WebViewHelper webViewHelper;
   1341     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-64.html", true, 0, 0, setViewportSettings);
   1342 
   1343     Page* page = webViewHelper.webViewImpl()->page();
   1344     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1345 
   1346     EXPECT_EQ(320, constraints.layoutSize.width());
   1347     EXPECT_EQ(352, constraints.layoutSize.height());
   1348     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1349     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1350     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1351     EXPECT_TRUE(page->viewportDescription().userZoom);
   1352 }
   1353 
   1354 TEST_F(ViewportTest, viewport65)
   1355 {
   1356     UseMockScrollbarSettings mockScrollbarSettings;
   1357     registerMockedHttpURLLoad("viewport/viewport-65.html");
   1358 
   1359     FrameTestHelpers::WebViewHelper webViewHelper;
   1360     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-65.html", true, 0, 0, setViewportSettings);
   1361 
   1362     Page* page = webViewHelper.webViewImpl()->page();
   1363     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1364 
   1365     EXPECT_EQ(100, constraints.layoutSize.width());
   1366     EXPECT_EQ(110, constraints.layoutSize.height());
   1367     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1368     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1369     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1370     EXPECT_TRUE(page->viewportDescription().userZoom);
   1371 }
   1372 
   1373 TEST_F(ViewportTest, viewport66)
   1374 {
   1375     UseMockScrollbarSettings mockScrollbarSettings;
   1376     registerMockedHttpURLLoad("viewport/viewport-66.html");
   1377 
   1378     FrameTestHelpers::WebViewHelper webViewHelper;
   1379     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-66.html", true, 0, 0, setViewportSettings);
   1380 
   1381     Page* page = webViewHelper.webViewImpl()->page();
   1382     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1383 
   1384     EXPECT_EQ(100, constraints.layoutSize.width());
   1385     EXPECT_EQ(110, constraints.layoutSize.height());
   1386     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1387     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1388     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1389     EXPECT_TRUE(page->viewportDescription().userZoom);
   1390 }
   1391 
   1392 TEST_F(ViewportTest, viewport67)
   1393 {
   1394     UseMockScrollbarSettings mockScrollbarSettings;
   1395     registerMockedHttpURLLoad("viewport/viewport-67.html");
   1396 
   1397     FrameTestHelpers::WebViewHelper webViewHelper;
   1398     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-67.html", true, 0, 0, setViewportSettings);
   1399 
   1400     Page* page = webViewHelper.webViewImpl()->page();
   1401     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1402 
   1403     EXPECT_EQ(320, constraints.layoutSize.width());
   1404     EXPECT_EQ(352, constraints.layoutSize.height());
   1405     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1406     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1407     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1408     EXPECT_TRUE(page->viewportDescription().userZoom);
   1409 }
   1410 
   1411 TEST_F(ViewportTest, viewport68)
   1412 {
   1413     UseMockScrollbarSettings mockScrollbarSettings;
   1414     registerMockedHttpURLLoad("viewport/viewport-68.html");
   1415 
   1416     FrameTestHelpers::WebViewHelper webViewHelper;
   1417     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-68.html", true, 0, 0, setViewportSettings);
   1418 
   1419     Page* page = webViewHelper.webViewImpl()->page();
   1420     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1421 
   1422     EXPECT_EQ(320, constraints.layoutSize.width());
   1423     EXPECT_EQ(352, constraints.layoutSize.height());
   1424     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1425     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1426     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1427     EXPECT_TRUE(page->viewportDescription().userZoom);
   1428 }
   1429 
   1430 TEST_F(ViewportTest, viewport69)
   1431 {
   1432     UseMockScrollbarSettings mockScrollbarSettings;
   1433     registerMockedHttpURLLoad("viewport/viewport-69.html");
   1434 
   1435     FrameTestHelpers::WebViewHelper webViewHelper;
   1436     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-69.html", true, 0, 0, setViewportSettings);
   1437 
   1438     Page* page = webViewHelper.webViewImpl()->page();
   1439     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1440 
   1441     EXPECT_EQ(100, constraints.layoutSize.width());
   1442     EXPECT_EQ(110, constraints.layoutSize.height());
   1443     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1444     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1445     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1446     EXPECT_TRUE(page->viewportDescription().userZoom);
   1447 }
   1448 
   1449 TEST_F(ViewportTest, viewport70)
   1450 {
   1451     UseMockScrollbarSettings mockScrollbarSettings;
   1452     registerMockedHttpURLLoad("viewport/viewport-70.html");
   1453 
   1454     FrameTestHelpers::WebViewHelper webViewHelper;
   1455     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-70.html", true, 0, 0, setViewportSettings);
   1456 
   1457     Page* page = webViewHelper.webViewImpl()->page();
   1458     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1459 
   1460     EXPECT_EQ(100, constraints.layoutSize.width());
   1461     EXPECT_EQ(110, constraints.layoutSize.height());
   1462     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1463     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1464     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1465     EXPECT_TRUE(page->viewportDescription().userZoom);
   1466 }
   1467 
   1468 TEST_F(ViewportTest, viewport71)
   1469 {
   1470     UseMockScrollbarSettings mockScrollbarSettings;
   1471     registerMockedHttpURLLoad("viewport/viewport-71.html");
   1472 
   1473     FrameTestHelpers::WebViewHelper webViewHelper;
   1474     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-71.html", true, 0, 0, setViewportSettings);
   1475 
   1476     Page* page = webViewHelper.webViewImpl()->page();
   1477     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1478 
   1479     EXPECT_EQ(320, constraints.layoutSize.width());
   1480     EXPECT_EQ(352, constraints.layoutSize.height());
   1481     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1482     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1483     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1484     EXPECT_TRUE(page->viewportDescription().userZoom);
   1485 }
   1486 
   1487 TEST_F(ViewportTest, viewport72)
   1488 {
   1489     UseMockScrollbarSettings mockScrollbarSettings;
   1490     registerMockedHttpURLLoad("viewport/viewport-72.html");
   1491 
   1492     FrameTestHelpers::WebViewHelper webViewHelper;
   1493     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-72.html", true, 0, 0, setViewportSettings);
   1494 
   1495     Page* page = webViewHelper.webViewImpl()->page();
   1496     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1497 
   1498     EXPECT_EQ(100, constraints.layoutSize.width());
   1499     EXPECT_EQ(110, constraints.layoutSize.height());
   1500     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1501     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1502     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1503     EXPECT_TRUE(page->viewportDescription().userZoom);
   1504 }
   1505 
   1506 TEST_F(ViewportTest, viewport73)
   1507 {
   1508     UseMockScrollbarSettings mockScrollbarSettings;
   1509     registerMockedHttpURLLoad("viewport/viewport-73.html");
   1510 
   1511     FrameTestHelpers::WebViewHelper webViewHelper;
   1512     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-73.html", true, 0, 0, setViewportSettings);
   1513 
   1514     Page* page = webViewHelper.webViewImpl()->page();
   1515     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1516 
   1517     EXPECT_EQ(100, constraints.layoutSize.width());
   1518     EXPECT_EQ(110, constraints.layoutSize.height());
   1519     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1520     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1521     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1522     EXPECT_TRUE(page->viewportDescription().userZoom);
   1523 }
   1524 
   1525 TEST_F(ViewportTest, viewport74)
   1526 {
   1527     UseMockScrollbarSettings mockScrollbarSettings;
   1528     registerMockedHttpURLLoad("viewport/viewport-74.html");
   1529 
   1530     FrameTestHelpers::WebViewHelper webViewHelper;
   1531     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-74.html", true, 0, 0, setViewportSettings);
   1532 
   1533     Page* page = webViewHelper.webViewImpl()->page();
   1534     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1535 
   1536     EXPECT_EQ(100, constraints.layoutSize.width());
   1537     EXPECT_EQ(110, constraints.layoutSize.height());
   1538     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1539     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1540     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1541     EXPECT_TRUE(page->viewportDescription().userZoom);
   1542 }
   1543 
   1544 TEST_F(ViewportTest, viewport75)
   1545 {
   1546     UseMockScrollbarSettings mockScrollbarSettings;
   1547     registerMockedHttpURLLoad("viewport/viewport-75.html");
   1548 
   1549     FrameTestHelpers::WebViewHelper webViewHelper;
   1550     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-75.html", true, 0, 0, setViewportSettings);
   1551 
   1552     Page* page = webViewHelper.webViewImpl()->page();
   1553     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1554 
   1555     EXPECT_EQ(64, constraints.layoutSize.width());
   1556     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1557     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1558     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1559     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1560     EXPECT_TRUE(page->viewportDescription().userZoom);
   1561 }
   1562 
   1563 TEST_F(ViewportTest, viewport76)
   1564 {
   1565     UseMockScrollbarSettings mockScrollbarSettings;
   1566     registerMockedHttpURLLoad("viewport/viewport-76.html");
   1567 
   1568     FrameTestHelpers::WebViewHelper webViewHelper;
   1569     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-76.html", true, 0, 0, setViewportSettings);
   1570 
   1571     Page* page = webViewHelper.webViewImpl()->page();
   1572     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1573 
   1574     EXPECT_EQ(32, constraints.layoutSize.width());
   1575     EXPECT_NEAR(35.2, constraints.layoutSize.height(), 0.01);
   1576     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
   1577     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
   1578     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
   1579     EXPECT_TRUE(page->viewportDescription().userZoom);
   1580 }
   1581 
   1582 TEST_F(ViewportTest, viewport77)
   1583 {
   1584     UseMockScrollbarSettings mockScrollbarSettings;
   1585     registerMockedHttpURLLoad("viewport/viewport-77.html");
   1586 
   1587     FrameTestHelpers::WebViewHelper webViewHelper;
   1588     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-77.html", true, 0, 0, setViewportSettings);
   1589 
   1590     Page* page = webViewHelper.webViewImpl()->page();
   1591     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1592 
   1593     EXPECT_EQ(1280, constraints.layoutSize.width());
   1594     EXPECT_EQ(1408, constraints.layoutSize.height());
   1595     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
   1596     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
   1597     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1598     EXPECT_TRUE(page->viewportDescription().userZoom);
   1599 }
   1600 
   1601 TEST_F(ViewportTest, viewport78)
   1602 {
   1603     UseMockScrollbarSettings mockScrollbarSettings;
   1604     registerMockedHttpURLLoad("viewport/viewport-78.html");
   1605 
   1606     FrameTestHelpers::WebViewHelper webViewHelper;
   1607     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-78.html", true, 0, 0, setViewportSettings);
   1608 
   1609     Page* page = webViewHelper.webViewImpl()->page();
   1610     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1611 
   1612     EXPECT_EQ(100, constraints.layoutSize.width());
   1613     EXPECT_EQ(110, constraints.layoutSize.height());
   1614     EXPECT_NEAR(3.2f, constraints.initialScale, 0.01f);
   1615     EXPECT_NEAR(3.2f, constraints.minimumScale, 0.01f);
   1616     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1617     EXPECT_TRUE(page->viewportDescription().userZoom);
   1618 }
   1619 
   1620 TEST_F(ViewportTest, viewport79)
   1621 {
   1622     UseMockScrollbarSettings mockScrollbarSettings;
   1623     registerMockedHttpURLLoad("viewport/viewport-79.html");
   1624 
   1625     FrameTestHelpers::WebViewHelper webViewHelper;
   1626     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-79.html", true, 0, 0, setViewportSettings);
   1627 
   1628     Page* page = webViewHelper.webViewImpl()->page();
   1629     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1630 
   1631     EXPECT_EQ(320, constraints.layoutSize.width());
   1632     EXPECT_EQ(352, constraints.layoutSize.height());
   1633     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1634     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1635     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1636     EXPECT_TRUE(page->viewportDescription().userZoom);
   1637 }
   1638 
   1639 TEST_F(ViewportTest, viewport80)
   1640 {
   1641     UseMockScrollbarSettings mockScrollbarSettings;
   1642     registerMockedHttpURLLoad("viewport/viewport-80.html");
   1643 
   1644     FrameTestHelpers::WebViewHelper webViewHelper;
   1645     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-80.html", true, 0, 0, setViewportSettings);
   1646 
   1647     Page* page = webViewHelper.webViewImpl()->page();
   1648     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1649 
   1650     EXPECT_EQ(320, constraints.layoutSize.width());
   1651     EXPECT_EQ(352, constraints.layoutSize.height());
   1652     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   1653     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   1654     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1655     EXPECT_TRUE(page->viewportDescription().userZoom);
   1656 }
   1657 
   1658 TEST_F(ViewportTest, viewport81)
   1659 {
   1660     UseMockScrollbarSettings mockScrollbarSettings;
   1661     registerMockedHttpURLLoad("viewport/viewport-81.html");
   1662 
   1663     FrameTestHelpers::WebViewHelper webViewHelper;
   1664     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-81.html", true, 0, 0, setViewportSettings);
   1665 
   1666     Page* page = webViewHelper.webViewImpl()->page();
   1667     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1668 
   1669     EXPECT_EQ(3000, constraints.layoutSize.width());
   1670     EXPECT_EQ(3300, constraints.layoutSize.height());
   1671     EXPECT_NEAR(0.25f, constraints.initialScale, 0.01f);
   1672     EXPECT_NEAR(0.25f, constraints.minimumScale, 0.01f);
   1673     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1674     EXPECT_TRUE(page->viewportDescription().userZoom);
   1675 }
   1676 
   1677 TEST_F(ViewportTest, viewport82)
   1678 {
   1679     UseMockScrollbarSettings mockScrollbarSettings;
   1680     registerMockedHttpURLLoad("viewport/viewport-82.html");
   1681 
   1682     FrameTestHelpers::WebViewHelper webViewHelper;
   1683     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-82.html", true, 0, 0, setViewportSettings);
   1684 
   1685     Page* page = webViewHelper.webViewImpl()->page();
   1686     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1687 
   1688     EXPECT_EQ(400, constraints.layoutSize.width());
   1689     EXPECT_EQ(440, constraints.layoutSize.height());
   1690     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   1691     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   1692     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1693     EXPECT_TRUE(page->viewportDescription().userZoom);
   1694 }
   1695 
   1696 TEST_F(ViewportTest, viewport83)
   1697 {
   1698     UseMockScrollbarSettings mockScrollbarSettings;
   1699     registerMockedHttpURLLoad("viewport/viewport-83.html");
   1700 
   1701     FrameTestHelpers::WebViewHelper webViewHelper;
   1702     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-83.html", true, 0, 0, setViewportSettings);
   1703 
   1704     Page* page = webViewHelper.webViewImpl()->page();
   1705     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1706 
   1707     EXPECT_EQ(64, constraints.layoutSize.width());
   1708     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1709     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1710     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1711     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1712     EXPECT_TRUE(page->viewportDescription().userZoom);
   1713 }
   1714 
   1715 TEST_F(ViewportTest, viewport84)
   1716 {
   1717     UseMockScrollbarSettings mockScrollbarSettings;
   1718     registerMockedHttpURLLoad("viewport/viewport-84.html");
   1719 
   1720     FrameTestHelpers::WebViewHelper webViewHelper;
   1721     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-84.html", true, 0, 0, setViewportSettings);
   1722 
   1723     Page* page = webViewHelper.webViewImpl()->page();
   1724     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1725 
   1726     EXPECT_EQ(64, constraints.layoutSize.width());
   1727     EXPECT_EQ(480, constraints.layoutSize.height());
   1728     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1729     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1730     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1731     EXPECT_TRUE(page->viewportDescription().userZoom);
   1732 }
   1733 
   1734 TEST_F(ViewportTest, viewport85)
   1735 {
   1736     UseMockScrollbarSettings mockScrollbarSettings;
   1737     registerMockedHttpURLLoad("viewport/viewport-85.html");
   1738 
   1739     FrameTestHelpers::WebViewHelper webViewHelper;
   1740     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-85.html", true, 0, 0, setViewportSettings);
   1741 
   1742     Page* page = webViewHelper.webViewImpl()->page();
   1743     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1744 
   1745     EXPECT_EQ(540, constraints.layoutSize.width());
   1746     EXPECT_EQ(594, constraints.layoutSize.height());
   1747     EXPECT_NEAR(0.59f, constraints.initialScale, 0.01f);
   1748     EXPECT_NEAR(0.59f, constraints.minimumScale, 0.01f);
   1749     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1750     EXPECT_TRUE(page->viewportDescription().userZoom);
   1751 }
   1752 
   1753 TEST_F(ViewportTest, viewport86)
   1754 {
   1755     UseMockScrollbarSettings mockScrollbarSettings;
   1756     registerMockedHttpURLLoad("viewport/viewport-86.html");
   1757 
   1758     FrameTestHelpers::WebViewHelper webViewHelper;
   1759     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-86.html", true, 0, 0, setViewportSettings);
   1760 
   1761     Page* page = webViewHelper.webViewImpl()->page();
   1762     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1763 
   1764     EXPECT_NEAR(457.14, constraints.layoutSize.width(), 0.01f);
   1765     EXPECT_NEAR(502.86, constraints.layoutSize.height(), 0.01f);
   1766     EXPECT_NEAR(0.7f, constraints.initialScale, 0.01f);
   1767     EXPECT_NEAR(0.7f, constraints.minimumScale, 0.01f);
   1768     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1769     EXPECT_TRUE(page->viewportDescription().userZoom);
   1770 }
   1771 
   1772 TEST_F(ViewportTest, viewport87)
   1773 {
   1774     UseMockScrollbarSettings mockScrollbarSettings;
   1775     registerMockedHttpURLLoad("viewport/viewport-87.html");
   1776 
   1777     FrameTestHelpers::WebViewHelper webViewHelper;
   1778     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-87.html", true, 0, 0, setViewportSettings);
   1779 
   1780     Page* page = webViewHelper.webViewImpl()->page();
   1781     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1782 
   1783     EXPECT_EQ(64, constraints.layoutSize.width());
   1784     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   1785     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   1786     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   1787     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1788     EXPECT_TRUE(page->viewportDescription().userZoom);
   1789 }
   1790 
   1791 TEST_F(ViewportTest, viewport88)
   1792 {
   1793     UseMockScrollbarSettings mockScrollbarSettings;
   1794     registerMockedHttpURLLoad("viewport/viewport-88.html");
   1795 
   1796     FrameTestHelpers::WebViewHelper webViewHelper;
   1797     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-88.html", true, 0, 0, setViewportSettings);
   1798 
   1799     Page* page = webViewHelper.webViewImpl()->page();
   1800     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1801 
   1802     EXPECT_EQ(980, constraints.layoutSize.width());
   1803     EXPECT_EQ(1078, constraints.layoutSize.height());
   1804     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1805     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1806     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1807     EXPECT_TRUE(page->viewportDescription().userZoom);
   1808 }
   1809 
   1810 TEST_F(ViewportTest, viewport90)
   1811 {
   1812     UseMockScrollbarSettings mockScrollbarSettings;
   1813     registerMockedHttpURLLoad("viewport/viewport-90.html");
   1814 
   1815     FrameTestHelpers::WebViewHelper webViewHelper;
   1816     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-90.html", true, 0, 0, setViewportSettings);
   1817 
   1818     Page* page = webViewHelper.webViewImpl()->page();
   1819     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1820 
   1821     EXPECT_EQ(700, constraints.layoutSize.width());
   1822     EXPECT_EQ(770, constraints.layoutSize.height());
   1823     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
   1824     EXPECT_NEAR(0.46f, constraints.minimumScale, 0.01f);
   1825     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1826     EXPECT_TRUE(page->viewportDescription().userZoom);
   1827 }
   1828 
   1829 TEST_F(ViewportTest, viewport100)
   1830 {
   1831     UseMockScrollbarSettings mockScrollbarSettings;
   1832     registerMockedHttpURLLoad("viewport/viewport-100.html");
   1833 
   1834     FrameTestHelpers::WebViewHelper webViewHelper;
   1835     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-100.html", true, 0, 0, setViewportSettings);
   1836 
   1837     Page* page = webViewHelper.webViewImpl()->page();
   1838     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1839 
   1840     EXPECT_EQ(400, constraints.layoutSize.width());
   1841     EXPECT_EQ(440, constraints.layoutSize.height());
   1842     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   1843     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   1844     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1845     EXPECT_TRUE(page->viewportDescription().userZoom);
   1846 }
   1847 
   1848 TEST_F(ViewportTest, viewport101)
   1849 {
   1850     UseMockScrollbarSettings mockScrollbarSettings;
   1851     registerMockedHttpURLLoad("viewport/viewport-101.html");
   1852 
   1853     FrameTestHelpers::WebViewHelper webViewHelper;
   1854     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-101.html", true, 0, 0, setViewportSettings);
   1855 
   1856     Page* page = webViewHelper.webViewImpl()->page();
   1857     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1858 
   1859     EXPECT_EQ(400, constraints.layoutSize.width());
   1860     EXPECT_EQ(440, constraints.layoutSize.height());
   1861     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   1862     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   1863     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1864     EXPECT_TRUE(page->viewportDescription().userZoom);
   1865 }
   1866 
   1867 TEST_F(ViewportTest, viewport102)
   1868 {
   1869     UseMockScrollbarSettings mockScrollbarSettings;
   1870     registerMockedHttpURLLoad("viewport/viewport-102.html");
   1871 
   1872     FrameTestHelpers::WebViewHelper webViewHelper;
   1873     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-102.html", true, 0, 0, setViewportSettings);
   1874 
   1875     Page* page = webViewHelper.webViewImpl()->page();
   1876     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1877 
   1878     EXPECT_EQ(400, constraints.layoutSize.width());
   1879     EXPECT_EQ(440, constraints.layoutSize.height());
   1880     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   1881     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   1882     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1883     EXPECT_TRUE(page->viewportDescription().userZoom);
   1884 }
   1885 
   1886 TEST_F(ViewportTest, viewport103)
   1887 {
   1888     UseMockScrollbarSettings mockScrollbarSettings;
   1889     registerMockedHttpURLLoad("viewport/viewport-103.html");
   1890 
   1891     FrameTestHelpers::WebViewHelper webViewHelper;
   1892     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-103.html", true, 0, 0, setViewportSettings);
   1893 
   1894     Page* page = webViewHelper.webViewImpl()->page();
   1895     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1896 
   1897     EXPECT_EQ(400, constraints.layoutSize.width());
   1898     EXPECT_EQ(440, constraints.layoutSize.height());
   1899     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   1900     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   1901     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1902     EXPECT_TRUE(page->viewportDescription().userZoom);
   1903 }
   1904 
   1905 TEST_F(ViewportTest, viewport104)
   1906 {
   1907     UseMockScrollbarSettings mockScrollbarSettings;
   1908     registerMockedHttpURLLoad("viewport/viewport-104.html");
   1909 
   1910     FrameTestHelpers::WebViewHelper webViewHelper;
   1911     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-104.html", true, 0, 0, setViewportSettings);
   1912 
   1913     Page* page = webViewHelper.webViewImpl()->page();
   1914     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1915 
   1916     EXPECT_EQ(980, constraints.layoutSize.width());
   1917     EXPECT_EQ(1078, constraints.layoutSize.height());
   1918     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1919     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1920     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1921     EXPECT_TRUE(page->viewportDescription().userZoom);
   1922 }
   1923 
   1924 TEST_F(ViewportTest, viewport105)
   1925 {
   1926     UseMockScrollbarSettings mockScrollbarSettings;
   1927     registerMockedHttpURLLoad("viewport/viewport-105.html");
   1928 
   1929     FrameTestHelpers::WebViewHelper webViewHelper;
   1930     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-105.html", true, 0, 0, setViewportSettings);
   1931 
   1932     Page* page = webViewHelper.webViewImpl()->page();
   1933     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1934 
   1935     EXPECT_EQ(980, constraints.layoutSize.width());
   1936     EXPECT_EQ(1078, constraints.layoutSize.height());
   1937     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1938     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1939     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1940     EXPECT_TRUE(page->viewportDescription().userZoom);
   1941 }
   1942 
   1943 TEST_F(ViewportTest, viewport106)
   1944 {
   1945     UseMockScrollbarSettings mockScrollbarSettings;
   1946     registerMockedHttpURLLoad("viewport/viewport-106.html");
   1947 
   1948     FrameTestHelpers::WebViewHelper webViewHelper;
   1949     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-106.html", true, 0, 0, setViewportSettings);
   1950 
   1951     Page* page = webViewHelper.webViewImpl()->page();
   1952     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1953 
   1954     EXPECT_EQ(980, constraints.layoutSize.width());
   1955     EXPECT_EQ(1078, constraints.layoutSize.height());
   1956     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1957     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1958     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1959     EXPECT_TRUE(page->viewportDescription().userZoom);
   1960 }
   1961 
   1962 TEST_F(ViewportTest, viewport107)
   1963 {
   1964     UseMockScrollbarSettings mockScrollbarSettings;
   1965     registerMockedHttpURLLoad("viewport/viewport-107.html");
   1966 
   1967     FrameTestHelpers::WebViewHelper webViewHelper;
   1968     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-107.html", true, 0, 0, setViewportSettings);
   1969 
   1970     Page* page = webViewHelper.webViewImpl()->page();
   1971     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1972 
   1973     EXPECT_EQ(980, constraints.layoutSize.width());
   1974     EXPECT_EQ(1078, constraints.layoutSize.height());
   1975     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1976     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1977     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1978     EXPECT_TRUE(page->viewportDescription().userZoom);
   1979 }
   1980 
   1981 TEST_F(ViewportTest, viewport108)
   1982 {
   1983     UseMockScrollbarSettings mockScrollbarSettings;
   1984     registerMockedHttpURLLoad("viewport/viewport-108.html");
   1985 
   1986     FrameTestHelpers::WebViewHelper webViewHelper;
   1987     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-108.html", true, 0, 0, setViewportSettings);
   1988 
   1989     Page* page = webViewHelper.webViewImpl()->page();
   1990     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   1991 
   1992     EXPECT_EQ(980, constraints.layoutSize.width());
   1993     EXPECT_EQ(1078, constraints.layoutSize.height());
   1994     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   1995     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   1996     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   1997     EXPECT_TRUE(page->viewportDescription().userZoom);
   1998 }
   1999 
   2000 TEST_F(ViewportTest, viewport109)
   2001 {
   2002     UseMockScrollbarSettings mockScrollbarSettings;
   2003     registerMockedHttpURLLoad("viewport/viewport-109.html");
   2004 
   2005     FrameTestHelpers::WebViewHelper webViewHelper;
   2006     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-109.html", true, 0, 0, setViewportSettings);
   2007 
   2008     Page* page = webViewHelper.webViewImpl()->page();
   2009     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2010 
   2011     EXPECT_EQ(980, constraints.layoutSize.width());
   2012     EXPECT_EQ(1078, constraints.layoutSize.height());
   2013     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2014     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2015     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2016     EXPECT_TRUE(page->viewportDescription().userZoom);
   2017 }
   2018 
   2019 TEST_F(ViewportTest, viewport110)
   2020 {
   2021     UseMockScrollbarSettings mockScrollbarSettings;
   2022     registerMockedHttpURLLoad("viewport/viewport-110.html");
   2023 
   2024     FrameTestHelpers::WebViewHelper webViewHelper;
   2025     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-110.html", true, 0, 0, setViewportSettings);
   2026 
   2027     Page* page = webViewHelper.webViewImpl()->page();
   2028     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2029 
   2030     EXPECT_EQ(980, constraints.layoutSize.width());
   2031     EXPECT_EQ(1078, constraints.layoutSize.height());
   2032     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2033     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2034     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2035     EXPECT_TRUE(page->viewportDescription().userZoom);
   2036 }
   2037 
   2038 TEST_F(ViewportTest, viewport111)
   2039 {
   2040     UseMockScrollbarSettings mockScrollbarSettings;
   2041     registerMockedHttpURLLoad("viewport/viewport-111.html");
   2042 
   2043     FrameTestHelpers::WebViewHelper webViewHelper;
   2044     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-111.html", true, 0, 0, setViewportSettings);
   2045 
   2046     Page* page = webViewHelper.webViewImpl()->page();
   2047     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2048 
   2049     EXPECT_EQ(980, constraints.layoutSize.width());
   2050     EXPECT_EQ(1078, constraints.layoutSize.height());
   2051     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2052     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2053     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2054     EXPECT_TRUE(page->viewportDescription().userZoom);
   2055 }
   2056 
   2057 TEST_F(ViewportTest, viewport112)
   2058 {
   2059     UseMockScrollbarSettings mockScrollbarSettings;
   2060     registerMockedHttpURLLoad("viewport/viewport-112.html");
   2061 
   2062     FrameTestHelpers::WebViewHelper webViewHelper;
   2063     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-112.html", true, 0, 0, setViewportSettings);
   2064 
   2065     Page* page = webViewHelper.webViewImpl()->page();
   2066     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2067 
   2068     EXPECT_EQ(400, constraints.layoutSize.width());
   2069     EXPECT_EQ(440, constraints.layoutSize.height());
   2070     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   2071     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   2072     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2073     EXPECT_TRUE(page->viewportDescription().userZoom);
   2074 }
   2075 
   2076 TEST_F(ViewportTest, viewport113)
   2077 {
   2078     UseMockScrollbarSettings mockScrollbarSettings;
   2079     registerMockedHttpURLLoad("viewport/viewport-113.html");
   2080 
   2081     FrameTestHelpers::WebViewHelper webViewHelper;
   2082     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-113.html", true, 0, 0, setViewportSettings);
   2083 
   2084     Page* page = webViewHelper.webViewImpl()->page();
   2085     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2086 
   2087     EXPECT_EQ(980, constraints.layoutSize.width());
   2088     EXPECT_EQ(1078, constraints.layoutSize.height());
   2089     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2090     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2091     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2092     EXPECT_TRUE(page->viewportDescription().userZoom);
   2093 }
   2094 
   2095 TEST_F(ViewportTest, viewport114)
   2096 {
   2097     UseMockScrollbarSettings mockScrollbarSettings;
   2098     registerMockedHttpURLLoad("viewport/viewport-114.html");
   2099 
   2100     FrameTestHelpers::WebViewHelper webViewHelper;
   2101     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-114.html", true, 0, 0, setViewportSettings);
   2102 
   2103     Page* page = webViewHelper.webViewImpl()->page();
   2104     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2105 
   2106     EXPECT_EQ(980, constraints.layoutSize.width());
   2107     EXPECT_EQ(1078, constraints.layoutSize.height());
   2108     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2109     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2110     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2111     EXPECT_TRUE(page->viewportDescription().userZoom);
   2112 }
   2113 
   2114 TEST_F(ViewportTest, viewport115)
   2115 {
   2116     UseMockScrollbarSettings mockScrollbarSettings;
   2117     registerMockedHttpURLLoad("viewport/viewport-115.html");
   2118 
   2119     FrameTestHelpers::WebViewHelper webViewHelper;
   2120     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-115.html", true, 0, 0, setViewportSettings);
   2121 
   2122     Page* page = webViewHelper.webViewImpl()->page();
   2123     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2124 
   2125     EXPECT_EQ(400, constraints.layoutSize.width());
   2126     EXPECT_EQ(440, constraints.layoutSize.height());
   2127     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   2128     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   2129     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2130     EXPECT_TRUE(page->viewportDescription().userZoom);
   2131 }
   2132 
   2133 TEST_F(ViewportTest, viewport116)
   2134 {
   2135     UseMockScrollbarSettings mockScrollbarSettings;
   2136     registerMockedHttpURLLoad("viewport/viewport-116.html");
   2137 
   2138     FrameTestHelpers::WebViewHelper webViewHelper;
   2139     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-116.html", true, 0, 0, setViewportSettings);
   2140 
   2141     Page* page = webViewHelper.webViewImpl()->page();
   2142     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2143 
   2144     EXPECT_EQ(400, constraints.layoutSize.width());
   2145     EXPECT_EQ(440, constraints.layoutSize.height());
   2146     EXPECT_NEAR(0.8f, constraints.initialScale, 0.01f);
   2147     EXPECT_NEAR(0.8f, constraints.minimumScale, 0.01f);
   2148     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2149     EXPECT_TRUE(page->viewportDescription().userZoom);
   2150 }
   2151 
   2152 TEST_F(ViewportTest, viewport117)
   2153 {
   2154     UseMockScrollbarSettings mockScrollbarSettings;
   2155     registerMockedHttpURLLoad("viewport/viewport-117.html");
   2156 
   2157     FrameTestHelpers::WebViewHelper webViewHelper;
   2158     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-117.html", true, 0, 0, setViewportSettings);
   2159 
   2160     Page* page = webViewHelper.webViewImpl()->page();
   2161     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2162 
   2163     EXPECT_EQ(980, constraints.layoutSize.width());
   2164     EXPECT_EQ(400, constraints.layoutSize.height());
   2165     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2166     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2167     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2168     EXPECT_TRUE(page->viewportDescription().userZoom);
   2169 }
   2170 
   2171 TEST_F(ViewportTest, viewport118)
   2172 {
   2173     UseMockScrollbarSettings mockScrollbarSettings;
   2174     registerMockedHttpURLLoad("viewport/viewport-118.html");
   2175 
   2176     FrameTestHelpers::WebViewHelper webViewHelper;
   2177     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-118.html", true, 0, 0, setViewportSettings);
   2178 
   2179     Page* page = webViewHelper.webViewImpl()->page();
   2180     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2181 
   2182     EXPECT_EQ(320, constraints.layoutSize.width());
   2183     EXPECT_EQ(352, constraints.layoutSize.height());
   2184     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2185     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2186     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2187     EXPECT_TRUE(page->viewportDescription().userZoom);
   2188 }
   2189 
   2190 TEST_F(ViewportTest, viewport119)
   2191 {
   2192     UseMockScrollbarSettings mockScrollbarSettings;
   2193     registerMockedHttpURLLoad("viewport/viewport-119.html");
   2194 
   2195     FrameTestHelpers::WebViewHelper webViewHelper;
   2196     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-119.html", true, 0, 0, setViewportSettings);
   2197 
   2198     Page* page = webViewHelper.webViewImpl()->page();
   2199     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2200 
   2201     EXPECT_EQ(320, constraints.layoutSize.width());
   2202     EXPECT_EQ(352, constraints.layoutSize.height());
   2203     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2204     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2205     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2206     EXPECT_TRUE(page->viewportDescription().userZoom);
   2207 }
   2208 
   2209 TEST_F(ViewportTest, viewport120)
   2210 {
   2211     UseMockScrollbarSettings mockScrollbarSettings;
   2212     registerMockedHttpURLLoad("viewport/viewport-120.html");
   2213 
   2214     FrameTestHelpers::WebViewHelper webViewHelper;
   2215     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-120.html", true, 0, 0, setViewportSettings);
   2216 
   2217     Page* page = webViewHelper.webViewImpl()->page();
   2218     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2219 
   2220     EXPECT_EQ(320, constraints.layoutSize.width());
   2221     EXPECT_EQ(352, constraints.layoutSize.height());
   2222     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2223     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2224     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2225     EXPECT_TRUE(page->viewportDescription().userZoom);
   2226 }
   2227 
   2228 TEST_F(ViewportTest, viewport121)
   2229 {
   2230     UseMockScrollbarSettings mockScrollbarSettings;
   2231     registerMockedHttpURLLoad("viewport/viewport-121.html");
   2232 
   2233     FrameTestHelpers::WebViewHelper webViewHelper;
   2234     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-121.html", true, 0, 0, setViewportSettings);
   2235 
   2236     Page* page = webViewHelper.webViewImpl()->page();
   2237     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2238 
   2239     EXPECT_EQ(64, constraints.layoutSize.width());
   2240     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   2241     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   2242     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   2243     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2244     EXPECT_TRUE(page->viewportDescription().userZoom);
   2245 }
   2246 
   2247 TEST_F(ViewportTest, viewport122)
   2248 {
   2249     UseMockScrollbarSettings mockScrollbarSettings;
   2250     registerMockedHttpURLLoad("viewport/viewport-122.html");
   2251 
   2252     FrameTestHelpers::WebViewHelper webViewHelper;
   2253     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-122.html", true, 0, 0, setViewportSettings);
   2254 
   2255     Page* page = webViewHelper.webViewImpl()->page();
   2256     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2257 
   2258     EXPECT_EQ(64, constraints.layoutSize.width());
   2259     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   2260     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   2261     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   2262     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2263     EXPECT_TRUE(page->viewportDescription().userZoom);
   2264 }
   2265 
   2266 TEST_F(ViewportTest, viewport123)
   2267 {
   2268     UseMockScrollbarSettings mockScrollbarSettings;
   2269     registerMockedHttpURLLoad("viewport/viewport-123.html");
   2270 
   2271     FrameTestHelpers::WebViewHelper webViewHelper;
   2272     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-123.html", true, 0, 0, setViewportSettings);
   2273 
   2274     Page* page = webViewHelper.webViewImpl()->page();
   2275     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2276 
   2277     EXPECT_EQ(320, constraints.layoutSize.width());
   2278     EXPECT_EQ(352, constraints.layoutSize.height());
   2279     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2280     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2281     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2282     EXPECT_TRUE(page->viewportDescription().userZoom);
   2283 }
   2284 
   2285 TEST_F(ViewportTest, viewport124)
   2286 {
   2287     UseMockScrollbarSettings mockScrollbarSettings;
   2288     registerMockedHttpURLLoad("viewport/viewport-124.html");
   2289 
   2290     FrameTestHelpers::WebViewHelper webViewHelper;
   2291     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-124.html", true, 0, 0, setViewportSettings);
   2292 
   2293     Page* page = webViewHelper.webViewImpl()->page();
   2294     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2295 
   2296     EXPECT_EQ(320, constraints.layoutSize.width());
   2297     EXPECT_EQ(352, constraints.layoutSize.height());
   2298     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2299     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2300     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2301     EXPECT_TRUE(page->viewportDescription().userZoom);
   2302 }
   2303 
   2304 TEST_F(ViewportTest, viewport125)
   2305 {
   2306     UseMockScrollbarSettings mockScrollbarSettings;
   2307     registerMockedHttpURLLoad("viewport/viewport-125.html");
   2308 
   2309     FrameTestHelpers::WebViewHelper webViewHelper;
   2310     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-125.html", true, 0, 0, setViewportSettings);
   2311 
   2312     Page* page = webViewHelper.webViewImpl()->page();
   2313     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2314 
   2315     EXPECT_EQ(64, constraints.layoutSize.width());
   2316     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   2317     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   2318     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   2319     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2320     EXPECT_TRUE(page->viewportDescription().userZoom);
   2321 }
   2322 
   2323 TEST_F(ViewportTest, viewport126)
   2324 {
   2325     UseMockScrollbarSettings mockScrollbarSettings;
   2326     registerMockedHttpURLLoad("viewport/viewport-126.html");
   2327 
   2328     FrameTestHelpers::WebViewHelper webViewHelper;
   2329     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-126.html", true, 0, 0, setViewportSettings);
   2330 
   2331     Page* page = webViewHelper.webViewImpl()->page();
   2332     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2333 
   2334     EXPECT_EQ(64, constraints.layoutSize.width());
   2335     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   2336     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   2337     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   2338     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2339     EXPECT_TRUE(page->viewportDescription().userZoom);
   2340 }
   2341 
   2342 TEST_F(ViewportTest, viewport127)
   2343 {
   2344     UseMockScrollbarSettings mockScrollbarSettings;
   2345     registerMockedHttpURLLoad("viewport/viewport-127.html");
   2346 
   2347     FrameTestHelpers::WebViewHelper webViewHelper;
   2348     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-127.html", true, 0, 0, setViewportSettings);
   2349 
   2350     Page* page = webViewHelper.webViewImpl()->page();
   2351     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2352 
   2353     EXPECT_EQ(64, constraints.layoutSize.width());
   2354     EXPECT_NEAR(70.4, constraints.layoutSize.height(), 0.01f);
   2355     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   2356     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   2357     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2358     EXPECT_TRUE(page->viewportDescription().userZoom);
   2359 }
   2360 
   2361 TEST_F(ViewportTest, viewport129)
   2362 {
   2363     UseMockScrollbarSettings mockScrollbarSettings;
   2364     registerMockedHttpURLLoad("viewport/viewport-129.html");
   2365 
   2366     FrameTestHelpers::WebViewHelper webViewHelper;
   2367     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-129.html", true, 0, 0, setViewportSettings);
   2368 
   2369     Page* page = webViewHelper.webViewImpl()->page();
   2370     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2371 
   2372     EXPECT_EQ(123, constraints.layoutSize.width());
   2373     EXPECT_NEAR(135.3, constraints.layoutSize.height(), 0.01f);
   2374     EXPECT_NEAR(2.60f, constraints.initialScale, 0.01f);
   2375     EXPECT_NEAR(2.60f, constraints.minimumScale, 0.01f);
   2376     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2377     EXPECT_TRUE(page->viewportDescription().userZoom);
   2378 }
   2379 
   2380 TEST_F(ViewportTest, viewport130)
   2381 {
   2382     UseMockScrollbarSettings mockScrollbarSettings;
   2383     registerMockedHttpURLLoad("viewport/viewport-130.html");
   2384 
   2385     FrameTestHelpers::WebViewHelper webViewHelper;
   2386     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-130.html", true, 0, 0, setViewportSettings);
   2387 
   2388     Page* page = webViewHelper.webViewImpl()->page();
   2389     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2390 
   2391     EXPECT_EQ(320, constraints.layoutSize.width());
   2392     EXPECT_EQ(352, constraints.layoutSize.height());
   2393     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2394     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2395     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2396     EXPECT_TRUE(page->viewportDescription().userZoom);
   2397 }
   2398 
   2399 TEST_F(ViewportTest, viewport131)
   2400 {
   2401     UseMockScrollbarSettings mockScrollbarSettings;
   2402     registerMockedHttpURLLoad("viewport/viewport-131.html");
   2403 
   2404     FrameTestHelpers::WebViewHelper webViewHelper;
   2405     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-131.html", true, 0, 0, setViewportSettings);
   2406 
   2407     Page* page = webViewHelper.webViewImpl()->page();
   2408     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2409 
   2410     EXPECT_EQ(320, constraints.layoutSize.width());
   2411     EXPECT_EQ(352, constraints.layoutSize.height());
   2412     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2413     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2414     EXPECT_NEAR(1.0f, constraints.maximumScale, 0.01f);
   2415     EXPECT_FALSE(page->viewportDescription().userZoom);
   2416 }
   2417 
   2418 TEST_F(ViewportTest, viewport132)
   2419 {
   2420     UseMockScrollbarSettings mockScrollbarSettings;
   2421     registerMockedHttpURLLoad("viewport/viewport-132.html");
   2422 
   2423     FrameTestHelpers::WebViewHelper webViewHelper;
   2424     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-132.html", true, 0, 0, setViewportSettings);
   2425 
   2426     Page* page = webViewHelper.webViewImpl()->page();
   2427     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2428 
   2429     EXPECT_EQ(320, constraints.layoutSize.width());
   2430     EXPECT_EQ(352, constraints.layoutSize.height());
   2431     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2432     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2433     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2434     EXPECT_TRUE(page->viewportDescription().userZoom);
   2435 }
   2436 
   2437 TEST_F(ViewportTest, viewport133)
   2438 {
   2439     UseMockScrollbarSettings mockScrollbarSettings;
   2440     registerMockedHttpURLLoad("viewport/viewport-133.html");
   2441 
   2442     FrameTestHelpers::WebViewHelper webViewHelper;
   2443     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-133.html", true, 0, 0, setViewportSettings);
   2444 
   2445     Page* page = webViewHelper.webViewImpl()->page();
   2446     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2447 
   2448     EXPECT_EQ(980, constraints.layoutSize.width());
   2449     EXPECT_EQ(1078, constraints.layoutSize.height());
   2450     EXPECT_NEAR(10.0f, constraints.initialScale, 0.01f);
   2451     EXPECT_NEAR(10.0f, constraints.minimumScale, 0.01f);
   2452     EXPECT_NEAR(10.0f, constraints.maximumScale, 0.01f);
   2453     EXPECT_TRUE(page->viewportDescription().userZoom);
   2454 }
   2455 
   2456 TEST_F(ViewportTest, viewport134)
   2457 {
   2458     UseMockScrollbarSettings mockScrollbarSettings;
   2459     registerMockedHttpURLLoad("viewport/viewport-134.html");
   2460 
   2461     FrameTestHelpers::WebViewHelper webViewHelper;
   2462     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-134.html", true, 0, 0, setViewportSettings);
   2463 
   2464     Page* page = webViewHelper.webViewImpl()->page();
   2465     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2466 
   2467     EXPECT_EQ(160, constraints.layoutSize.width());
   2468     EXPECT_EQ(176, constraints.layoutSize.height());
   2469     EXPECT_NEAR(2.0f, constraints.initialScale, 0.01f);
   2470     EXPECT_NEAR(2.0f, constraints.minimumScale, 0.01f);
   2471     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2472     EXPECT_TRUE(page->viewportDescription().userZoom);
   2473 }
   2474 
   2475 TEST_F(ViewportTest, viewport135)
   2476 {
   2477     UseMockScrollbarSettings mockScrollbarSettings;
   2478     registerMockedHttpURLLoad("viewport/viewport-135.html");
   2479 
   2480     FrameTestHelpers::WebViewHelper webViewHelper;
   2481     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-135.html", true, 0, 0, setViewportSettings);
   2482 
   2483     Page* page = webViewHelper.webViewImpl()->page();
   2484     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2485 
   2486     EXPECT_EQ(980, constraints.layoutSize.width());
   2487     EXPECT_EQ(1078, constraints.layoutSize.height());
   2488     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2489     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2490     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2491     EXPECT_TRUE(page->viewportDescription().userZoom);
   2492 }
   2493 
   2494 TEST_F(ViewportTest, viewport136)
   2495 {
   2496     UseMockScrollbarSettings mockScrollbarSettings;
   2497     registerMockedHttpURLLoad("viewport/viewport-136.html");
   2498 
   2499     FrameTestHelpers::WebViewHelper webViewHelper;
   2500     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-136.html", true, 0, 0, setViewportSettings);
   2501 
   2502     Page* page = webViewHelper.webViewImpl()->page();
   2503     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2504 
   2505     EXPECT_EQ(320, constraints.layoutSize.width());
   2506     EXPECT_EQ(352, constraints.layoutSize.height());
   2507     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2508     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2509     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2510     EXPECT_TRUE(page->viewportDescription().userZoom);
   2511 }
   2512 
   2513 TEST_F(ViewportTest, viewport137)
   2514 {
   2515     UseMockScrollbarSettings mockScrollbarSettings;
   2516     registerMockedHttpURLLoad("viewport/viewport-137.html");
   2517 
   2518     FrameTestHelpers::WebViewHelper webViewHelper;
   2519     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-137.html", true, 0, 0, setViewportSettings);
   2520 
   2521     Page* page = webViewHelper.webViewImpl()->page();
   2522     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2523 
   2524     EXPECT_EQ(980, constraints.layoutSize.width());
   2525     EXPECT_EQ(1078, constraints.layoutSize.height());
   2526     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   2527     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   2528     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2529     EXPECT_TRUE(page->viewportDescription().userZoom);
   2530 }
   2531 
   2532 TEST_F(ViewportTest, viewport138)
   2533 {
   2534     registerMockedHttpURLLoad("viewport/viewport-138.html");
   2535 
   2536     FrameTestHelpers::WebViewHelper webViewHelper;
   2537     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-138.html", true, 0, 0, setViewportSettings);
   2538 
   2539     Page* page = webViewHelper.webViewImpl()->page();
   2540     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2541 
   2542     EXPECT_NEAR(123.0f, constraints.layoutSize.width(), 0.01);
   2543     EXPECT_NEAR(135.3f, constraints.layoutSize.height(), 0.01);
   2544     EXPECT_NEAR(2.60f, constraints.initialScale, 0.01f);
   2545     EXPECT_NEAR(2.60f, constraints.minimumScale, 0.01f);
   2546     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2547     EXPECT_TRUE(page->viewportDescription().userZoom);
   2548 }
   2549 
   2550 TEST_F(ViewportTest, viewportLegacyHandheldFriendly)
   2551 {
   2552     UseMockScrollbarSettings mockScrollbarSettings;
   2553     registerMockedHttpURLLoad("viewport/viewport-legacy-handheldfriendly.html");
   2554 
   2555     FrameTestHelpers::WebViewHelper webViewHelper;
   2556     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-handheldfriendly.html", true, 0, 0, setViewportSettings);
   2557 
   2558     Page* page = webViewHelper.webViewImpl()->page();
   2559     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2560 
   2561     EXPECT_EQ(320, constraints.layoutSize.width());
   2562     EXPECT_EQ(352, constraints.layoutSize.height());
   2563     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2564     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2565     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2566     EXPECT_TRUE(page->viewportDescription().userZoom);
   2567 }
   2568 
   2569 static void setQuirkViewportSettings(WebSettings* settings)
   2570 {
   2571     setViewportSettings(settings);
   2572 
   2573     // This quirk allows content attributes of meta viewport tags to be merged.
   2574     settings->setViewportMetaMergeContentQuirk(true);
   2575 }
   2576 
   2577 TEST_F(ViewportTest, viewportLegacyMergeQuirk1)
   2578 {
   2579     UseMockScrollbarSettings mockScrollbarSettings;
   2580     registerMockedHttpURLLoad("viewport/viewport-legacy-merge-quirk-1.html");
   2581 
   2582     FrameTestHelpers::WebViewHelper webViewHelper;
   2583     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-merge-quirk-1.html", true, 0, 0, setQuirkViewportSettings);
   2584 
   2585     Page* page = webViewHelper.webViewImpl()->page();
   2586     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2587 
   2588     EXPECT_EQ(640, constraints.layoutSize.width());
   2589     EXPECT_EQ(704, constraints.layoutSize.height());
   2590     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2591     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2592     EXPECT_NEAR(1.0f, constraints.maximumScale, 0.01f);
   2593     EXPECT_FALSE(page->viewportDescription().userZoom);
   2594 }
   2595 
   2596 TEST_F(ViewportTest, viewportLegacyMergeQuirk2)
   2597 {
   2598     UseMockScrollbarSettings mockScrollbarSettings;
   2599     registerMockedHttpURLLoad("viewport/viewport-legacy-merge-quirk-2.html");
   2600 
   2601     FrameTestHelpers::WebViewHelper webViewHelper;
   2602     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-merge-quirk-2.html", true, 0, 0, setQuirkViewportSettings);
   2603 
   2604     Page* page = webViewHelper.webViewImpl()->page();
   2605 
   2606     // This quirk allows content attributes of meta viewport tags to be merged.
   2607     page->settings().setViewportMetaMergeContentQuirk(true);
   2608     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2609 
   2610     EXPECT_EQ(500, constraints.layoutSize.width());
   2611     EXPECT_EQ(550, constraints.layoutSize.height());
   2612     EXPECT_NEAR(2.0f, constraints.initialScale, 0.01f);
   2613     EXPECT_NEAR(2.0f, constraints.minimumScale, 0.01f);
   2614     EXPECT_NEAR(2.0f, constraints.maximumScale, 0.01f);
   2615     EXPECT_FALSE(page->viewportDescription().userZoom);
   2616 }
   2617 
   2618 TEST_F(ViewportTest, viewportLegacyMobileOptimizedMetaWithoutContent)
   2619 {
   2620     UseMockScrollbarSettings mockScrollbarSettings;
   2621     registerMockedHttpURLLoad("viewport/viewport-legacy-mobileoptimized.html");
   2622 
   2623     FrameTestHelpers::WebViewHelper webViewHelper;
   2624     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-mobileoptimized.html", true, 0, 0, setViewportSettings);
   2625 
   2626     Page* page = webViewHelper.webViewImpl()->page();
   2627 
   2628     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2629 
   2630     EXPECT_EQ(320, constraints.layoutSize.width());
   2631     EXPECT_EQ(352, constraints.layoutSize.height());
   2632     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2633     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2634     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2635     EXPECT_TRUE(page->viewportDescription().userZoom);
   2636 }
   2637 
   2638 TEST_F(ViewportTest, viewportLegacyMobileOptimizedMetaWith0)
   2639 {
   2640     UseMockScrollbarSettings mockScrollbarSettings;
   2641     registerMockedHttpURLLoad("viewport/viewport-legacy-mobileoptimized-2.html");
   2642 
   2643     FrameTestHelpers::WebViewHelper webViewHelper;
   2644     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-mobileoptimized-2.html", true, 0, 0, setViewportSettings);
   2645 
   2646     Page* page = webViewHelper.webViewImpl()->page();
   2647 
   2648     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2649 
   2650     EXPECT_EQ(320, constraints.layoutSize.width());
   2651     EXPECT_EQ(352, constraints.layoutSize.height());
   2652     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2653     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2654     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2655     EXPECT_TRUE(page->viewportDescription().userZoom);
   2656 }
   2657 
   2658 TEST_F(ViewportTest, viewportLegacyMobileOptimizedMetaWith400)
   2659 {
   2660     UseMockScrollbarSettings mockScrollbarSettings;
   2661     registerMockedHttpURLLoad("viewport/viewport-legacy-mobileoptimized-2.html");
   2662 
   2663     FrameTestHelpers::WebViewHelper webViewHelper;
   2664     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-mobileoptimized-2.html", true, 0, 0, setViewportSettings);
   2665 
   2666     Page* page = webViewHelper.webViewImpl()->page();
   2667 
   2668     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2669 
   2670     EXPECT_EQ(320, constraints.layoutSize.width());
   2671     EXPECT_EQ(352, constraints.layoutSize.height());
   2672     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2673     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2674     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2675     EXPECT_TRUE(page->viewportDescription().userZoom);
   2676 }
   2677 
   2678 TEST_F(ViewportTest, viewportLegacyOrdering2)
   2679 {
   2680     UseMockScrollbarSettings mockScrollbarSettings;
   2681     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-2.html");
   2682 
   2683     FrameTestHelpers::WebViewHelper webViewHelper;
   2684     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-2.html", true, 0, 0, setViewportSettings);
   2685 
   2686     Page* page = webViewHelper.webViewImpl()->page();
   2687 
   2688     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2689 
   2690     EXPECT_EQ(300, constraints.layoutSize.width());
   2691     EXPECT_EQ(330, constraints.layoutSize.height());
   2692     EXPECT_NEAR(1.07f, constraints.initialScale, 0.01f);
   2693     EXPECT_NEAR(1.07f, constraints.minimumScale, 0.01f);
   2694     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2695     EXPECT_TRUE(page->viewportDescription().userZoom);
   2696 }
   2697 
   2698 TEST_F(ViewportTest, viewportLegacyOrdering3)
   2699 {
   2700     UseMockScrollbarSettings mockScrollbarSettings;
   2701     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-3.html");
   2702 
   2703     FrameTestHelpers::WebViewHelper webViewHelper;
   2704     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-3.html", true, 0, 0, setViewportSettings);
   2705 
   2706     Page* page = webViewHelper.webViewImpl()->page();
   2707 
   2708     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2709 
   2710     EXPECT_EQ(300, constraints.layoutSize.width());
   2711     EXPECT_EQ(330, constraints.layoutSize.height());
   2712     EXPECT_NEAR(1.07f, constraints.initialScale, 0.01f);
   2713     EXPECT_NEAR(1.07f, constraints.minimumScale, 0.01f);
   2714     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2715     EXPECT_TRUE(page->viewportDescription().userZoom);
   2716 }
   2717 
   2718 TEST_F(ViewportTest, viewportLegacyOrdering4)
   2719 {
   2720     UseMockScrollbarSettings mockScrollbarSettings;
   2721     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-4.html");
   2722 
   2723     FrameTestHelpers::WebViewHelper webViewHelper;
   2724     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-4.html", true, 0, 0, setViewportSettings);
   2725 
   2726     Page* page = webViewHelper.webViewImpl()->page();
   2727 
   2728     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2729 
   2730     EXPECT_EQ(300, constraints.layoutSize.width());
   2731     EXPECT_EQ(330, constraints.layoutSize.height());
   2732     EXPECT_NEAR(1.07f, constraints.initialScale, 0.01f);
   2733     EXPECT_NEAR(1.07f, constraints.minimumScale, 0.01f);
   2734     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2735     EXPECT_TRUE(page->viewportDescription().userZoom);
   2736 }
   2737 
   2738 TEST_F(ViewportTest, viewportLegacyOrdering5)
   2739 {
   2740     UseMockScrollbarSettings mockScrollbarSettings;
   2741     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-5.html");
   2742 
   2743     FrameTestHelpers::WebViewHelper webViewHelper;
   2744     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-5.html", true, 0, 0, setViewportSettings);
   2745 
   2746     Page* page = webViewHelper.webViewImpl()->page();
   2747 
   2748     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2749 
   2750     EXPECT_EQ(320, constraints.layoutSize.width());
   2751     EXPECT_EQ(352, constraints.layoutSize.height());
   2752     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2753     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2754     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2755     EXPECT_TRUE(page->viewportDescription().userZoom);
   2756 }
   2757 
   2758 TEST_F(ViewportTest, viewportLegacyOrdering6)
   2759 {
   2760     UseMockScrollbarSettings mockScrollbarSettings;
   2761     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-6.html");
   2762 
   2763     FrameTestHelpers::WebViewHelper webViewHelper;
   2764     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-6.html", true, 0, 0, setViewportSettings);
   2765 
   2766     Page* page = webViewHelper.webViewImpl()->page();
   2767 
   2768     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2769 
   2770     EXPECT_EQ(320, constraints.layoutSize.width());
   2771     EXPECT_EQ(352, constraints.layoutSize.height());
   2772     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2773     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2774     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2775     EXPECT_TRUE(page->viewportDescription().userZoom);
   2776 }
   2777 
   2778 TEST_F(ViewportTest, viewportLegacyOrdering7)
   2779 {
   2780     UseMockScrollbarSettings mockScrollbarSettings;
   2781     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-7.html");
   2782 
   2783     FrameTestHelpers::WebViewHelper webViewHelper;
   2784     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-7.html", true, 0, 0, setViewportSettings);
   2785 
   2786     Page* page = webViewHelper.webViewImpl()->page();
   2787 
   2788     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2789 
   2790     EXPECT_EQ(300, constraints.layoutSize.width());
   2791     EXPECT_EQ(330, constraints.layoutSize.height());
   2792     EXPECT_NEAR(1.07f, constraints.initialScale, 0.01f);
   2793     EXPECT_NEAR(1.07f, constraints.minimumScale, 0.01f);
   2794     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2795     EXPECT_TRUE(page->viewportDescription().userZoom);
   2796 }
   2797 
   2798 TEST_F(ViewportTest, viewportLegacyOrdering8)
   2799 {
   2800     UseMockScrollbarSettings mockScrollbarSettings;
   2801     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-8.html");
   2802 
   2803     FrameTestHelpers::WebViewHelper webViewHelper;
   2804     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-8.html", true, 0, 0, setViewportSettings);
   2805 
   2806     Page* page = webViewHelper.webViewImpl()->page();
   2807 
   2808     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2809 
   2810     EXPECT_EQ(300, constraints.layoutSize.width());
   2811     EXPECT_EQ(330, constraints.layoutSize.height());
   2812     EXPECT_NEAR(1.07f, constraints.initialScale, 0.01f);
   2813     EXPECT_NEAR(1.07f, constraints.minimumScale, 0.01f);
   2814     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2815     EXPECT_TRUE(page->viewportDescription().userZoom);
   2816 }
   2817 
   2818 TEST_F(ViewportTest, viewportLegacyEmptyAtViewportDoesntOverrideViewportMeta)
   2819 {
   2820     UseMockScrollbarSettings mockScrollbarSettings;
   2821     registerMockedHttpURLLoad("viewport/viewport-legacy-ordering-10.html");
   2822 
   2823     FrameTestHelpers::WebViewHelper webViewHelper;
   2824     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-ordering-10.html", true, 0, 0, setViewportSettings);
   2825 
   2826     Page* page = webViewHelper.webViewImpl()->page();
   2827     PageScaleConstraints constraints = runViewportTest(page, 800, 600);
   2828 
   2829     EXPECT_EQ(5000, constraints.layoutSize.width());
   2830 }
   2831 
   2832 TEST_F(ViewportTest, viewportLegacyDefaultValueChangedByXHTMLMP)
   2833 {
   2834     UseMockScrollbarSettings mockScrollbarSettings;
   2835     registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp.html");
   2836 
   2837     FrameTestHelpers::WebViewHelper webViewHelper;
   2838     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-xhtmlmp.html", true, 0, 0, setViewportSettings);
   2839 
   2840     Page* page = webViewHelper.webViewImpl()->page();
   2841     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2842 
   2843     EXPECT_EQ(320, constraints.layoutSize.width());
   2844     EXPECT_EQ(352, constraints.layoutSize.height());
   2845     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2846     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2847     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2848     EXPECT_TRUE(page->viewportDescription().userZoom);
   2849 }
   2850 
   2851 TEST_F(ViewportTest, viewportLegacyDefaultValueChangedByXHTMLMPAndOverriddenByMeta)
   2852 {
   2853     UseMockScrollbarSettings mockScrollbarSettings;
   2854     registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp-misplaced-doctype.html");
   2855 
   2856     FrameTestHelpers::WebViewHelper webViewHelper;
   2857     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-xhtmlmp-misplaced-doctype.html", true, 0, 0, setViewportSettings);
   2858 
   2859     Page* page = webViewHelper.webViewImpl()->page();
   2860     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2861 
   2862     EXPECT_EQ(640, constraints.layoutSize.width());
   2863     EXPECT_EQ(704, constraints.layoutSize.height());
   2864     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
   2865     EXPECT_NEAR(0.5f, constraints.minimumScale, 0.01f);
   2866     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2867     EXPECT_TRUE(page->viewportDescription().userZoom);
   2868 }
   2869 
   2870 TEST_F(ViewportTest, viewportLegacyXHTMLMPOrdering)
   2871 {
   2872     UseMockScrollbarSettings mockScrollbarSettings;
   2873     registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp-ordering.html");
   2874 
   2875     FrameTestHelpers::WebViewHelper webViewHelper;
   2876     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-xhtmlmp-ordering.html", true, 0, 0, setViewportSettings);
   2877 
   2878     Page* page = webViewHelper.webViewImpl()->page();
   2879     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2880 
   2881     EXPECT_EQ(640, constraints.layoutSize.width());
   2882     EXPECT_EQ(704, constraints.layoutSize.height());
   2883     EXPECT_NEAR(0.5f, constraints.initialScale, 0.01f);
   2884     EXPECT_NEAR(0.5f, constraints.minimumScale, 0.01f);
   2885     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2886     EXPECT_TRUE(page->viewportDescription().userZoom);
   2887 }
   2888 
   2889 TEST_F(ViewportTest, viewportLegacyXHTMLMPRemoveAndAdd)
   2890 {
   2891     registerMockedHttpURLLoad("viewport/viewport-legacy-xhtmlmp.html");
   2892 
   2893     FrameTestHelpers::WebViewHelper webViewHelper;
   2894     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-legacy-xhtmlmp.html", true, 0, 0, setViewportSettings);
   2895 
   2896     Page* page = webViewHelper.webViewImpl()->page();
   2897     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   2898 
   2899     EXPECT_EQ(320, constraints.layoutSize.width());
   2900     EXPECT_EQ(352, constraints.layoutSize.height());
   2901     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2902     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2903     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2904     EXPECT_TRUE(page->viewportDescription().userZoom);
   2905 
   2906     executeScript(webViewHelper.webViewImpl()->mainFrame(),
   2907         "originalDoctype = document.doctype;"
   2908         "document.removeChild(originalDoctype);");
   2909 
   2910     constraints = runViewportTest(page, 320, 352);
   2911 
   2912     EXPECT_EQ(320, constraints.layoutSize.width());
   2913     EXPECT_EQ(352, constraints.layoutSize.height());
   2914     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2915     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2916     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2917     EXPECT_TRUE(page->viewportDescription().userZoom);
   2918 
   2919     executeScript(webViewHelper.webViewImpl()->mainFrame(),
   2920         "document.insertBefore(originalDoctype, document.firstChild);");
   2921 
   2922     constraints = runViewportTest(page, 320, 352);
   2923 
   2924     EXPECT_EQ(320, constraints.layoutSize.width());
   2925     EXPECT_EQ(352, constraints.layoutSize.height());
   2926     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   2927     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   2928     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   2929     EXPECT_TRUE(page->viewportDescription().userZoom);
   2930 }
   2931 
   2932 TEST_F(ViewportTest, viewportLimitsAdjustedForNoUserScale)
   2933 {
   2934     UseMockScrollbarSettings mockScrollbarSettings;
   2935     registerMockedHttpURLLoad("viewport/viewport-limits-adjusted-for-no-user-scale.html");
   2936 
   2937     FrameTestHelpers::WebViewHelper webViewHelper;
   2938     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-limits-adjusted-for-no-user-scale.html", true, 0, 0, setViewportSettings);
   2939 
   2940     Page* page = webViewHelper.webViewImpl()->page();
   2941 
   2942     EXPECT_FALSE(page->viewportDescription().userZoom);
   2943 }
   2944 
   2945 TEST_F(ViewportTest, viewportLimitsAdjustedForNoUserScaleControl)
   2946 {
   2947     UseMockScrollbarSettings mockScrollbarSettings;
   2948     registerMockedHttpURLLoad("viewport/viewport-limits-adjusted-for-no-user-scale-control.html");
   2949 
   2950     FrameTestHelpers::WebViewHelper webViewHelper;
   2951     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-limits-adjusted-for-no-user-scale-control.html", true, 0, 0, setViewportSettings);
   2952 
   2953     Page* page = webViewHelper.webViewImpl()->page();
   2954 
   2955     EXPECT_TRUE(page->viewportDescription().userZoom);
   2956 }
   2957 
   2958 TEST_F(ViewportTest, viewportTriggersGpuRasterization)
   2959 {
   2960     UseMockScrollbarSettings mockScrollbarSettings;
   2961 
   2962     registerMockedHttpURLLoad("viewport/viewport-gpu-rasterization.html");
   2963     FrameTestHelpers::WebViewHelper webViewHelper;
   2964     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-gpu-rasterization.html", true, 0, 0, setViewportSettings);
   2965     webViewHelper.webView()->resize(WebSize(640, 480));
   2966     EXPECT_TRUE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   2967 
   2968     registerMockedHttpURLLoad("viewport/viewport-gpu-rasterization-expanded-heuristics.html");
   2969     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-gpu-rasterization-expanded-heuristics.html", true, 0, 0, setViewportSettings);
   2970     webViewHelper.webView()->resize(WebSize(640, 480));
   2971     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   2972 
   2973     registerMockedHttpURLLoad("viewport/viewport-inferred-values-do-not-trigger-gpu-rasterization.html");
   2974     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-inferred-values-do-not-trigger-gpu-rasterization.html", true, 0, 0, setViewportSettings);
   2975     webViewHelper.webView()->resize(WebSize(640, 480));
   2976     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   2977 
   2978     registerMockedHttpURLLoad("viewport/viewport-1.html");
   2979     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-1.html", true, 0, 0, setViewportSettings);
   2980     webViewHelper.webView()->resize(WebSize(640, 480));
   2981     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   2982 
   2983     registerMockedHttpURLLoad("viewport/viewport-15.html");
   2984     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-15.html", true, 0, 0, setViewportSettings);
   2985     webViewHelper.webView()->resize(WebSize(640, 480));
   2986     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   2987 
   2988     registerMockedHttpURLLoad("viewport/viewport-130.html");
   2989     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-130.html", true, 0, 0, setViewportSettings);
   2990     webViewHelper.webView()->resize(WebSize(640, 480));
   2991     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   2992 }
   2993 
   2994 static void setViewportSettingsWithExpandedHeuristicsForGpuRasterization(WebSettings* settings)
   2995 {
   2996     setViewportSettings(settings);
   2997     settings->setUseExpandedHeuristicsForGpuRasterization(true);
   2998 }
   2999 
   3000 TEST_F(ViewportTest, viewportTriggersGpuRasterizationWithExpandedHeuristics)
   3001 {
   3002     UseMockScrollbarSettings mockScrollbarSettings;
   3003 
   3004     registerMockedHttpURLLoad("viewport/viewport-gpu-rasterization.html");
   3005     FrameTestHelpers::WebViewHelper webViewHelper;
   3006     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-gpu-rasterization.html", true, 0, 0, setViewportSettingsWithExpandedHeuristicsForGpuRasterization);
   3007     webViewHelper.webView()->resize(WebSize(640, 480));
   3008     EXPECT_TRUE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   3009 
   3010     registerMockedHttpURLLoad("viewport/viewport-gpu-rasterization-expanded-heuristics.html");
   3011     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-gpu-rasterization-expanded-heuristics.html", true, 0, 0, setViewportSettingsWithExpandedHeuristicsForGpuRasterization);
   3012     webViewHelper.webView()->resize(WebSize(640, 480));
   3013     EXPECT_TRUE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   3014 
   3015     registerMockedHttpURLLoad("viewport/viewport-inferred-values-do-not-trigger-gpu-rasterization.html");
   3016     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-inferred-values-do-not-trigger-gpu-rasterization.html", true, 0, 0, setViewportSettingsWithExpandedHeuristicsForGpuRasterization);
   3017     webViewHelper.webView()->resize(WebSize(640, 480));
   3018     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   3019 
   3020     registerMockedHttpURLLoad("viewport/viewport-1.html");
   3021     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-1.html", true, 0, 0, setViewportSettings);
   3022     webViewHelper.webView()->resize(WebSize(640, 480));
   3023     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   3024 
   3025     registerMockedHttpURLLoad("viewport/viewport-15.html");
   3026     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-15.html", true, 0, 0, setViewportSettingsWithExpandedHeuristicsForGpuRasterization);
   3027     webViewHelper.webView()->resize(WebSize(640, 480));
   3028     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   3029 
   3030     registerMockedHttpURLLoad("viewport/viewport-130.html");
   3031     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-130.html", true, 0, 0, setViewportSettingsWithExpandedHeuristicsForGpuRasterization);
   3032     webViewHelper.webView()->resize(WebSize(640, 480));
   3033     EXPECT_FALSE(webViewHelper.webViewImpl()->matchesHeuristicsForGpuRasterizationForTesting());
   3034 }
   3035 
   3036 class ConsoleMessageWebFrameClient : public FrameTestHelpers::TestWebFrameClient {
   3037 public:
   3038     virtual void didAddMessageToConsole(const WebConsoleMessage& msg, const WebString& sourceName, unsigned sourceLine, const WebString& stackTrace)
   3039     {
   3040         messages.push_back(msg);
   3041     }
   3042 
   3043     std::vector<WebConsoleMessage> messages;
   3044 };
   3045 
   3046 TEST_F(ViewportTest, viewportWarnings1)
   3047 {
   3048     ConsoleMessageWebFrameClient webFrameClient;
   3049 
   3050     registerMockedHttpURLLoad("viewport/viewport-warnings-1.html");
   3051 
   3052     FrameTestHelpers::WebViewHelper webViewHelper;
   3053     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-1.html", true, &webFrameClient, 0, setViewportSettings);
   3054 
   3055     Page* page = webViewHelper.webViewImpl()->page();
   3056     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   3057 
   3058     EXPECT_TRUE(webFrameClient.messages.empty());
   3059 
   3060     EXPECT_EQ(320, constraints.layoutSize.width());
   3061     EXPECT_EQ(352, constraints.layoutSize.height());
   3062     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   3063     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   3064     EXPECT_NEAR(2.0f, constraints.maximumScale, 0.01f);
   3065     EXPECT_TRUE(page->viewportDescription().userZoom);
   3066 }
   3067 
   3068 TEST_F(ViewportTest, viewportWarnings2)
   3069 {
   3070     ConsoleMessageWebFrameClient webFrameClient;
   3071 
   3072     registerMockedHttpURLLoad("viewport/viewport-warnings-2.html");
   3073 
   3074     FrameTestHelpers::WebViewHelper webViewHelper;
   3075     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-2.html", true, &webFrameClient, 0, setViewportSettings);
   3076 
   3077     Page* page = webViewHelper.webViewImpl()->page();
   3078     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   3079 
   3080     EXPECT_EQ(1U, webFrameClient.messages.size());
   3081     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[0].level);
   3082     EXPECT_STREQ("The key \"wwidth\" is not recognized and ignored.", webFrameClient.messages[0].text.utf8().c_str());
   3083 
   3084     EXPECT_EQ(980, constraints.layoutSize.width());
   3085     EXPECT_EQ(1078, constraints.layoutSize.height());
   3086     EXPECT_NEAR(0.33f, constraints.initialScale, 0.01f);
   3087     EXPECT_NEAR(0.33f, constraints.minimumScale, 0.01f);
   3088     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   3089     EXPECT_TRUE(page->viewportDescription().userZoom);
   3090 }
   3091 
   3092 TEST_F(ViewportTest, viewportWarnings3)
   3093 {
   3094     ConsoleMessageWebFrameClient webFrameClient;
   3095 
   3096     registerMockedHttpURLLoad("viewport/viewport-warnings-3.html");
   3097 
   3098     FrameTestHelpers::WebViewHelper webViewHelper;
   3099     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-3.html", true, &webFrameClient, 0, setViewportSettings);
   3100 
   3101     Page* page = webViewHelper.webViewImpl()->page();
   3102     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   3103 
   3104     EXPECT_EQ(1U, webFrameClient.messages.size());
   3105     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[0].level);
   3106     EXPECT_STREQ("The value \"unrecognized-width\" for key \"width\" is invalid, and has been ignored.",
   3107         webFrameClient.messages[0].text.utf8().c_str());
   3108 
   3109     EXPECT_NEAR(64.0f, constraints.layoutSize.width(), 0.01);
   3110     EXPECT_NEAR(70.4f, constraints.layoutSize.height(), 0.01);
   3111     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   3112     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   3113     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   3114     EXPECT_TRUE(page->viewportDescription().userZoom);
   3115 }
   3116 
   3117 TEST_F(ViewportTest, viewportWarnings4)
   3118 {
   3119     ConsoleMessageWebFrameClient webFrameClient;
   3120 
   3121     registerMockedHttpURLLoad("viewport/viewport-warnings-4.html");
   3122 
   3123     FrameTestHelpers::WebViewHelper webViewHelper;
   3124     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-4.html", true, &webFrameClient, 0, setViewportSettings);
   3125 
   3126     Page* page = webViewHelper.webViewImpl()->page();
   3127     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   3128 
   3129     EXPECT_EQ(1U, webFrameClient.messages.size());
   3130     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[0].level);
   3131     EXPECT_STREQ("The value \"123x456\" for key \"width\" was truncated to its numeric prefix.",
   3132         webFrameClient.messages[0].text.utf8().c_str());
   3133 
   3134     EXPECT_NEAR(123.0f, constraints.layoutSize.width(), 0.01);
   3135     EXPECT_NEAR(135.3f, constraints.layoutSize.height(), 0.01);
   3136     EXPECT_NEAR(2.60f, constraints.initialScale, 0.01f);
   3137     EXPECT_NEAR(2.60f, constraints.minimumScale, 0.01f);
   3138     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   3139     EXPECT_TRUE(page->viewportDescription().userZoom);
   3140 }
   3141 
   3142 TEST_F(ViewportTest, viewportWarnings5)
   3143 {
   3144     ConsoleMessageWebFrameClient webFrameClient;
   3145 
   3146     registerMockedHttpURLLoad("viewport/viewport-warnings-5.html");
   3147 
   3148     FrameTestHelpers::WebViewHelper webViewHelper;
   3149     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-5.html", true, &webFrameClient, 0, setViewportSettings);
   3150 
   3151     Page* page = webViewHelper.webViewImpl()->page();
   3152     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   3153 
   3154     EXPECT_EQ(5U, webFrameClient.messages.size());
   3155 
   3156     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[0].level);
   3157     EXPECT_STREQ("The value \"device-width;\" for key \"width\" is invalid, and has been ignored.",
   3158         webFrameClient.messages[0].text.utf8().c_str());
   3159 
   3160     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[1].level);
   3161     EXPECT_STREQ("The value \"1.0;\" for key \"initial-scale\" was truncated to its numeric prefix.",
   3162         webFrameClient.messages[1].text.utf8().c_str());
   3163 
   3164     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[2].level);
   3165     EXPECT_STREQ("The value \"1.0;\" for key \"maximum-scale\" was truncated to its numeric prefix.",
   3166         webFrameClient.messages[2].text.utf8().c_str());
   3167 
   3168     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[3].level);
   3169     EXPECT_STREQ("The value \"0;\" for key \"user-scalable\" was truncated to its numeric prefix.",
   3170         webFrameClient.messages[3].text.utf8().c_str());
   3171 
   3172     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[4].level);
   3173     EXPECT_STREQ("Error parsing a meta element's content: ';' is not a valid key-value pair separator. Please use ',' instead.",
   3174         webFrameClient.messages[4].text.utf8().c_str());
   3175 
   3176     EXPECT_NEAR(320.0f, constraints.layoutSize.width(), 0.01);
   3177     EXPECT_NEAR(352.0f, constraints.layoutSize.height(), 0.01);
   3178     EXPECT_NEAR(1.0f, constraints.initialScale, 0.01f);
   3179     EXPECT_NEAR(1.0f, constraints.minimumScale, 0.01f);
   3180     EXPECT_NEAR(1.0f, constraints.maximumScale, 0.01f);
   3181     EXPECT_FALSE(page->viewportDescription().userZoom);
   3182 }
   3183 
   3184 TEST_F(ViewportTest, viewportWarnings6)
   3185 {
   3186     ConsoleMessageWebFrameClient webFrameClient;
   3187 
   3188     registerMockedHttpURLLoad("viewport/viewport-warnings-6.html");
   3189 
   3190     FrameTestHelpers::WebViewHelper webViewHelper;
   3191     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-6.html", true, &webFrameClient, 0, setViewportSettings);
   3192 
   3193     Page* page = webViewHelper.webViewImpl()->page();
   3194     PageScaleConstraints constraints = runViewportTest(page, 320, 352);
   3195 
   3196     EXPECT_EQ(1U, webFrameClient.messages.size());
   3197     EXPECT_EQ(WebConsoleMessage::LevelWarning, webFrameClient.messages[0].level);
   3198     EXPECT_STREQ("The value \"\" for key \"width\" is invalid, and has been ignored.",
   3199         webFrameClient.messages[0].text.utf8().c_str());
   3200 
   3201     EXPECT_NEAR(64.0f, constraints.layoutSize.width(), 0.01);
   3202     EXPECT_NEAR(70.4f, constraints.layoutSize.height(), 0.01);
   3203     EXPECT_NEAR(5.0f, constraints.initialScale, 0.01f);
   3204     EXPECT_NEAR(5.0f, constraints.minimumScale, 0.01f);
   3205     EXPECT_NEAR(5.0f, constraints.maximumScale, 0.01f);
   3206     EXPECT_TRUE(page->viewportDescription().userZoom);
   3207 }
   3208 
   3209 TEST_F(ViewportTest, viewportWarnings7)
   3210 {
   3211     ConsoleMessageWebFrameClient webFrameClient;
   3212 
   3213     registerMockedHttpURLLoad("viewport/viewport-warnings-7.html");
   3214 
   3215     FrameTestHelpers::WebViewHelper webViewHelper;
   3216     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-7.html", true, &webFrameClient, 0, setViewportSettings);
   3217 
   3218     Page* page = webViewHelper.webViewImpl()->page();
   3219     runViewportTest(page, 320, 352);
   3220 
   3221     EXPECT_EQ(0U, webFrameClient.messages.size());
   3222 }
   3223 
   3224 } // namespace
   3225