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 |