summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/java/android/webkit/WebView.java2
-rw-r--r--core/java/android/webkit/ZoomManager.java23
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;
+ }
}