diff options
-rw-r--r-- | core/java/android/webkit/WebView.java | 2 | ||||
-rw-r--r-- | core/java/android/webkit/ZoomManager.java | 23 |
2 files changed, 21 insertions, 4 deletions
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 69e658f..4ae2ee2 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -3302,7 +3302,7 @@ public class WebView extends AbsoluteLayout } mPageThatNeedsToSlideTitleBarOffScreen = null; } - + mZoomManager.onPageFinished(url); injectAccessibilityForUrl(url); } diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java index de624e0..9d472e0 100644 --- a/core/java/android/webkit/ZoomManager.java +++ b/core/java/android/webkit/ZoomManager.java @@ -875,12 +875,21 @@ class ZoomManager { // fit the content width to the current view for the first new picture // after first layout. boolean scaleHasDiff = exceedsMinScaleIncrement(newZoomOverviewScale, mActualScale); - if (!mWebView.drawHistory() && mInitialZoomOverview && scaleHasDiff) { + // Make sure the actual scale is no less than zoom overview scale. + boolean scaleLessThanOverview = + (newZoomOverviewScale - mActualScale) >= MINIMUM_SCALE_INCREMENT; + // Make sure mobile sites are correctly handled since mobile site will + // change content width after rotating. + boolean mobileSiteInOverview = mInZoomOverview && + !exceedsMinScaleIncrement(newZoomOverviewScale, 1.0f); + if (!mWebView.drawHistory() && + (mInitialZoomOverview || scaleLessThanOverview || mobileSiteInOverview) && + scaleHasDiff) { mInitialZoomOverview = false; setZoomScale(newZoomOverviewScale, !willScaleTriggerZoom(mTextWrapScale) && !mWebView.getSettings().getUseFixedViewport()); - } else if (scaleHasDiff) { - mInZoomOverview = false; + } else { + mInZoomOverview = !scaleHasDiff; } } @@ -1061,4 +1070,12 @@ class ZoomManager { public void setHardwareAccelerated() { mHardwareAccelerated = true; } + + /** + * OnPageFinished called by webview when a page is fully loaded. + */ + /* package*/ void onPageFinished(String url) { + // Turn off initial zoom overview flag when a page is fully loaded. + mInitialZoomOverview = false; + } } |