Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(217)

Side by Side Diff: Source/WebKit/chromium/tests/WebFrameTest.cpp

Issue 13880019: [Android WebView] Update viewport size and scale calculation to match WebView Classic (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Addressed Adam's comments Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Google Inc. All rights reserved. 2 * Copyright (C) 2010 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut o-initial-scale.html", true, 0, &client); 359 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut o-initial-scale.html", true, 0, &client);
360 m_webView->enableFixedLayoutMode(true); 360 m_webView->enableFixedLayoutMode(true);
361 m_webView->settings()->setViewportEnabled(true); 361 m_webView->settings()->setViewportEnabled(true);
362 m_webView->settings()->setInitializeAtMinimumPageScale(false); 362 m_webView->settings()->setInitializeAtMinimumPageScale(false);
363 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 363 m_webView->resize(WebSize(viewportWidth, viewportHeight));
364 364
365 // The page must be displayed at 100% zoom. 365 // The page must be displayed at 100% zoom.
366 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); 366 EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
367 } 367 }
368 368
369 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale) 369 TEST_F(WebFrameTest, SetInitializeAtMinimumPageScaleToFalseAndNoWideViewport)
370 {
371 registerMockedHttpURLLoad("large-div.html");
372
373 FixedLayoutTestWebViewClient client;
374 client.m_screenInfo.deviceScaleFactor = 1;
375 int viewportWidth = 640;
376 int viewportHeight = 480;
377
378 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "large-div.ht ml", true, 0, &client);
379 m_webView->enableFixedLayoutMode(true);
380 m_webView->settings()->setViewportEnabled(true);
381 m_webView->settings()->setInitializeAtMinimumPageScale(false);
382 m_webView->settings()->setUseWideViewport(false);
383 m_webView->resize(WebSize(viewportWidth, viewportHeight));
384
385 // The page must be displayed at 100% zoom, despite that it hosts a wide div element.
386 EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
387 }
388
389 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth)
390 {
391 registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
392
393 FixedLayoutTestWebViewClient client;
394 client.m_screenInfo.deviceScaleFactor = 1;
395 int viewportWidth = 640;
396 int viewportHeight = 480;
397
398 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut o-initial-scale.html", true, 0, &client);
399 m_webView->enableFixedLayoutMode(true);
400 m_webView->settings()->setViewportEnabled(true);
401 m_webView->settings()->setUseWideViewport(false);
402 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
403 m_webView->resize(WebSize(viewportWidth, viewportHeight));
404
405 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
406 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
407 EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->contents Size().width());
408 }
409
410 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale)
411 {
412 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
413
414 FixedLayoutTestWebViewClient client;
415 client.m_screenInfo.deviceScaleFactor = 1;
416 int viewportWidth = 640;
417 int viewportHeight = 480;
418
419 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid e-2x-initial-scale.html", true, 0, &client);
420 m_webView->enableFixedLayoutMode(true);
421 m_webView->settings()->setViewportEnabled(true);
422 m_webView->settings()->setUseWideViewport(false);
423 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
424 m_webView->resize(WebSize(viewportWidth, viewportHeight));
425
426 // The page sets viewport width to 3000, but with UseWideViewport == false i s must be ignored.
427 // While the initial scale specified by the page must be accounted.
428 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
429 EXPECT_EQ(viewportWidth / 2, webViewImpl->mainFrameImpl()->frameView()->cont entsSize().width());
430 }
431
432 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth)
370 { 433 {
371 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); 434 registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
372 435
373 FixedLayoutTestWebViewClient client; 436 FixedLayoutTestWebViewClient client;
374 client.m_screenInfo.deviceScaleFactor = 1; 437 client.m_screenInfo.deviceScaleFactor = 1;
375 int viewportWidth = 640; 438 int viewportWidth = 640;
376 int viewportHeight = 480; 439 int viewportHeight = 480;
377 440
378 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x- initial-scale.html", true, 0, &client); 441 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x- initial-scale.html", true, 0, &client);
379 m_webView->enableFixedLayoutMode(true); 442 m_webView->enableFixedLayoutMode(true);
380 m_webView->settings()->setViewportEnabled(true); 443 m_webView->settings()->setViewportEnabled(true);
444 // This behavior is for compatibility with Android WebView, so it is only
445 // activated when support for target-densityDpi is enabled.
446 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
447 m_webView->resize(WebSize(viewportWidth, viewportHeight));
448
449 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
450 EXPECT_EQ(980, webViewImpl->mainFrameImpl()->frameView()->contentsSize().wid th());
451 }
452
453 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale)
454 {
455 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
456
457 FixedLayoutTestWebViewClient client;
458 client.m_screenInfo.deviceScaleFactor = 1;
459 int viewportWidth = 640;
460 int viewportHeight = 480;
461
462 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid e-2x-initial-scale.html", true, 0, &client);
463 m_webView->enableFixedLayoutMode(true);
464 m_webView->settings()->setViewportEnabled(true);
381 m_webView->settings()->setInitializeAtMinimumPageScale(false); 465 m_webView->settings()->setInitializeAtMinimumPageScale(false);
382 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 466 m_webView->resize(WebSize(viewportWidth, viewportHeight));
383 467
384 // The page must be displayed at 200% zoom, as specified in its viewport met a tag. 468 // The page must be displayed at 200% zoom, as specified in its viewport met a tag.
385 EXPECT_EQ(2.0f, m_webView->pageScaleFactor()); 469 EXPECT_EQ(2.0f, m_webView->pageScaleFactor());
386 } 470 }
387 471
388 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently) 472 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently)
389 { 473 {
390 registerMockedHttpURLLoad("fixed_layout.html"); 474 registerMockedHttpURLLoad("fixed_layout.html");
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
433 m_webView->settings()->setViewportEnabled(true); 517 m_webView->settings()->setViewportEnabled(true);
434 m_webView->settings()->setInitializeAtMinimumPageScale(false); 518 m_webView->settings()->setInitializeAtMinimumPageScale(false);
435 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); 519 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor);
436 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 520 m_webView->resize(WebSize(viewportWidth, viewportHeight));
437 521
438 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); 522 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor());
439 } 523 }
440 524
441 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale) 525 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial Scale)
442 { 526 {
443 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); 527 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
444 528
445 FixedLayoutTestWebViewClient client; 529 FixedLayoutTestWebViewClient client;
446 client.m_screenInfo.deviceScaleFactor = 1; 530 client.m_screenInfo.deviceScaleFactor = 1;
447 int viewportWidth = 640; 531 int viewportWidth = 640;
448 int viewportHeight = 480; 532 int viewportHeight = 480;
449 float enforcedPageScalePactor = 0.5f; 533 float enforcedPageScalePactor = 0.5f;
450 534
451 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x- initial-scale.html", true, 0, &client); 535 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid e-2x-initial-scale.html", true, 0, &client);
452 m_webView->enableFixedLayoutMode(true); 536 m_webView->enableFixedLayoutMode(true);
453 m_webView->settings()->setViewportEnabled(true); 537 m_webView->settings()->setViewportEnabled(true);
454 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); 538 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor);
455 m_webView->resize(WebSize(viewportWidth, viewportHeight)); 539 m_webView->resize(WebSize(viewportWidth, viewportHeight));
456 540
457 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); 541 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor());
458 } 542 }
459 543
460 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate) 544 TEST_F(WebFrameTest, ScaleFactorShouldNotOscillate)
461 { 545 {
(...skipping 2139 matching lines...) Expand 10 before | Expand all | Expand 10 after
2601 EXPECT_FALSE(client.wasProgrammaticScroll()); 2685 EXPECT_FALSE(client.wasProgrammaticScroll());
2602 EXPECT_TRUE(client.wasUserScroll()); 2686 EXPECT_TRUE(client.wasUserScroll());
2603 client.reset(); 2687 client.reset();
2604 2688
2605 m_webView->close(); 2689 m_webView->close();
2606 m_webView = 0; 2690 m_webView = 0;
2607 } 2691 }
2608 2692
2609 2693
2610 } // namespace 2694 } // namespace
OLDNEW
« no previous file with comments | « Source/WebKit/chromium/src/WebViewImpl.cpp ('k') | Source/WebKit/chromium/tests/data/large-div.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698