Commit d14c7ab9 authored by mnaganov@chromium.org's avatar mnaganov@chromium.org

[Android WebView] Fix WideViewport use case after r157293

This fixes Chromium test AwSettingsTest.testUseWideViewportLayoutWidth

BUG=285995

Review URL: https://chromiumcodereview.appspot.com/23459006

git-svn-id: svn://svn.chromium.org/blink/trunk@157386 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 87738b32
......@@ -136,12 +136,12 @@ void PageScaleConstraintsSet::adjustPageDefinedConstraintsForAndroidWebView(cons
m_pageDefinedConstraints.maximumScale *= targetDensityDPIFactor;
float adjustedLayoutSizeWidth = m_pageDefinedConstraints.layoutSize.width();
if (useWideViewport && arguments.maxWidth.type() == ExtendToZoom && arguments.zoom != 1.0f)
if (useWideViewport && (arguments.maxWidth.isAuto() || arguments.maxWidth.type() == ExtendToZoom) && arguments.zoom != 1.0f)
adjustedLayoutSizeWidth = layoutFallbackWidth;
else {
if (!useWideViewport)
adjustedLayoutSizeWidth = getLayoutWidthForNonWideViewport(viewSize, initialScale);
if (!useWideViewport || arguments.maxWidth.type() == ExtendToZoom || arguments.maxWidth.isViewportPercentage())
if (!useWideViewport || (arguments.maxWidth.isAuto() || arguments.maxWidth.type() == ExtendToZoom) || arguments.maxWidth.isViewportPercentage())
adjustedLayoutSizeWidth /= targetDensityDPIFactor;
}
......
......@@ -581,6 +581,45 @@ TEST_F(WebFrameTest, NoWideViewportIgnoresPageViewportWidthButAccountsScale)
EXPECT_EQ(viewportHeight / 2, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().height());
}
TEST_F(WebFrameTest, WideViewportSetsTo980WithoutViewportTag)
{
registerMockedHttpURLLoad("no_viewport_tag.html");
FixedLayoutTestWebViewClient client;
client.m_screenInfo.deviceScaleFactor = 1;
int viewportWidth = 640;
int viewportHeight = 480;
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "no_viewport_tag.html", true, 0, &client);
m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
m_webView->enableFixedLayoutMode(true);
m_webView->settings()->setUseWideViewport(true);
m_webView->settings()->setViewportEnabled(true);
m_webView->resize(WebSize(viewportWidth, viewportHeight));
EXPECT_EQ(980, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().width());
EXPECT_EQ(980.0 / viewportWidth * viewportHeight, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().height());
}
TEST_F(WebFrameTest, NoWideViewportAndHeightInMeta)
{
registerMockedHttpURLLoad("viewport-height-1000.html");
FixedLayoutTestWebViewClient client;
client.m_screenInfo.deviceScaleFactor = 1;
int viewportWidth = 640;
int viewportHeight = 480;
m_webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "viewport-height-1000.html", true, 0, &client);
m_webView->settings()->setSupportDeprecatedTargetDensityDPI(true);
m_webView->enableFixedLayoutMode(true);
m_webView->settings()->setUseWideViewport(false);
m_webView->settings()->setViewportEnabled(true);
m_webView->resize(WebSize(viewportWidth, viewportHeight));
EXPECT_EQ(viewportWidth, webViewImpl()->mainFrameImpl()->frameView()->contentsSize().width());
}
TEST_F(WebFrameTest, WideViewportSetsTo980WithAutoWidth)
{
registerMockedHttpURLLoad("viewport-2x-initial-scale.html");
......
<html>
<head>
<meta name='viewport' content='height=1000' />
</head>
<body>
A page with the viewport height set to 1000.
</body>
</html>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment