am ade26e2e: Merge "Fix restore of view and text wrap scales." into ics-mr1

* commit 'ade26e2e383cd0041f8aa94467d119c2bd1ee5e8':
  Fix restore of view and text wrap scales.
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 1294a28..e6fa4d7e 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -124,6 +124,7 @@
      */
     private int mViewportDensityDpi = -1;
 
+    private boolean mIsRestored = false;
     private float mRestoredScale = 0;
     private float mRestoredTextWrapScale = 0;
     private int mRestoredX = 0;
@@ -2254,7 +2255,7 @@
 
         if (mWebView == null) return;
 
-        boolean updateViewState = standardLoad || mRestoredScale > 0;
+        boolean updateViewState = standardLoad || mIsRestored;
         setupViewport(updateViewState);
         // if updateRestoreState is true, ViewManager.postReadyToDrawAll() will
         // be called after the WebView updates its state. If updateRestoreState
@@ -2271,6 +2272,7 @@
 
         // reset the scroll position, the restored offset and scales
         mRestoredX = mRestoredY = 0;
+        mIsRestored = false;
         mRestoredScale = mRestoredTextWrapScale = 0;
     }
 
@@ -2399,14 +2401,10 @@
         mInitialViewState.mScrollX = mRestoredX;
         mInitialViewState.mScrollY = mRestoredY;
         mInitialViewState.mMobileSite = (0 == mViewportWidth);
-        if (mRestoredScale > 0) {
+        if (mIsRestored) {
             mInitialViewState.mIsRestored = true;
             mInitialViewState.mViewScale = mRestoredScale;
-            if (mRestoredTextWrapScale > 0) {
-                mInitialViewState.mTextWrapScale = mRestoredTextWrapScale;
-            } else {
-                mInitialViewState.mTextWrapScale = mInitialViewState.mViewScale;
-            }
+            mInitialViewState.mTextWrapScale = mRestoredTextWrapScale;
         } else {
             if (mViewportInitialScale > 0) {
                 mInitialViewState.mViewScale = mInitialViewState.mTextWrapScale =
@@ -2525,14 +2523,9 @@
     // called by JNI
     private void restoreScale(float scale, float textWrapScale) {
         if (mBrowserFrame.firstLayoutDone() == false) {
-            // If restored scale and textWrapScale are 0, set them to
-            // overview and reading level scale respectively.
-            mRestoredScale = (scale <= 0.0)
-                ? mWebView.getZoomOverviewScale() : scale;
-            if (mSettings.getUseWideViewPort()) {
-                mRestoredTextWrapScale = (textWrapScale <= 0.0)
-                    ? mWebView.getReadingLevelScale() : textWrapScale;
-            }
+            mIsRestored = true;
+            mRestoredScale = scale;
+            mRestoredTextWrapScale = textWrapScale;
         }
     }
 
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 7d3cf8e..2a0b6e5 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -1121,9 +1121,11 @@
             if (mInitialScale > 0) {
                 scale = mInitialScale;
                 mTextWrapScale = scale;
-            } else if (viewState.mViewScale > 0) {
-                mTextWrapScale = viewState.mTextWrapScale;
-                scale = viewState.mViewScale;
+            } else if (viewState.mIsRestored) {
+                scale = (viewState.mViewScale > 0)
+                    ? viewState.mViewScale : overviewScale;
+                mTextWrapScale = (viewState.mTextWrapScale > 0)
+                    ? viewState.mTextWrapScale : getReadingLevelScale();
             } else {
                 scale = overviewScale;
                 if (!settings.getUseWideViewPort()