Merge "Set initial view scale to be at least overview scale."
diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java
index 17f0a97..b7d20b4 100644
--- a/core/java/android/webkit/WebViewCore.java
+++ b/core/java/android/webkit/WebViewCore.java
@@ -1884,6 +1884,7 @@
int mScrollX;
int mScrollY;
boolean mMobileSite;
+ boolean mIsRestored;
}
static class DrawData {
@@ -2285,6 +2286,7 @@
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 69db6b2..b94dc3b 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -260,12 +260,7 @@
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 @@
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