Fix frequent resetting to initialScale in non-useWideViewport mode.
The oldInitialScale was stored too late after
updatePageDefinedConstraints may have already reset it to -1. Compare
instead against the value before any constraints processing occurred.
I incorporated this fix into pending upstream patch http://crrev.com/26251010.
BUG: b/11261382
Change-Id: If871048204be595c247e50432bb7f5988eaa8eae
diff --git a/Source/core/page/PageScaleConstraintsSet.cpp b/Source/core/page/PageScaleConstraintsSet.cpp
index 1e15181..1e1b1b6 100644
--- a/Source/core/page/PageScaleConstraintsSet.cpp
+++ b/Source/core/page/PageScaleConstraintsSet.cpp
@@ -51,12 +51,8 @@
void PageScaleConstraintsSet::updatePageDefinedConstraints(const ViewportArguments& arguments, IntSize viewSize, int layoutFallbackWidth)
{
- float oldInitialScale = m_pageDefinedConstraints.initialScale;
m_pageDefinedConstraints = arguments.resolve(viewSize, viewSize, layoutFallbackWidth);
- if (oldInitialScale != m_pageDefinedConstraints.initialScale && m_pageDefinedConstraints.initialScale != -1)
- setNeedsReset(true);
-
m_constraintsDirty = true;
}
@@ -194,9 +190,6 @@
}
}
- if (oldInitialScale != m_pageDefinedConstraints.initialScale && m_pageDefinedConstraints.initialScale != -1)
- setNeedsReset(true);
-
m_pageDefinedConstraints.layoutSize.setWidth(adjustedLayoutSizeWidth);
m_pageDefinedConstraints.layoutSize.setHeight(adjustedLayoutSizeHeight);
}
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp
index c1546ba..78232be 100644
--- a/Source/web/WebViewImpl.cpp
+++ b/Source/web/WebViewImpl.cpp
@@ -3066,8 +3066,13 @@
if (adjustedArguments.height >= 0 && adjustedArguments.width <= m_size.height)
adjustedArguments.height = ViewportArguments::ValueDeviceHeight;
}
+
+ float oldInitialScale = m_pageScaleConstraintsSet.pageDefinedConstraints().initialScale;
m_pageScaleConstraintsSet.updatePageDefinedConstraints(adjustedArguments, m_size, page()->settings()->layoutFallbackWidth());
m_pageScaleConstraintsSet.adjustForAndroidWebViewQuirks(adjustedArguments, m_size, page()->settings()->layoutFallbackWidth(), deviceScaleFactor(), settingsImpl()->supportDeprecatedTargetDensityDPI(), page()->settings()->wideViewportQuirkEnabled(), page()->settings()->useWideViewport(), page()->settings()->loadWithOverviewMode());
+ float newInitialScale = m_pageScaleConstraintsSet.pageDefinedConstraints().initialScale;
+ if (oldInitialScale != newInitialScale && newInitialScale != -1)
+ m_pageScaleConstraintsSet.setNeedsReset(true);
WebSize layoutSize = flooredIntSize(m_pageScaleConstraintsSet.pageDefinedConstraints().layoutSize);