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);