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