summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorShimeng (Simon) Wang <swang@google.com>2011-02-16 14:52:13 -0800
committerShimeng (Simon) Wang <swang@google.com>2011-02-17 09:32:23 -0800
commitd75fd491eaa7b10c20759a2b98ca78104c7047ce (patch)
tree193f8d0f5c964d225a78dfc49e64a88058d7587c /core
parent4f674407527b342692ee9cb6eacdbfb1bec764c7 (diff)
downloadframeworks_base-d75fd491eaa7b10c20759a2b98ca78104c7047ce.zip
frameworks_base-d75fd491eaa7b10c20759a2b98ca78104c7047ce.tar.gz
frameworks_base-d75fd491eaa7b10c20759a2b98ca78104c7047ce.tar.bz2
Fine tune the zoom overview behavior.
issue: 3451476 Change-Id: Idc267979ae0b33f4f2fbcb9aab7739bdd1dc1eff
Diffstat (limited to 'core')
-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;
+ }
}