Index: Source/web/WebViewImpl.cpp |
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp |
index 9bbc57e15937f157cf554080c4cbd57548f8581a..498523222b01d559edf73fea25c7e93424f8a240 100644 |
--- a/Source/web/WebViewImpl.cpp |
+++ b/Source/web/WebViewImpl.cpp |
@@ -2833,10 +2833,14 @@ void WebViewImpl::updatePageDefinedViewportConstraints(const ViewportDescription |
if (!settings()->viewportEnabled() || !page() || (!m_size.width && !m_size.height)) |
return; |
+ Document* document = page()->mainFrame()->document(); |
+ |
+ Length defaultMinWidth = document->viewportDefaultMinWidth(); |
+ if (defaultMinWidth.isAuto()) |
+ defaultMinWidth = Length(ExtendToZoom); |
+ |
ViewportDescription adjustedDescription = description; |
if (settingsImpl()->viewportMetaLayoutSizeQuirk() && adjustedDescription.type == ViewportDescription::ViewportMeta) { |
- if (adjustedDescription.maxWidth.type() == ExtendToZoom) |
- adjustedDescription.maxWidth = Length(); // auto |
const int legacyWidthSnappingMagicNumber = 320; |
if (adjustedDescription.maxWidth.isFixed() && adjustedDescription.maxWidth.value() <= legacyWidthSnappingMagicNumber) |
adjustedDescription.maxWidth = Length(DeviceWidth); |
@@ -2845,17 +2849,19 @@ void WebViewImpl::updatePageDefinedViewportConstraints(const ViewportDescription |
adjustedDescription.minWidth = adjustedDescription.maxWidth; |
adjustedDescription.minHeight = adjustedDescription.maxHeight; |
} |
+ |
float oldInitialScale = m_pageScaleConstraintsSet.pageDefinedConstraints().initialScale; |
- m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedDescription, m_size); |
+ m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedDescription, m_size, defaultMinWidth); |
if (settingsImpl()->clobberUserAgentInitialScaleQuirk() |
&& m_pageScaleConstraintsSet.userAgentConstraints().initialScale != -1 |
&& m_pageScaleConstraintsSet.userAgentConstraints().initialScale * deviceScaleFactor() <= 1) { |
if (description.maxWidth == Length(DeviceWidth) |
- || (description.maxWidth.type() == ExtendToZoom && m_pageScaleConstraintsSet.pageDefinedConstraints().initialScale == 1.0f)) |
+ || (description.maxWidth.type() == Auto && m_pageScaleConstraintsSet.pageDefinedConstraints().initialScale == 1.0f)) |
setInitialPageScaleOverride(-1); |
} |
- m_pageScaleConstraintsSet.adjustForAndroidWebViewQuirks(adjustedDescription, m_size, page()->settings().layoutFallbackWidth(), deviceScaleFactor(), settingsImpl()->supportDeprecatedTargetDensityDPI(), page()->settings().wideViewportQuirkEnabled(), page()->settings().useWideViewport(), page()->settings().loadWithOverviewMode(), settingsImpl()->viewportMetaNonUserScalableQuirk()); |
+ |
+ m_pageScaleConstraintsSet.adjustForAndroidWebViewQuirks(adjustedDescription, m_size, defaultMinWidth.intValue(), deviceScaleFactor(), settingsImpl()->supportDeprecatedTargetDensityDPI(), page()->settings().wideViewportQuirkEnabled(), page()->settings().useWideViewport(), page()->settings().loadWithOverviewMode(), settingsImpl()->viewportMetaNonUserScalableQuirk()); |
float newInitialScale = m_pageScaleConstraintsSet.pageDefinedConstraints().initialScale; |
if (oldInitialScale != newInitialScale && newInitialScale != -1) { |
m_pageScaleConstraintsSet.setNeedsReset(true); |