/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.webkit; import android.test.AndroidTestCase; public class ZoomManagerTest extends AndroidTestCase { private ZoomManager zoomManager; @Override public void setUp() { WebView webView = new WebView(this.getContext()); CallbackProxy callbackProxy = new CallbackProxy(this.getContext(), webView); zoomManager = new ZoomManager(webView, callbackProxy); zoomManager.init(1.00f); } public void testInit() { testInit(0.01f); testInit(1.00f); testInit(1.25f); } private void testInit(float density) { zoomManager.init(density); actualScaleTest(density); defaultScaleTest(density); assertEquals(zoomManager.getDefaultMaxZoomScale(), zoomManager.getMaxZoomScale()); assertEquals(zoomManager.getDefaultMinZoomScale(), zoomManager.getMinZoomScale()); assertEquals(density, zoomManager.getTextWrapScale()); } public void testUpdateDefaultZoomDensity() { // test the basic case where the actual values are equal to the defaults testUpdateDefaultZoomDensity(0.01f); testUpdateDefaultZoomDensity(1.00f); testUpdateDefaultZoomDensity(1.25f); } private void testUpdateDefaultZoomDensity(float density) { zoomManager.updateDefaultZoomDensity(density); defaultScaleTest(density); } public void testUpdateDefaultZoomDensityWithSmallMinZoom() { // test the case where the minZoomScale has changed to be < the default float newDefaultScale = 1.50f; float minZoomScale = ZoomManager.DEFAULT_MIN_ZOOM_SCALE_FACTOR * newDefaultScale; WebViewCore.ViewState minViewState = new WebViewCore.ViewState(); minViewState.mMinScale = minZoomScale - 0.1f; zoomManager.updateZoomRange(minViewState, 0, 0); zoomManager.updateDefaultZoomDensity(newDefaultScale); defaultScaleTest(newDefaultScale); } public void testUpdateDefaultZoomDensityWithLargeMinZoom() { // test the case where the minZoomScale has changed to be > the default float newDefaultScale = 1.50f; float minZoomScale = ZoomManager.DEFAULT_MIN_ZOOM_SCALE_FACTOR * newDefaultScale; WebViewCore.ViewState minViewState = new WebViewCore.ViewState(); minViewState.mMinScale = minZoomScale + 0.1f; zoomManager.updateZoomRange(minViewState, 0, 0); zoomManager.updateDefaultZoomDensity(newDefaultScale); defaultScaleTest(newDefaultScale); } public void testUpdateDefaultZoomDensityWithSmallMaxZoom() { // test the case where the maxZoomScale has changed to be < the default float newDefaultScale = 1.50f; float maxZoomScale = ZoomManager.DEFAULT_MAX_ZOOM_SCALE_FACTOR * newDefaultScale; WebViewCore.ViewState maxViewState = new WebViewCore.ViewState(); maxViewState.mMaxScale = maxZoomScale - 0.1f; zoomManager.updateZoomRange(maxViewState, 0, 0); zoomManager.updateDefaultZoomDensity(newDefaultScale); defaultScaleTest(newDefaultScale); } public void testUpdateDefaultZoomDensityWithLargeMaxZoom() { // test the case where the maxZoomScale has changed to be > the default float newDefaultScale = 1.50f; float maxZoomScale = ZoomManager.DEFAULT_MAX_ZOOM_SCALE_FACTOR * newDefaultScale; WebViewCore.ViewState maxViewState = new WebViewCore.ViewState(); maxViewState.mMaxScale = maxZoomScale + 0.1f; zoomManager.updateZoomRange(maxViewState, 0, 0); zoomManager.updateDefaultZoomDensity(newDefaultScale); defaultScaleTest(newDefaultScale); } public void testComputeScaleWithLimits() { final float maxScale = zoomManager.getMaxZoomScale(); final float minScale = zoomManager.getMinZoomScale(); assertTrue(maxScale > minScale); assertEquals(maxScale, zoomManager.computeScaleWithLimits(maxScale)); assertEquals(maxScale, zoomManager.computeScaleWithLimits(maxScale + .01f)); assertEquals(minScale, zoomManager.computeScaleWithLimits(minScale)); assertEquals(minScale, zoomManager.computeScaleWithLimits(minScale - .01f)); } private void actualScaleTest(float actualScale) { assertEquals(actualScale, zoomManager.getScale()); assertEquals(1 / actualScale, zoomManager.getInvScale()); } private void defaultScaleTest(float defaultScale) { final float maxDefault = ZoomManager.DEFAULT_MAX_ZOOM_SCALE_FACTOR * defaultScale; final float minDefault = ZoomManager.DEFAULT_MIN_ZOOM_SCALE_FACTOR * defaultScale; assertEquals(defaultScale, zoomManager.getDefaultScale()); assertEquals(1 / defaultScale, zoomManager.getInvDefaultScale()); assertEquals(maxDefault, zoomManager.getDefaultMaxZoomScale()); assertEquals(minDefault, zoomManager.getDefaultMinZoomScale()); } }