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 69e658f1572c..4ae2ee218295 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 de624e085202..9d472e02ae46 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; +    }  } |