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