Merge "Consolidate common zoom code and tighten access to some ZoomManager variables."
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 3173de9..8a8df5a 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -3322,8 +3322,7 @@
if (!animateScroll) {
extras = DRAW_EXTRAS_FIND;
}
- } else if (mShiftIsPressed
- && !nativePageShouldHandleShiftAndArrows()) {
+ } else if (mShiftIsPressed && !nativePageShouldHandleShiftAndArrows()) {
if (!mZoomManager.isZoomAnimating()) {
extras = DRAW_EXTRAS_SELECTION;
nativeSetSelectionRegion(mTouchSelection || mExtendSelection);
@@ -4454,7 +4453,7 @@
if (mZoomManager.supportsMultiTouchZoom() && ev.getPointerCount() > 1) {
// if the page disallows zoom, then skip multi-pointer action
- if (mZoomManager.mMinZoomScale >= mZoomManager.mMaxZoomScale) {
+ if (mZoomManager.isZoomScaleFixed()) {
return true;
}
@@ -5604,11 +5603,7 @@
int viewHeight = getViewHeightWithTitle();
float scale = Math.min((float) viewWidth / view.width,
(float) viewHeight / view.height);
- if (scale < mZoomManager.mMinZoomScale) {
- scale = mZoomManager.mMinZoomScale;
- } else if (scale > mZoomManager.mMaxZoomScale) {
- scale = mZoomManager.mMaxZoomScale;
- }
+ scale = mZoomManager.computeScaleWithLimits(scale);
if (!mZoomManager.willScaleTriggerZoom(scale)) {
if (contentToViewX(view.x) >= mScrollX
&& contentToViewX(view.x + view.width) <= mScrollX
@@ -5633,11 +5628,7 @@
int viewHeight = getViewHeightWithTitle();
float scale = Math.min((float) viewWidth / docWidth, (float) viewHeight
/ docHeight);
- if (scale < mZoomManager.mMinZoomScale) {
- scale = mZoomManager.mMinZoomScale;
- } else if (scale > mZoomManager.mMaxZoomScale) {
- scale = mZoomManager.mMaxZoomScale;
- }
+ scale = mZoomManager.computeScaleWithLimits(scale);
if (!mZoomManager.willScaleTriggerZoom(scale)) {
pinScrollTo(contentToViewX(docX + docWidth / 2) - viewWidth / 2,
contentToViewY(docY + docHeight / 2) - viewHeight / 2,
diff --git a/core/java/android/webkit/ZoomControlEmbedded.java b/core/java/android/webkit/ZoomControlEmbedded.java
index 2036635..6e07ada 100644
--- a/core/java/android/webkit/ZoomControlEmbedded.java
+++ b/core/java/android/webkit/ZoomControlEmbedded.java
@@ -36,8 +36,7 @@
}
public void show() {
- if (!getControls().isVisible()
- && mZoomManager.mMinZoomScale < mZoomManager.mMaxZoomScale) {
+ if (!getControls().isVisible() && !mZoomManager.isZoomScaleFixed()) {
mZoomButtonsController.setVisible(true);
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index d002b5b..5ae5a6a4 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -65,11 +65,11 @@
static float DEFAULT_MIN_ZOOM_SCALE;
// actual scale limits, which can be set through a webpage viewport meta tag
- float mMaxZoomScale;
- float mMinZoomScale;
+ private float mMaxZoomScale;
+ private float mMinZoomScale;
// locks the minimum ZoomScale to the value currently set in mMinZoomScale
- boolean mMinZoomScaleFixed = true;
+ private boolean mMinZoomScaleFixed = true;
// while in the zoom overview mode, the page's width is fully fit to the
// current window. The page is alive, in another words, you can click to
@@ -128,7 +128,6 @@
// use the framework's ScaleGestureDetector to handle multi-touch
private ScaleGestureDetector mScaleDetector;
-
private boolean mPinchToZoomAnimating = false;
public ZoomManager(WebView webView, CallbackProxy callbackProxy) {
@@ -177,6 +176,19 @@
mInitialScale = scaleInPercent * 0.01f;
}
+ public float computeScaleWithLimits(float scale) {
+ if (scale < mMinZoomScale) {
+ scale = mMinZoomScale;
+ } else if (scale > mMaxZoomScale) {
+ scale = mMaxZoomScale;
+ }
+ return scale;
+ }
+
+ public boolean isZoomScaleFixed() {
+ return mMinZoomScale >= mMaxZoomScale;
+ }
+
public static final boolean exceedsMinScaleIncrement(float scaleA, float scaleB) {
return Math.abs(scaleA - scaleB) >= MINIMUM_SCALE_INCREMENT;
}