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 337 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
348 // Device scale factor should be independent of page scale. | 348 // Device scale factor should be independent of page scale. |
349 m_webView->setPageScaleFactorLimits(1, 2); | 349 m_webView->setPageScaleFactorLimits(1, 2); |
350 m_webView->setPageScaleFactorPreservingScrollOffset(0.5); | 350 m_webView->setPageScaleFactorPreservingScrollOffset(0.5); |
351 m_webView->layout(); | 351 m_webView->layout(); |
352 EXPECT_EQ(1, m_webView->pageScaleFactor()); | 352 EXPECT_EQ(1, m_webView->pageScaleFactor()); |
353 | 353 |
354 // Force the layout to happen before leaving the test. | 354 // Force the layout to happen before leaving the test. |
355 m_webView->mainFrame()->contentAsText(1024).utf8(); | 355 m_webView->mainFrame()->contentAsText(1024).utf8(); |
356 } | 356 } |
357 | 357 |
358 TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumPageScale) | 358 TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumScale) |
359 { | 359 { |
| 360 WebCore::Settings::setMockScrollbarsEnabled(true); |
| 361 WebCore::Settings::setUsesOverlayScrollbars(true); |
| 362 |
360 registerMockedHttpURLLoad("fixed_layout.html"); | 363 registerMockedHttpURLLoad("fixed_layout.html"); |
361 | 364 |
362 FixedLayoutTestWebViewClient client; | 365 FixedLayoutTestWebViewClient client; |
363 client.m_screenInfo.deviceScaleFactor = 1; | 366 client.m_screenInfo.deviceScaleFactor = 1; |
364 int viewportWidth = 640; | 367 int viewportWidth = 640; |
365 int viewportHeight = 480; | 368 int viewportHeight = 480; |
366 | 369 |
367 // Make sure we initialize to minimum scale, even if the window size | 370 // Make sure we initialize to minimum scale, even if the window size |
368 // only becomes available after the load begins. | 371 // only becomes available after the load begins. |
369 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout
.html", true, 0, &client); | 372 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout
.html", true, 0, &client); |
370 m_webView->enableFixedLayoutMode(true); | 373 m_webView->enableFixedLayoutMode(true); |
371 m_webView->settings()->setViewportEnabled(true); | 374 m_webView->settings()->setViewportEnabled(true); |
372 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 375 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
373 | 376 |
374 int defaultFixedLayoutWidth = 980; | 377 int defaultFixedLayoutWidth = 980; |
375 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid
th; | 378 float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWid
th; |
376 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); | 379 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); |
| 380 EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor()); |
377 | 381 |
378 // Assume the user has pinch zoomed to page scale factor 2. | 382 // Assume the user has pinch zoomed to page scale factor 2. |
379 float userPinchPageScaleFactor = 2; | 383 float userPinchPageScaleFactor = 2; |
380 m_webView->setPageScaleFactorPreservingScrollOffset(userPinchPageScaleFactor
); | 384 m_webView->setPageScaleFactorPreservingScrollOffset(userPinchPageScaleFactor
); |
381 m_webView->layout(); | 385 m_webView->layout(); |
382 | 386 |
383 // Make sure we don't reset to initial scale if the page continues to load. | 387 // Make sure we don't reset to initial scale if the page continues to load. |
384 bool isNewNavigation; | 388 bool isNewNavigation; |
385 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); | 389 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); |
386 webViewImpl ->didCommitLoad(&isNewNavigation, false); | 390 webViewImpl ->didCommitLoad(&isNewNavigation, false); |
387 webViewImpl ->didChangeContentsSize(); | 391 webViewImpl ->didChangeContentsSize(); |
388 EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); | 392 EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
389 | 393 |
390 // Make sure we don't reset to initial scale if the viewport size changes. | 394 // Make sure we don't reset to initial scale if the viewport size changes. |
391 m_webView->resize(WebSize(viewportWidth, viewportHeight + 100)); | 395 m_webView->resize(WebSize(viewportWidth, viewportHeight + 100)); |
392 EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); | 396 EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
393 } | 397 } |
394 | 398 |
395 TEST_F(WebFrameTest, setInitializeAtMinimumPageScaleToFalse) | 399 TEST_F(WebFrameTest, WideDocumentInitializeAtMinimumScale) |
| 400 { |
| 401 WebCore::Settings::setMockScrollbarsEnabled(true); |
| 402 WebCore::Settings::setUsesOverlayScrollbars(true); |
| 403 |
| 404 registerMockedHttpURLLoad("wide_document.html"); |
| 405 |
| 406 FixedLayoutTestWebViewClient client; |
| 407 client.m_screenInfo.deviceScaleFactor = 1; |
| 408 int viewportWidth = 640; |
| 409 int viewportHeight = 480; |
| 410 |
| 411 // Make sure we initialize to minimum scale, even if the window size |
| 412 // only becomes available after the load begins. |
| 413 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "wide_documen
t.html", true, 0, &client); |
| 414 m_webView->enableFixedLayoutMode(true); |
| 415 m_webView->settings()->setViewportEnabled(true); |
| 416 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
| 417 |
| 418 int wideDocumentWidth = 1500; |
| 419 float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; |
| 420 EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); |
| 421 EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor()); |
| 422 |
| 423 // Assume the user has pinch zoomed to page scale factor 2. |
| 424 float userPinchPageScaleFactor = 2; |
| 425 m_webView->setPageScaleFactorPreservingScrollOffset(userPinchPageScaleFactor
); |
| 426 m_webView->layout(); |
| 427 |
| 428 // Make sure we don't reset to initial scale if the page continues to load. |
| 429 bool isNewNavigation; |
| 430 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); |
| 431 webViewImpl ->didCommitLoad(&isNewNavigation, false); |
| 432 webViewImpl ->didChangeContentsSize(); |
| 433 EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
| 434 |
| 435 // Make sure we don't reset to initial scale if the viewport size changes. |
| 436 m_webView->resize(WebSize(viewportWidth, viewportHeight + 100)); |
| 437 EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
| 438 } |
| 439 |
| 440 TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse) |
396 { | 441 { |
397 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); | 442 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); |
398 | 443 |
399 FixedLayoutTestWebViewClient client; | 444 FixedLayoutTestWebViewClient client; |
400 client.m_screenInfo.deviceScaleFactor = 1; | 445 client.m_screenInfo.deviceScaleFactor = 1; |
401 int viewportWidth = 640; | 446 int viewportWidth = 640; |
402 int viewportHeight = 480; | 447 int viewportHeight = 480; |
403 | 448 |
404 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut
o-initial-scale.html", true, 0, &client); | 449 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut
o-initial-scale.html", true, 0, &client); |
405 m_webView->enableFixedLayoutMode(true); | 450 m_webView->enableFixedLayoutMode(true); |
406 m_webView->settings()->setViewportEnabled(true); | 451 m_webView->settings()->setViewportEnabled(true); |
407 m_webView->settings()->setInitializeAtMinimumPageScale(false); | 452 m_webView->settings()->setLoadWithOverviewMode(false); |
| 453 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
408 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 454 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
409 | 455 |
410 // The page must be displayed at 100% zoom. | 456 // The page must be displayed at 100% zoom. |
411 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); | 457 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); |
412 } | 458 } |
413 | 459 |
414 TEST_F(WebFrameTest, SetInitializeAtMinimumPageScaleToFalseAndNoWideViewport) | 460 TEST_F(WebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport) |
415 { | 461 { |
416 registerMockedHttpURLLoad("large-div.html"); | 462 registerMockedHttpURLLoad("large-div.html"); |
417 | 463 |
418 FixedLayoutTestWebViewClient client; | 464 FixedLayoutTestWebViewClient client; |
419 client.m_screenInfo.deviceScaleFactor = 1; | 465 client.m_screenInfo.deviceScaleFactor = 1; |
420 int viewportWidth = 640; | 466 int viewportWidth = 640; |
421 int viewportHeight = 480; | 467 int viewportHeight = 480; |
422 | 468 |
423 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "large-div.ht
ml", true, 0, &client); | 469 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "large-div.ht
ml", true, 0, &client); |
424 m_webView->enableFixedLayoutMode(true); | 470 m_webView->enableFixedLayoutMode(true); |
425 m_webView->settings()->setViewportEnabled(true); | 471 m_webView->settings()->setViewportEnabled(true); |
426 m_webView->settings()->setInitializeAtMinimumPageScale(false); | 472 m_webView->settings()->setLoadWithOverviewMode(false); |
427 m_webView->settings()->setUseWideViewport(false); | 473 m_webView->settings()->setUseWideViewport(false); |
| 474 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
428 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 475 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
429 | 476 |
430 // The page must be displayed at 100% zoom, despite that it hosts a wide div
element. | 477 // The page must be displayed at 100% zoom, despite that it hosts a wide div
element. |
431 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); | 478 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); |
432 } | 479 } |
433 | 480 |
434 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth) | 481 TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth) |
435 { | 482 { |
436 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); | 483 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); |
437 | 484 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
477 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth) | 524 TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth) |
478 { | 525 { |
479 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); | 526 registerMockedHttpURLLoad("viewport-2x-initial-scale.html"); |
480 | 527 |
481 FixedLayoutTestWebViewClient client; | 528 FixedLayoutTestWebViewClient client; |
482 client.m_screenInfo.deviceScaleFactor = 1; | 529 client.m_screenInfo.deviceScaleFactor = 1; |
483 int viewportWidth = 640; | 530 int viewportWidth = 640; |
484 int viewportHeight = 480; | 531 int viewportHeight = 480; |
485 | 532 |
486 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x-
initial-scale.html", true, 0, &client); | 533 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x-
initial-scale.html", true, 0, &client); |
| 534 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
487 m_webView->enableFixedLayoutMode(true); | 535 m_webView->enableFixedLayoutMode(true); |
| 536 m_webView->settings()->setUseWideViewport(true); |
488 m_webView->settings()->setViewportEnabled(true); | 537 m_webView->settings()->setViewportEnabled(true); |
489 // This behavior is for compatibility with Android WebView, so it is only | |
490 // activated when support for target-densityDpi is enabled. | |
491 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); | |
492 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 538 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
493 | 539 |
494 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); | 540 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); |
495 EXPECT_EQ(980, webViewImpl->mainFrameImpl()->frameView()->contentsSize().wid
th()); | 541 EXPECT_EQ(980, webViewImpl->mainFrameImpl()->frameView()->contentsSize().wid
th()); |
496 } | 542 } |
497 | 543 |
498 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale) | 544 TEST_F(WebFrameTest, PageViewportInitialScaleOverridesLoadWithOverviewMode) |
499 { | 545 { |
500 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); | 546 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); |
501 | 547 |
502 FixedLayoutTestWebViewClient client; | 548 FixedLayoutTestWebViewClient client; |
503 client.m_screenInfo.deviceScaleFactor = 1; | 549 client.m_screenInfo.deviceScaleFactor = 1; |
504 int viewportWidth = 640; | 550 int viewportWidth = 640; |
505 int viewportHeight = 480; | 551 int viewportHeight = 480; |
506 | 552 |
507 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid
e-2x-initial-scale.html", true, 0, &client); | 553 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wid
e-2x-initial-scale.html", true, 0, &client); |
508 m_webView->enableFixedLayoutMode(true); | 554 m_webView->enableFixedLayoutMode(true); |
| 555 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
509 m_webView->settings()->setViewportEnabled(true); | 556 m_webView->settings()->setViewportEnabled(true); |
510 m_webView->settings()->setInitializeAtMinimumPageScale(false); | 557 m_webView->settings()->setLoadWithOverviewMode(false); |
511 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 558 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
512 | 559 |
513 // The page must be displayed at 200% zoom, as specified in its viewport met
a tag. | 560 // The page must be displayed at 200% zoom, as specified in its viewport met
a tag. |
514 EXPECT_EQ(2.0f, m_webView->pageScaleFactor()); | 561 EXPECT_EQ(2.0f, m_webView->pageScaleFactor()); |
515 } | 562 } |
516 | 563 |
517 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently) | 564 TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently) |
518 { | 565 { |
| 566 WebCore::Settings::setMockScrollbarsEnabled(true); |
| 567 WebCore::Settings::setUsesOverlayScrollbars(true); |
| 568 |
519 registerMockedHttpURLLoad("fixed_layout.html"); | 569 registerMockedHttpURLLoad("fixed_layout.html"); |
520 | 570 |
521 FixedLayoutTestWebViewClient client; | 571 FixedLayoutTestWebViewClient client; |
522 client.m_screenInfo.deviceScaleFactor = 1; | 572 client.m_screenInfo.deviceScaleFactor = 1; |
523 float enforcedPageScalePactor = 2.0f; | 573 float enforcedPageScaleFactor = 2.0f; |
524 | 574 |
525 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout
.html", true, 0, &client); | 575 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout
.html", true, 0, &client); |
526 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); | 576 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
| 577 m_webView->settings()->setLoadWithOverviewMode(false); |
| 578 m_webView->setInitialPageScaleOverride(enforcedPageScaleFactor); |
| 579 m_webView->enableFixedLayoutMode(true); |
| 580 m_webView->settings()->setViewportEnabled(true); |
| 581 m_webView->layout(); |
527 | 582 |
528 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); | 583 EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor()); |
529 | 584 |
530 int viewportWidth = 640; | 585 int viewportWidth = 640; |
531 int viewportHeight = 480; | 586 int viewportHeight = 480; |
532 m_webView->enableFixedLayoutMode(true); | |
533 m_webView->settings()->setViewportEnabled(true); | |
534 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 587 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
535 m_webView->layout(); | 588 m_webView->layout(); |
536 | 589 |
537 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); | 590 EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor()); |
538 | |
539 m_webView->enableFixedLayoutMode(false); | |
540 m_webView->settings()->setViewportEnabled(false); | |
541 m_webView->layout(); | |
542 | |
543 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); | |
544 | 591 |
545 m_webView->setInitialPageScaleOverride(-1); | 592 m_webView->setInitialPageScaleOverride(-1); |
546 m_webView->layout(); | 593 m_webView->layout(); |
547 EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); | 594 EXPECT_EQ(1.0, m_webView->pageScaleFactor()); |
548 } | 595 } |
549 | 596 |
550 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesInitializeAtMinimum
Scale) | 597 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWithOverviewMod
e) |
551 { | 598 { |
552 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); | 599 registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); |
553 | 600 |
554 FixedLayoutTestWebViewClient client; | 601 FixedLayoutTestWebViewClient client; |
555 client.m_screenInfo.deviceScaleFactor = 1; | 602 client.m_screenInfo.deviceScaleFactor = 1; |
556 int viewportWidth = 640; | 603 int viewportWidth = 640; |
557 int viewportHeight = 480; | 604 int viewportHeight = 480; |
558 float enforcedPageScalePactor = 0.5f; | 605 float enforcedPageScalePactor = 0.5f; |
559 | 606 |
560 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut
o-initial-scale.html", true, 0, &client); | 607 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-aut
o-initial-scale.html", true, 0, &client); |
561 m_webView->enableFixedLayoutMode(true); | 608 m_webView->enableFixedLayoutMode(true); |
| 609 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
562 m_webView->settings()->setViewportEnabled(true); | 610 m_webView->settings()->setViewportEnabled(true); |
563 m_webView->settings()->setInitializeAtMinimumPageScale(false); | 611 m_webView->settings()->setLoadWithOverviewMode(false); |
564 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); | 612 m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); |
565 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 613 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
566 | 614 |
567 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); | 615 EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); |
568 } | 616 } |
569 | 617 |
570 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial
Scale) | 618 TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial
Scale) |
571 { | 619 { |
572 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); | 620 registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); |
573 | 621 |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
743 | 791 |
744 m_webView->setPageScaleFactor(2, WebPoint()); | 792 m_webView->setPageScaleFactor(2, WebPoint()); |
745 | 793 |
746 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); | 794 WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); |
747 EXPECT_EQ(980, webViewImpl->page()->mainFrame()->contentRenderer()->unscaled
DocumentRect().width()); | 795 EXPECT_EQ(980, webViewImpl->page()->mainFrame()->contentRenderer()->unscaled
DocumentRect().width()); |
748 EXPECT_EQ(980, webViewImpl->mainFrameImpl()->frameView()->contentsSize().wid
th()); | 796 EXPECT_EQ(980, webViewImpl->mainFrameImpl()->frameView()->contentsSize().wid
th()); |
749 } | 797 } |
750 | 798 |
751 TEST_F(WebFrameTest, targetDensityDpiHigh) | 799 TEST_F(WebFrameTest, targetDensityDpiHigh) |
752 { | 800 { |
| 801 WebCore::Settings::setMockScrollbarsEnabled(true); |
| 802 WebCore::Settings::setUsesOverlayScrollbars(true); |
753 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); | 803 registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); |
754 | 804 |
755 FixedLayoutTestWebViewClient client; | 805 FixedLayoutTestWebViewClient client; |
756 client.m_screenInfo.deviceScaleFactor = 4.0f / 3.0f; | 806 client.m_screenInfo.deviceScaleFactor = 4.0f / 3.0f; |
757 int viewportWidth = 640; | 807 int viewportWidth = 640; |
758 int viewportHeight = 480; | 808 int viewportHeight = 480; |
759 | 809 |
760 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-tar
get-densitydpi-high.html", true, 0, &client); | 810 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-tar
get-densitydpi-high.html", true, 0, &client); |
761 m_webView->enableFixedLayoutMode(true); | 811 m_webView->enableFixedLayoutMode(true); |
762 m_webView->settings()->setViewportEnabled(true); | 812 m_webView->settings()->setViewportEnabled(true); |
763 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); | 813 m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
764 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 814 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
765 | 815 |
766 // high-dpi = 240, device-dpi = 160 | 816 // high-dpi = 240, device-dpi = 160 |
767 EXPECT_NEAR(viewportWidth * (240.0f / 160.0f), m_webView->fixedLayoutSize().
width, 1.0f); | 817 EXPECT_NEAR(viewportWidth * (240.0f / 160.0f), m_webView->fixedLayoutSize().
width, 1.0f); |
768 EXPECT_NEAR(viewportHeight * (240.0f / 160.0f), m_webView->fixedLayoutSize()
.height, 1.0f); | 818 EXPECT_NEAR(viewportHeight * (240.0f / 160.0f), m_webView->fixedLayoutSize()
.height, 1.0f); |
769 EXPECT_NEAR(160.0f / 240.0f, m_webView->pageScaleFactor(), 0.01f); | 819 EXPECT_NEAR(160.0f / 240.0f, m_webView->pageScaleFactor(), 0.01f); |
770 } | 820 } |
771 | 821 |
772 TEST_F(WebFrameTest, targetDensityDpiDevice) | 822 TEST_F(WebFrameTest, targetDensityDpiDevice) |
773 { | 823 { |
| 824 WebCore::Settings::setMockScrollbarsEnabled(true); |
| 825 WebCore::Settings::setUsesOverlayScrollbars(true); |
774 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html"); | 826 registerMockedHttpURLLoad("viewport-target-densitydpi-device.html"); |
775 | 827 |
776 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; | 828 float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; |
777 | 829 |
778 FixedLayoutTestWebViewClient client; | 830 FixedLayoutTestWebViewClient client; |
779 int viewportWidth = 640; | 831 int viewportWidth = 640; |
780 int viewportHeight = 480; | 832 int viewportHeight = 480; |
781 | 833 |
782 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { | 834 for (size_t i = 0; i < ARRAY_SIZE(deviceScaleFactors); ++i) { |
783 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; | 835 client.m_screenInfo.deviceScaleFactor = deviceScaleFactors[i]; |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
968 WebCore::FrameView* view = static_cast<WebViewImpl*>(m_webView)->mainFrameIm
pl()->frameView(); | 1020 WebCore::FrameView* view = static_cast<WebViewImpl*>(m_webView)->mainFrameIm
pl()->frameView(); |
969 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize
().width() - view->visibleContentRect().width()); | 1021 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize
().width() - view->visibleContentRect().width()); |
970 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize()
.height() - view->visibleContentRect().height()); | 1022 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize()
.height() - view->visibleContentRect().height()); |
971 | 1023 |
972 m_webView->setPageScaleFactor(10, WebPoint()); | 1024 m_webView->setPageScaleFactor(10, WebPoint()); |
973 | 1025 |
974 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize
().width() - view->visibleContentRect().width()); | 1026 EXPECT_EQ(view->scrollSize(WebCore::HorizontalScrollbar), view->contentsSize
().width() - view->visibleContentRect().width()); |
975 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize()
.height() - view->visibleContentRect().height()); | 1027 EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize()
.height() - view->visibleContentRect().height()); |
976 } | 1028 } |
977 | 1029 |
978 TEST_F(WebFrameTest, CanOverrideMaximumScaleFactor) | 1030 TEST_F(WebFrameTest, CanOverrideScaleLimits) |
979 { | 1031 { |
| 1032 WebCore::Settings::setMockScrollbarsEnabled(true); |
| 1033 WebCore::Settings::setUsesOverlayScrollbars(true); |
| 1034 |
980 registerMockedHttpURLLoad("no_scale_for_you.html"); | 1035 registerMockedHttpURLLoad("no_scale_for_you.html"); |
981 | 1036 |
982 FixedLayoutTestWebViewClient client; | 1037 FixedLayoutTestWebViewClient client; |
983 client.m_screenInfo.deviceScaleFactor = 1; | 1038 client.m_screenInfo.deviceScaleFactor = 1; |
984 int viewportWidth = 640; | 1039 int viewportWidth = 640; |
985 int viewportHeight = 480; | 1040 int viewportHeight = 480; |
986 | 1041 |
987 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_scale_for
_you.html", true, 0, &client); | 1042 m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_scale_for
_you.html", true, 0, &client); |
988 m_webView->enableFixedLayoutMode(true); | 1043 m_webView->enableFixedLayoutMode(true); |
989 m_webView->settings()->setViewportEnabled(true); | 1044 m_webView->settings()->setViewportEnabled(true); |
990 m_webView->resize(WebSize(viewportWidth, viewportHeight)); | 1045 m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
991 | 1046 |
992 EXPECT_EQ(1.0f, m_webView->maximumPageScaleFactor()); | 1047 EXPECT_EQ(2.0f, m_webView->minimumPageScaleFactor()); |
| 1048 EXPECT_EQ(2.0f, m_webView->maximumPageScaleFactor()); |
993 | 1049 |
994 m_webView->setIgnoreViewportTagMaximumScale(true); | 1050 m_webView->setIgnoreViewportTagScaleLimits(true); |
995 m_webView->layout(); | 1051 m_webView->layout(); |
996 | 1052 |
997 EXPECT_EQ(4.0f, m_webView->maximumPageScaleFactor()); | 1053 EXPECT_EQ(1.0f, m_webView->minimumPageScaleFactor()); |
| 1054 EXPECT_EQ(5.0f, m_webView->maximumPageScaleFactor()); |
| 1055 |
| 1056 m_webView->setIgnoreViewportTagScaleLimits(false); |
| 1057 m_webView->layout(); |
| 1058 |
| 1059 EXPECT_EQ(2.0f, m_webView->minimumPageScaleFactor()); |
| 1060 EXPECT_EQ(2.0f, m_webView->maximumPageScaleFactor()); |
998 } | 1061 } |
999 | 1062 |
1000 TEST_F(WebFrameTest, updateOverlayScrollbarLayers) | 1063 TEST_F(WebFrameTest, updateOverlayScrollbarLayers) |
1001 { | 1064 { |
1002 WebCore::Settings::setMockScrollbarsEnabled(true); | 1065 WebCore::Settings::setMockScrollbarsEnabled(true); |
1003 WebCore::Settings::setUsesOverlayScrollbars(true); | 1066 WebCore::Settings::setUsesOverlayScrollbars(true); |
1004 EXPECT_TRUE(WebCore::ScrollbarTheme::theme()->usesOverlayScrollbars()); | 1067 EXPECT_TRUE(WebCore::ScrollbarTheme::theme()->usesOverlayScrollbars()); |
1005 | 1068 |
1006 registerMockedHttpURLLoad("large-div.html"); | 1069 registerMockedHttpURLLoad("large-div.html"); |
1007 | 1070 |
(...skipping 2018 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3026 EXPECT_FALSE(client.wasProgrammaticScroll()); | 3089 EXPECT_FALSE(client.wasProgrammaticScroll()); |
3027 EXPECT_TRUE(client.wasUserScroll()); | 3090 EXPECT_TRUE(client.wasUserScroll()); |
3028 client.reset(); | 3091 client.reset(); |
3029 | 3092 |
3030 m_webView->close(); | 3093 m_webView->close(); |
3031 m_webView = 0; | 3094 m_webView = 0; |
3032 } | 3095 } |
3033 | 3096 |
3034 | 3097 |
3035 } // namespace | 3098 } // namespace |
OLD | NEW |