diff options
| -rw-r--r-- | core/java/android/webkit/WebViewCore.java | 2 | ||||
| -rw-r--r-- | core/java/android/webkit/ZoomManager.java | 28 |
2 files changed, 14 insertions, 16 deletions
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 17f0a97d4875..b7d20b4ce81c 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1884,6 +1884,7 @@ final class WebViewCore { int mScrollX; int mScrollY; boolean mMobileSite; + boolean mIsRestored; } static class DrawData { @@ -2285,6 +2286,7 @@ final class WebViewCore { mInitialViewState.mScrollY = mRestoredY; mInitialViewState.mMobileSite = (0 == mViewportWidth); if (mRestoredScale > 0) { + mInitialViewState.mIsRestored = true; mInitialViewState.mViewScale = mRestoredScale / 100.0f; if (mRestoredTextWrapScale > 0) { mInitialViewState.mTextWrapScale = mRestoredTextWrapScale / 100.0f; diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index 69db6b218800..b94dc3ba5b64 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -260,12 +260,7 @@ class ZoomManager { public final float getReadingLevelScale() { // The reading scale is at least 0.5f apart from the overview scale. final float MIN_SCALE_DIFF = 0.5f; - final float zoomOverviewScale = getZoomOverviewScale(); - if (zoomOverviewScale > DEFAULT_READING_LEVEL_SCALE) { - return Math.min(DEFAULT_READING_LEVEL_SCALE, - zoomOverviewScale - MIN_SCALE_DIFF); - } - return Math.max(zoomOverviewScale + MIN_SCALE_DIFF, + return Math.max(getZoomOverviewScale() + MIN_SCALE_DIFF, DEFAULT_READING_LEVEL_SCALE); } @@ -864,32 +859,33 @@ class ZoomManager { if (!mWebView.drawHistory()) { float scale; - final boolean reflowText; - WebSettings settings = mWebView.getSettings(); + final float overviewScale = getZoomOverviewScale(); if (mInitialScale > 0) { scale = mInitialScale; - reflowText = exceedsMinScaleIncrement(mTextWrapScale, scale); } else if (viewState.mViewScale > 0) { mTextWrapScale = viewState.mTextWrapScale; scale = viewState.mViewScale; - reflowText = false; } else { - scale = getZoomOverviewScale(); - if (settings.getUseWideViewPort() - && settings.getLoadWithOverviewMode()) { - mInitialZoomOverview = true; - } else { + scale = overviewScale; + WebSettings settings = mWebView.getSettings(); + if (!settings.getUseWideViewPort() + || !settings.getLoadWithOverviewMode()) { scale = Math.max(viewState.mTextWrapScale, scale); - mInitialZoomOverview = !exceedsMinScaleIncrement(scale, getZoomOverviewScale()); } if (settings.isNarrowColumnLayout() && settings.getUseFixedViewport()) { // When first layout, reflow using the reading level scale to avoid // reflow when double tapped. mTextWrapScale = getReadingLevelScale(); } + } + boolean reflowText = false; + if (!viewState.mIsRestored) { + scale = Math.max(scale, overviewScale); + mTextWrapScale = Math.max(mTextWrapScale, overviewScale); reflowText = exceedsMinScaleIncrement(mTextWrapScale, scale); } + mInitialZoomOverview = !exceedsMinScaleIncrement(scale, overviewScale); setZoomScale(scale, reflowText); // update the zoom buttons as the scale can be changed |