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

Unified Diff: Source/core/page/PageScaleConstraintsSet.cpp

Issue 19555002: Translate viewport related meta tags into @viewport descriptors as suggested by the CSS Device Adap… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 7 years, 4 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/core/page/PageScaleConstraintsSet.cpp
diff --git a/Source/core/page/PageScaleConstraintsSet.cpp b/Source/core/page/PageScaleConstraintsSet.cpp
index e0d185b6542fa03e2a6d47f5e0a90ac81d340dab..c4f89cb82dc874023f7c34bd13ed02f559290205 100644
--- a/Source/core/page/PageScaleConstraintsSet.cpp
+++ b/Source/core/page/PageScaleConstraintsSet.cpp
@@ -49,9 +49,9 @@ PageScaleConstraints PageScaleConstraintsSet::defaultConstraints() const
return PageScaleConstraints(-1, defaultMinimumScale, defaultMaximumScale);
}
-void PageScaleConstraintsSet::updatePageDefinedConstraints(const ViewportArguments& arguments, IntSize viewSize, int layoutFallbackWidth)
+void PageScaleConstraintsSet::updatePageDefinedConstraints(const ViewportArguments& arguments, IntSize viewSize)
{
- m_pageDefinedConstraints = arguments.resolve(viewSize, layoutFallbackWidth);
+ m_pageDefinedConstraints = arguments.resolve(viewSize);
m_constraintsDirty = true;
}
@@ -121,9 +121,9 @@ static float getLayoutWidthForNonWideViewport(const FloatSize& deviceSize, float
void PageScaleConstraintsSet::adjustPageDefinedConstraintsForAndroidWebView(const ViewportArguments& arguments, IntSize viewSize, int layoutFallbackWidth, float deviceScaleFactor, bool useWideViewport, bool loadWithOverviewMode)
{
- float initialScale = m_pageDefinedConstraints.initialScale;
- if (arguments.zoom == -1 && !loadWithOverviewMode) {
- if (arguments.width == -1 || (useWideViewport && arguments.width != ViewportArguments::ValueDeviceWidth))
+ float zoom = m_pageDefinedConstraints.initialScale;
+ if (zoom < 0 && !loadWithOverviewMode) {
+ if (arguments.minWidth < 0 || useWideViewport)
m_pageDefinedConstraints.initialScale = 1.0f;
}
@@ -134,17 +134,24 @@ void PageScaleConstraintsSet::adjustPageDefinedConstraintsForAndroidWebView(cons
m_pageDefinedConstraints.maximumScale *= targetDensityDPIFactor;
float adjustedLayoutSizeWidth = m_pageDefinedConstraints.layoutSize.width();
- if (useWideViewport && arguments.width == -1 && arguments.zoom != 1.0f)
+
+ if (!useWideViewport)
+ adjustedLayoutSizeWidth = getLayoutWidthForNonWideViewport(viewSize, zoom);
+
+ adjustedLayoutSizeWidth /= targetDensityDPIFactor;
+
+ // FIXME: Why this particular Android behavior?
+ //
+ // <meta name="viewport" content="initial-scale=2.0"> translates into:
+ // @viewport { zoom: 2.0; width: extend-to-zoom; } according to the spec.
aelias_OOO_until_Jul13 2013/08/27 16:58:09 We've observed that classic Android WebView does n
+ //
+ // But Android seems to convert the width into 'auto';
+ if (useWideViewport && arguments.maxWidth < 0 && arguments.zoom != 1.0f)
adjustedLayoutSizeWidth = layoutFallbackWidth;
- else {
- if (!useWideViewport)
- adjustedLayoutSizeWidth = getLayoutWidthForNonWideViewport(viewSize, initialScale);
- if (!useWideViewport || arguments.width == -1 || arguments.width == ViewportArguments::ValueDeviceWidth)
- adjustedLayoutSizeWidth /= targetDensityDPIFactor;
- }
ASSERT(m_pageDefinedConstraints.layoutSize.width() > 0);
float adjustedLayoutSizeHeight = (adjustedLayoutSizeWidth * m_pageDefinedConstraints.layoutSize.height()) / m_pageDefinedConstraints.layoutSize.width();
+
m_pageDefinedConstraints.layoutSize.setWidth(adjustedLayoutSizeWidth);
m_pageDefinedConstraints.layoutSize.setHeight(adjustedLayoutSizeHeight);
}

Powered by Google App Engine
This is Rietveld 408576698