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

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

Issue 14813025: Refactor viewport initialization logic out of WebViewImpl. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix webkit_unit_tests Created 7 years, 7 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 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698