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;
     }