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