diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 0416c641590a2..8d21b33275761 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -5203,8 +5203,19 @@ public class WebView extends AbsoluteLayout mInZoomOverview = false; mLastScale = restoreState.mTextWrapScale; if (restoreState.mMinScale == 0) { - mMinZoomScale = DEFAULT_MIN_ZOOM_SCALE; - mMinZoomScaleFixed = false; + if (restoreState.mMobileSite) { + if (draw.mMinPrefWidth > draw.mViewPoint.x) { + mMinZoomScale = (float) viewWidth + / draw.mMinPrefWidth; + mMinZoomScaleFixed = false; + } else { + mMinZoomScale = mDefaultScale; + mMinZoomScaleFixed = true; + } + } else { + mMinZoomScale = DEFAULT_MIN_ZOOM_SCALE; + mMinZoomScaleFixed = false; + } } else { mMinZoomScale = restoreState.mMinScale; mMinZoomScaleFixed = true; @@ -5217,11 +5228,11 @@ public class WebView extends AbsoluteLayout setNewZoomScale(mLastScale, false); setContentScrollTo(restoreState.mScrollX, restoreState.mScrollY); - if (!ENABLE_DOUBLETAP_ZOOM - || !settings.getLoadWithOverviewMode()) { - } else { - if (useWideViewport - && restoreState.mViewScale == 0) { + if (ENABLE_DOUBLETAP_ZOOM && useWideViewport + && settings.getLoadWithOverviewMode()) { + if (restoreState.mViewScale == 0 + || (restoreState.mMobileSite + && mMinZoomScale < mDefaultScale)) { mInZoomOverview = true; } } diff --git a/core/java/android/webkit/WebViewCore.java b/core/java/android/webkit/WebViewCore.java index 2ff28242798b5..26d93434d4317 100644 --- a/core/java/android/webkit/WebViewCore.java +++ b/core/java/android/webkit/WebViewCore.java @@ -1572,7 +1572,10 @@ final class WebViewCore { // layout. draw.mViewPoint = new Point(mCurrentViewWidth, mCurrentViewHeight); if (WebView.ENABLE_DOUBLETAP_ZOOM && mSettings.getUseWideViewPort()) { - draw.mMinPrefWidth = Math.max(DEFAULT_VIEWPORT_WIDTH, + draw.mMinPrefWidth = Math.max( + mViewportWidth == -1 ? DEFAULT_VIEWPORT_WIDTH + : (mViewportWidth == 0 ? mCurrentViewWidth + : mViewportWidth), nativeGetContentMinPrefWidth()); } if (mRestoreState != null) { @@ -1859,9 +1862,6 @@ final class WebViewCore { if (mViewportInitialScale == 0) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT; } - if (mViewportMinimumScale == 0) { - mViewportMinimumScale = WebView.DEFAULT_SCALE_PERCENT; - } } if (mViewportUserScalable == false) { mViewportInitialScale = WebView.DEFAULT_SCALE_PERCENT;