• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
ViewportTest()73     ViewportTest()
74         : m_baseURL("http://www.test.com/")
75         , m_chromeURL("chrome://")
76     {
77     }
78 
~ViewportTest()79     virtual ~ViewportTest()
80     {
81         Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
82     }
83 
registerMockedHttpURLLoad(const std::string & fileName)84     void registerMockedHttpURLLoad(const std::string& fileName)
85     {
86         URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8(fileName.c_str()));
87     }
88 
registerMockedChromeURLLoad(const std::string & fileName)89     void registerMockedChromeURLLoad(const std::string& fileName)
90     {
91         URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_chromeURL.c_str()), WebString::fromUTF8(fileName.c_str()));
92     }
93 
executeScript(WebFrame * frame,const WebString & code)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:
UseMockScrollbarSettings()106     UseMockScrollbarSettings()
107     {
108         WebCore::Settings::setMockScrollbarsEnabled(true);
109         WebCore::RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(true);
110         EXPECT_TRUE(WebCore::ScrollbarTheme::theme()->usesOverlayScrollbars());
111     }
112 
~UseMockScrollbarSettings()113     ~UseMockScrollbarSettings()
114     {
115         WebCore::Settings::setMockScrollbarsEnabled(false);
116         WebCore::RuntimeEnabledFeatures::setOverlayScrollbarsEnabled(false);
117     }
118 };
119 
setViewportSettings(WebSettings * settings)120 static void setViewportSettings(WebSettings* settings)
121 {
122     settings->setViewportEnabled(true);
123     settings->setViewportMetaEnabled(true);
124     settings->setMainFrameResizesAreOrientationChanges(true);
125 }
126 
runViewportTest(Page * page,int initialWidth,int initialHeight)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 
TEST_F(ViewportTest,viewport1)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 
TEST_F(ViewportTest,viewport2)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 
TEST_F(ViewportTest,viewport3)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 
TEST_F(ViewportTest,viewport4)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 
TEST_F(ViewportTest,viewport5)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 
TEST_F(ViewportTest,viewport6)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 
TEST_F(ViewportTest,viewport7)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 
TEST_F(ViewportTest,viewport8)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 
TEST_F(ViewportTest,viewport9)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 
TEST_F(ViewportTest,viewport10)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 
TEST_F(ViewportTest,viewport11)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 
TEST_F(ViewportTest,viewport12)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 
TEST_F(ViewportTest,viewport13)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 
TEST_F(ViewportTest,viewport14)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 
TEST_F(ViewportTest,viewport15)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 
TEST_F(ViewportTest,viewport16)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 
TEST_F(ViewportTest,viewport17)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 
TEST_F(ViewportTest,viewport18)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 
TEST_F(ViewportTest,viewport19)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 
TEST_F(ViewportTest,viewport20)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 
TEST_F(ViewportTest,viewport21)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 
TEST_F(ViewportTest,viewport22)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 
TEST_F(ViewportTest,viewport23)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 
TEST_F(ViewportTest,viewport24)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 
TEST_F(ViewportTest,viewport25)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 
TEST_F(ViewportTest,viewport26)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 
TEST_F(ViewportTest,viewport27)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 
TEST_F(ViewportTest,viewport28)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 
TEST_F(ViewportTest,viewport29)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 
TEST_F(ViewportTest,viewport30)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 
TEST_F(ViewportTest,viewport31)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 
TEST_F(ViewportTest,viewport32)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 
TEST_F(ViewportTest,viewport33)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 
TEST_F(ViewportTest,viewport34)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 
TEST_F(ViewportTest,viewport35)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 
TEST_F(ViewportTest,viewport36)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 
TEST_F(ViewportTest,viewport37)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 
TEST_F(ViewportTest,viewport38)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 
TEST_F(ViewportTest,viewport39)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 
TEST_F(ViewportTest,viewport40)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 
TEST_F(ViewportTest,viewport41)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 
TEST_F(ViewportTest,viewport42)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 
TEST_F(ViewportTest,viewport43)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 
TEST_F(ViewportTest,viewport44)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 
TEST_F(ViewportTest,viewport45)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 
TEST_F(ViewportTest,viewport46)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 
TEST_F(ViewportTest,viewport47)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 
TEST_F(ViewportTest,viewport48)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 
TEST_F(ViewportTest,viewport49)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 
TEST_F(ViewportTest,viewport50)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 
TEST_F(ViewportTest,viewport51)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 
TEST_F(ViewportTest,viewport52)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 
TEST_F(ViewportTest,viewport53)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 
TEST_F(ViewportTest,viewport54)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 
TEST_F(ViewportTest,viewport55)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 
TEST_F(ViewportTest,viewport56)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 
TEST_F(ViewportTest,viewport57)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 
TEST_F(ViewportTest,viewport58)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 
TEST_F(ViewportTest,viewport59)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 
TEST_F(ViewportTest,viewport60)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 
TEST_F(ViewportTest,viewport61)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 
TEST_F(ViewportTest,viewport62)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 
TEST_F(ViewportTest,viewport63)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 
TEST_F(ViewportTest,viewport64)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 
TEST_F(ViewportTest,viewport65)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 
TEST_F(ViewportTest,viewport66)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 
TEST_F(ViewportTest,viewport67)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 
TEST_F(ViewportTest,viewport68)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 
TEST_F(ViewportTest,viewport69)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 
TEST_F(ViewportTest,viewport70)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 
TEST_F(ViewportTest,viewport71)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 
TEST_F(ViewportTest,viewport72)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 
TEST_F(ViewportTest,viewport73)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 
TEST_F(ViewportTest,viewport74)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 
TEST_F(ViewportTest,viewport75)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 
TEST_F(ViewportTest,viewport76)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 
TEST_F(ViewportTest,viewport77)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 
TEST_F(ViewportTest,viewport78)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 
TEST_F(ViewportTest,viewport79)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 
TEST_F(ViewportTest,viewport80)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 
TEST_F(ViewportTest,viewport81)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 
TEST_F(ViewportTest,viewport82)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 
TEST_F(ViewportTest,viewport83)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 
TEST_F(ViewportTest,viewport84)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 
TEST_F(ViewportTest,viewport85)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 
TEST_F(ViewportTest,viewport86)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 
TEST_F(ViewportTest,viewport87)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 
TEST_F(ViewportTest,viewport88)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 
TEST_F(ViewportTest,viewport90)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 
TEST_F(ViewportTest,viewport100)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 
TEST_F(ViewportTest,viewport101)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 
TEST_F(ViewportTest,viewport102)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 
TEST_F(ViewportTest,viewport103)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 
TEST_F(ViewportTest,viewport104)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 
TEST_F(ViewportTest,viewport105)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 
TEST_F(ViewportTest,viewport106)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 
TEST_F(ViewportTest,viewport107)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 
TEST_F(ViewportTest,viewport108)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 
TEST_F(ViewportTest,viewport109)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 
TEST_F(ViewportTest,viewport110)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 
TEST_F(ViewportTest,viewport111)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 
TEST_F(ViewportTest,viewport112)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 
TEST_F(ViewportTest,viewport113)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 
TEST_F(ViewportTest,viewport114)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 
TEST_F(ViewportTest,viewport115)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 
TEST_F(ViewportTest,viewport116)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 
TEST_F(ViewportTest,viewport117)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 
TEST_F(ViewportTest,viewport118)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 
TEST_F(ViewportTest,viewport119)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 
TEST_F(ViewportTest,viewport120)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 
TEST_F(ViewportTest,viewport121)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 
TEST_F(ViewportTest,viewport122)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 
TEST_F(ViewportTest,viewport123)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 
TEST_F(ViewportTest,viewport124)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 
TEST_F(ViewportTest,viewport125)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 
TEST_F(ViewportTest,viewport126)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 
TEST_F(ViewportTest,viewport127)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 
TEST_F(ViewportTest,viewport129)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 
TEST_F(ViewportTest,viewport130)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 
TEST_F(ViewportTest,viewport131)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 
TEST_F(ViewportTest,viewport132)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 
TEST_F(ViewportTest,viewport133)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 
TEST_F(ViewportTest,viewport134)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 
TEST_F(ViewportTest,viewport135)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 
TEST_F(ViewportTest,viewport136)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 
TEST_F(ViewportTest,viewport137)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 
TEST_F(ViewportTest,viewport138)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 
TEST_F(ViewportTest,viewportLegacyHandheldFriendly)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 
setQuirkViewportSettings(WebSettings * settings)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 
TEST_F(ViewportTest,viewportLegacyMergeQuirk1)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 
TEST_F(ViewportTest,viewportLegacyMergeQuirk2)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 
TEST_F(ViewportTest,viewportLegacyMobileOptimizedMetaWithoutContent)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 
TEST_F(ViewportTest,viewportLegacyMobileOptimizedMetaWith0)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 
TEST_F(ViewportTest,viewportLegacyMobileOptimizedMetaWith400)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 
TEST_F(ViewportTest,viewportLegacyOrdering2)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 
TEST_F(ViewportTest,viewportLegacyOrdering3)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 
TEST_F(ViewportTest,viewportLegacyOrdering4)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 
TEST_F(ViewportTest,viewportLegacyOrdering5)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 
TEST_F(ViewportTest,viewportLegacyOrdering6)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 
TEST_F(ViewportTest,viewportLegacyOrdering7)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 
TEST_F(ViewportTest,viewportLegacyOrdering8)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 
TEST_F(ViewportTest,viewportLegacyEmptyAtViewportDoesntOverrideViewportMeta)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 
TEST_F(ViewportTest,viewportLegacyDefaultValueChangedByXHTMLMP)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 
TEST_F(ViewportTest,viewportLegacyDefaultValueChangedByXHTMLMPAndOverriddenByMeta)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 
TEST_F(ViewportTest,viewportLegacyXHTMLMPOrdering)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 
TEST_F(ViewportTest,viewportLegacyXHTMLMPRemoveAndAdd)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 
TEST_F(ViewportTest,viewportLimitsAdjustedForNoUserScale)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 
TEST_F(ViewportTest,viewportLimitsAdjustedForNoUserScaleControl)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 
TEST_F(ViewportTest,viewportTriggersGpuRasterization)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 
setViewportSettingsWithExpandedHeuristicsForGpuRasterization(WebSettings * settings)2994 static void setViewportSettingsWithExpandedHeuristicsForGpuRasterization(WebSettings* settings)
2995 {
2996     setViewportSettings(settings);
2997     settings->setUseExpandedHeuristicsForGpuRasterization(true);
2998 }
2999 
TEST_F(ViewportTest,viewportTriggersGpuRasterizationWithExpandedHeuristics)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:
didAddMessageToConsole(const WebConsoleMessage & msg,const WebString & sourceName,unsigned sourceLine,const WebString & stackTrace)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 
TEST_F(ViewportTest,viewportWarnings1)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 
TEST_F(ViewportTest,viewportWarnings2)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 
TEST_F(ViewportTest,viewportWarnings3)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 
TEST_F(ViewportTest,viewportWarnings4)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 
TEST_F(ViewportTest,viewportWarnings5)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 
TEST_F(ViewportTest,viewportWarnings6)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 
TEST_F(ViewportTest,viewportWarnings7)3209 TEST_F(ViewportTest, viewportWarnings7)
3210 {
3211     ConsoleMessageWebFrameClient webFrameClient;
3212 
3213     registerMockedHttpURLLoad("viewport/viewport-warnings-7.html");
3214 
3215     FrameTestHelpers::WebViewHelper webViewHelper;
3216     webViewHelper.initializeAndLoad(m_baseURL + "viewport/viewport-warnings-7.html", true, &webFrameClient, 0, setViewportSettings);
3217 
3218     Page* page = webViewHelper.webViewImpl()->page();
3219     runViewportTest(page, 320, 352);
3220 
3221     EXPECT_EQ(0U, webFrameClient.messages.size());
3222 }
3223 
3224 } // namespace
3225