Index: Source/WebKit/chromium/tests/WebFrameTest.cpp |
diff --git a/Source/WebKit/chromium/tests/WebFrameTest.cpp b/Source/WebKit/chromium/tests/WebFrameTest.cpp |
index 2a19ee10754e3c6cbff7b5b34167969e0f4fbea0..6b8de9f3b76d31cbc7e32dd5931e04e0103d5e7a 100644 |
--- a/Source/WebKit/chromium/tests/WebFrameTest.cpp |
+++ b/Source/WebKit/chromium/tests/WebFrameTest.cpp |
@@ -355,8 +355,11 @@ TEST_F(WebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag) |
m_webView->mainFrame()->contentAsText(1024).utf8(); |
} |
-TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumPageScale) |
+TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumScale) |
{ |
+ WebCore::Settings::setMockScrollbarsEnabled(true); |
+ WebCore::Settings::setUsesOverlayScrollbars(true); |
+ |
registerMockedHttpURLLoad("fixed_layout.html"); |
FixedLayoutTestWebViewClient client; |
@@ -374,6 +377,7 @@ TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumPageScale) |
int defaultFixedLayoutWidth = 980; |
float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWidth; |
EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); |
+ EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor()); |
// Assume the user has pinch zoomed to page scale factor 2. |
float userPinchPageScaleFactor = 2; |
@@ -392,7 +396,48 @@ TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumPageScale) |
EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
} |
-TEST_F(WebFrameTest, setInitializeAtMinimumPageScaleToFalse) |
+TEST_F(WebFrameTest, WideDocumentInitializeAtMinimumScale) |
+{ |
+ WebCore::Settings::setMockScrollbarsEnabled(true); |
+ WebCore::Settings::setUsesOverlayScrollbars(true); |
+ |
+ registerMockedHttpURLLoad("wide_document.html"); |
+ |
+ FixedLayoutTestWebViewClient client; |
+ client.m_screenInfo.deviceScaleFactor = 1; |
+ int viewportWidth = 640; |
+ int viewportHeight = 480; |
+ |
+ // Make sure we initialize to minimum scale, even if the window size |
+ // only becomes available after the load begins. |
+ m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "wide_document.html", true, 0, &client); |
+ m_webView->enableFixedLayoutMode(true); |
+ m_webView->settings()->setViewportEnabled(true); |
+ m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
+ |
+ int wideDocumentWidth = 1500; |
+ float minimumPageScaleFactor = viewportWidth / (float) wideDocumentWidth; |
+ EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor()); |
+ EXPECT_EQ(minimumPageScaleFactor, m_webView->minimumPageScaleFactor()); |
+ |
+ // Assume the user has pinch zoomed to page scale factor 2. |
+ float userPinchPageScaleFactor = 2; |
+ m_webView->setPageScaleFactorPreservingScrollOffset(userPinchPageScaleFactor); |
+ m_webView->layout(); |
+ |
+ // Make sure we don't reset to initial scale if the page continues to load. |
+ bool isNewNavigation; |
+ WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); |
+ webViewImpl ->didCommitLoad(&isNewNavigation, false); |
+ webViewImpl ->didChangeContentsSize(); |
+ EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
+ |
+ // Make sure we don't reset to initial scale if the viewport size changes. |
+ m_webView->resize(WebSize(viewportWidth, viewportHeight + 100)); |
+ EXPECT_EQ(userPinchPageScaleFactor, m_webView->pageScaleFactor()); |
+} |
+ |
+TEST_F(WebFrameTest, setLoadWithOverviewModeToFalse) |
{ |
registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); |
@@ -404,14 +449,15 @@ TEST_F(WebFrameTest, setInitializeAtMinimumPageScaleToFalse) |
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-auto-initial-scale.html", true, 0, &client); |
m_webView->enableFixedLayoutMode(true); |
m_webView->settings()->setViewportEnabled(true); |
- m_webView->settings()->setInitializeAtMinimumPageScale(false); |
+ m_webView->settings()->setLoadWithOverviewMode(false); |
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
// The page must be displayed at 100% zoom. |
EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); |
} |
-TEST_F(WebFrameTest, SetInitializeAtMinimumPageScaleToFalseAndNoWideViewport) |
+TEST_F(WebFrameTest, SetLoadWithOverviewModeToFalseAndNoWideViewport) |
{ |
registerMockedHttpURLLoad("large-div.html"); |
@@ -423,8 +469,9 @@ TEST_F(WebFrameTest, SetInitializeAtMinimumPageScaleToFalseAndNoWideViewport) |
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "large-div.html", true, 0, &client); |
m_webView->enableFixedLayoutMode(true); |
m_webView->settings()->setViewportEnabled(true); |
- m_webView->settings()->setInitializeAtMinimumPageScale(false); |
+ m_webView->settings()->setLoadWithOverviewMode(false); |
m_webView->settings()->setUseWideViewport(false); |
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
// The page must be displayed at 100% zoom, despite that it hosts a wide div element. |
@@ -484,18 +531,17 @@ TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth) |
int viewportHeight = 480; |
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x-initial-scale.html", true, 0, &client); |
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
m_webView->enableFixedLayoutMode(true); |
+ m_webView->settings()->setUseWideViewport(true); |
m_webView->settings()->setViewportEnabled(true); |
- // This behavior is for compatibility with Android WebView, so it is only |
- // activated when support for target-densityDpi is enabled. |
- m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView); |
EXPECT_EQ(980, webViewImpl->mainFrameImpl()->frameView()->contentsSize().width()); |
} |
-TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale) |
+TEST_F(WebFrameTest, PageViewportInitialScaleOverridesLoadWithOverviewMode) |
{ |
registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html"); |
@@ -506,8 +552,9 @@ TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale) |
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client); |
m_webView->enableFixedLayoutMode(true); |
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
m_webView->settings()->setViewportEnabled(true); |
- m_webView->settings()->setInitializeAtMinimumPageScale(false); |
+ m_webView->settings()->setLoadWithOverviewMode(false); |
m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
// The page must be displayed at 200% zoom, as specified in its viewport meta tag. |
@@ -516,38 +563,38 @@ TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale) |
TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently) |
{ |
+ WebCore::Settings::setMockScrollbarsEnabled(true); |
+ WebCore::Settings::setUsesOverlayScrollbars(true); |
+ |
registerMockedHttpURLLoad("fixed_layout.html"); |
FixedLayoutTestWebViewClient client; |
client.m_screenInfo.deviceScaleFactor = 1; |
- float enforcedPageScalePactor = 2.0f; |
+ float enforcedPageScaleFactor = 2.0f; |
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "fixed_layout.html", true, 0, &client); |
- m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); |
- |
- EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); |
- |
- int viewportWidth = 640; |
- int viewportHeight = 480; |
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
+ m_webView->settings()->setLoadWithOverviewMode(false); |
+ m_webView->setInitialPageScaleOverride(enforcedPageScaleFactor); |
m_webView->enableFixedLayoutMode(true); |
m_webView->settings()->setViewportEnabled(true); |
- m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
m_webView->layout(); |
- EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); |
+ EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor()); |
- m_webView->enableFixedLayoutMode(false); |
- m_webView->settings()->setViewportEnabled(false); |
+ int viewportWidth = 640; |
+ int viewportHeight = 480; |
+ m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
m_webView->layout(); |
- EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor()); |
+ EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor()); |
m_webView->setInitialPageScaleOverride(-1); |
m_webView->layout(); |
- EXPECT_EQ(1.0f, m_webView->pageScaleFactor()); |
+ EXPECT_EQ(1.0, m_webView->pageScaleFactor()); |
} |
-TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesInitializeAtMinimumScale) |
+TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesLoadWithOverviewMode) |
{ |
registerMockedHttpURLLoad("viewport-auto-initial-scale.html"); |
@@ -559,8 +606,9 @@ TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesInitializeAtMinimum |
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-auto-initial-scale.html", true, 0, &client); |
m_webView->enableFixedLayoutMode(true); |
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true); |
m_webView->settings()->setViewportEnabled(true); |
- m_webView->settings()->setInitializeAtMinimumPageScale(false); |
+ m_webView->settings()->setLoadWithOverviewMode(false); |
m_webView->setInitialPageScaleOverride(enforcedPageScalePactor); |
m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
@@ -750,6 +798,8 @@ TEST_F(WebFrameTest, pageScaleFactorDoesNotApplyCssTransform) |
TEST_F(WebFrameTest, targetDensityDpiHigh) |
{ |
+ WebCore::Settings::setMockScrollbarsEnabled(true); |
+ WebCore::Settings::setUsesOverlayScrollbars(true); |
registerMockedHttpURLLoad("viewport-target-densitydpi-high.html"); |
FixedLayoutTestWebViewClient client; |
@@ -771,6 +821,8 @@ TEST_F(WebFrameTest, targetDensityDpiHigh) |
TEST_F(WebFrameTest, targetDensityDpiDevice) |
{ |
+ WebCore::Settings::setMockScrollbarsEnabled(true); |
+ WebCore::Settings::setUsesOverlayScrollbars(true); |
registerMockedHttpURLLoad("viewport-target-densitydpi-device.html"); |
float deviceScaleFactors[] = { 1.0f, 4.0f / 3.0f, 2.0f }; |
@@ -975,8 +1027,11 @@ TEST_F(WebFrameTest, pageScaleFactorUpdatesScrollbars) |
EXPECT_EQ(view->scrollSize(WebCore::VerticalScrollbar), view->contentsSize().height() - view->visibleContentRect().height()); |
} |
-TEST_F(WebFrameTest, CanOverrideMaximumScaleFactor) |
+TEST_F(WebFrameTest, CanOverrideScaleLimits) |
{ |
+ WebCore::Settings::setMockScrollbarsEnabled(true); |
+ WebCore::Settings::setUsesOverlayScrollbars(true); |
+ |
registerMockedHttpURLLoad("no_scale_for_you.html"); |
FixedLayoutTestWebViewClient client; |
@@ -989,12 +1044,20 @@ TEST_F(WebFrameTest, CanOverrideMaximumScaleFactor) |
m_webView->settings()->setViewportEnabled(true); |
m_webView->resize(WebSize(viewportWidth, viewportHeight)); |
- EXPECT_EQ(1.0f, m_webView->maximumPageScaleFactor()); |
+ EXPECT_EQ(2.0f, m_webView->minimumPageScaleFactor()); |
+ EXPECT_EQ(2.0f, m_webView->maximumPageScaleFactor()); |
+ |
+ m_webView->setIgnoreViewportTagScaleLimits(true); |
+ m_webView->layout(); |
+ |
+ EXPECT_EQ(1.0f, m_webView->minimumPageScaleFactor()); |
+ EXPECT_EQ(5.0f, m_webView->maximumPageScaleFactor()); |
- m_webView->setIgnoreViewportTagMaximumScale(true); |
+ m_webView->setIgnoreViewportTagScaleLimits(false); |
m_webView->layout(); |
- EXPECT_EQ(4.0f, m_webView->maximumPageScaleFactor()); |
+ EXPECT_EQ(2.0f, m_webView->minimumPageScaleFactor()); |
+ EXPECT_EQ(2.0f, m_webView->maximumPageScaleFactor()); |
} |
TEST_F(WebFrameTest, updateOverlayScrollbarLayers) |