| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |