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

Unified 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: Address code review comments 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 side-by-side diff with in-line comments
Download patch
Index: Source/WebKit/chromium/tests/WebFrameTest.cpp
diff --git a/Source/WebKit/chromium/tests/WebFrameTest.cpp b/Source/WebKit/chromium/tests/WebFrameTest.cpp
index c36270a0b6d95bfc19c75bffcaf1cfd2ea2df98f..a58531e271363d8ec8044f8027aa40b23da6847b 100644
--- a/Source/WebKit/chromium/tests/WebFrameTest.cpp
+++ b/Source/WebKit/chromium/tests/WebFrameTest.cpp
@@ -357,6 +357,9 @@ TEST_F(WebFrameTest, DeviceScaleFactorUsesDefaultWithoutViewportTag)
TEST_F(WebFrameTest, FixedLayoutInitializeAtMinimumPageScale)
{
+ WebCore::Settings::setMockScrollbarsEnabled(true);
+ WebCore::Settings::setUsesOverlayScrollbars(true);
+
registerMockedHttpURLLoad("fixed_layout.html");
FixedLayoutTestWebViewClient client;
@@ -374,6 +377,48 @@ 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;
+ 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, WideDocumentInitializeAtMinimumPageScale)
+{
+ 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;
@@ -405,6 +450,7 @@ TEST_F(WebFrameTest, setInitializeAtMinimumPageScaleToFalse)
m_webView->enableFixedLayoutMode(true);
m_webView->settings()->setViewportEnabled(true);
m_webView->settings()->setInitializeAtMinimumPageScale(false);
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
m_webView->resize(WebSize(viewportWidth, viewportHeight));
// The page must be displayed at 100% zoom.
@@ -425,6 +471,7 @@ TEST_F(WebFrameTest, SetInitializeAtMinimumPageScaleToFalseAndNoWideViewport)
m_webView->settings()->setViewportEnabled(true);
m_webView->settings()->setInitializeAtMinimumPageScale(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.
@@ -516,16 +563,21 @@ 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);
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
+ m_webView->setInitialPageScaleOverride(enforcedPageScaleFactor);
+ m_webView->layout();
- EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor());
+ EXPECT_EQ(enforcedPageScaleFactor, m_webView->pageScaleFactor());
int viewportWidth = 640;
int viewportHeight = 480;
@@ -534,17 +586,14 @@ TEST_F(WebFrameTest, setInitialPageScaleFactorPermanently)
m_webView->resize(WebSize(viewportWidth, viewportHeight));
m_webView->layout();
- EXPECT_EQ(enforcedPageScalePactor, m_webView->pageScaleFactor());
-
- m_webView->enableFixedLayoutMode(false);
- m_webView->settings()->setViewportEnabled(false);
- 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());
+
+ int defaultFixedLayoutWidth = 980;
+ float minimumPageScaleFactor = viewportWidth / (float) defaultFixedLayoutWidth;
+ EXPECT_EQ(minimumPageScaleFactor, m_webView->pageScaleFactor());
mnaganov (inactive) 2013/05/14 09:31:23 I'm a bit worried about this condition. There is a
aelias_OOO_until_Jul13 2013/05/14 21:39:52 OK, changed this to 1.0 + setInitializeAtMinimumPa
}
TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesInitializeAtMinimumScale)
@@ -750,6 +799,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 +822,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 +1028,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 +1045,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)

Powered by Google App Engine
This is Rietveld 408576698