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

Unified Diff: Source/WebKit/chromium/tests/WebFrameTest.cpp

Issue 13880019: [Android WebView] Update viewport size and scale calculation to match WebView Classic (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased correctly Created 7 years, 8 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 306f31a60fdec8b72b1ab0816256328c96e2004c..832a369efb16998531832a39486b8d6967b69baf 100644
--- a/Source/WebKit/chromium/tests/WebFrameTest.cpp
+++ b/Source/WebKit/chromium/tests/WebFrameTest.cpp
@@ -366,7 +366,70 @@ TEST_F(WebFrameTest, setInitializeAtMinimumPageScaleToFalse)
EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
}
-TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale)
+TEST_F(WebFrameTest, SetInitializeAtMinimumPageScaleToFalseAndNoWideViewport)
+{
+ registerMockedHttpURLLoad("large-div.html");
+
+ FixedLayoutTestWebViewClient client;
+ client.m_screenInfo.deviceScaleFactor = 1;
+ int viewportWidth = 640;
+ int viewportHeight = 480;
+
+ 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()->setUseWideViewport(false);
+ m_webView->resize(WebSize(viewportWidth, viewportHeight));
+
+ // The page must be displayed at 100% zoom, despite that it hosts a wide div element.
+ EXPECT_EQ(1.0f, m_webView->pageScaleFactor());
+}
+
+TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidth)
+{
+ registerMockedHttpURLLoad("viewport-auto-initial-scale.html");
+
+ FixedLayoutTestWebViewClient client;
+ client.m_screenInfo.deviceScaleFactor = 1;
+ int viewportWidth = 640;
+ int viewportHeight = 480;
+
+ 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()->setUseWideViewport(false);
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
+ m_webView->resize(WebSize(viewportWidth, viewportHeight));
+
+ // The page sets viewport width to 3000, but with UseWideViewport == false is must be ignored.
+ WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
+ EXPECT_EQ(viewportWidth, webViewImpl->mainFrameImpl()->frameView()->contentsSize().width());
+}
+
+TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale)
+{
+ registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
+
+ FixedLayoutTestWebViewClient client;
+ client.m_screenInfo.deviceScaleFactor = 1;
+ int viewportWidth = 640;
+ int viewportHeight = 480;
+
+ m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client);
+ m_webView->enableFixedLayoutMode(true);
+ m_webView->settings()->setViewportEnabled(true);
+ m_webView->settings()->setUseWideViewport(false);
+ m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
+ m_webView->resize(WebSize(viewportWidth, viewportHeight));
+
+ // The page sets viewport width to 3000, but with UseWideViewport == false is must be ignored.
+ // While the initial scale specified by the page must be accounted.
+ WebViewImpl* webViewImpl = static_cast<WebViewImpl*>(m_webView);
+ EXPECT_EQ(viewportWidth / 2, webViewImpl->mainFrameImpl()->frameView()->contentsSize().width());
+}
+
+TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth)
{
registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
@@ -378,6 +441,27 @@ TEST_F(WebFrameTest, PageViewportInitialScaleOverridesInitializeAtMinimumScale)
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x-initial-scale.html", true, 0, &client);
m_webView->enableFixedLayoutMode(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)
+{
+ registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
+
+ FixedLayoutTestWebViewClient client;
+ client.m_screenInfo.deviceScaleFactor = 1;
+ int viewportWidth = 640;
+ int viewportHeight = 480;
+
+ m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client);
+ m_webView->enableFixedLayoutMode(true);
+ m_webView->settings()->setViewportEnabled(true);
m_webView->settings()->setInitializeAtMinimumPageScale(false);
m_webView->resize(WebSize(viewportWidth, viewportHeight));
@@ -440,7 +524,7 @@ TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesInitializeAtMinimum
TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitialScale)
{
- registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
+ registerMockedHttpURLLoad("viewport-wide-2x-initial-scale.html");
FixedLayoutTestWebViewClient client;
client.m_screenInfo.deviceScaleFactor = 1;
@@ -448,7 +532,7 @@ TEST_F(WebFrameTest, PermanentInitialPageScaleFactorOverridesPageViewportInitial
int viewportHeight = 480;
float enforcedPageScalePactor = 0.5f;
- m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-2x-initial-scale.html", true, 0, &client);
+ m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-wide-2x-initial-scale.html", true, 0, &client);
m_webView->enableFixedLayoutMode(true);
m_webView->settings()->setViewportEnabled(true);
m_webView->setInitialPageScaleOverride(enforcedPageScalePactor);

Powered by Google App Engine
This is Rietveld 408576698