diff --git a/api/current.txt b/api/current.txt index 2204fbb86fef6..d3a8813303d15 100644 --- a/api/current.txt +++ b/api/current.txt @@ -36700,6 +36700,7 @@ package android.webkit { method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); method public void stopLoading(); + method public boolean zoomBy(float); method public boolean zoomIn(); method public boolean zoomOut(); field public static final java.lang.String SCHEME_GEO = "geo:0,0?q="; diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index adf480334277c..9cf3e4f1eb1ac 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -1944,6 +1944,23 @@ public class WebView extends AbsoluteLayout return mProvider.canZoomOut(); } + /** + * Performs a zoom operation in this WebView. + * + * @param zoomFactor the zoom factor to apply. The zoom factor will be clamped to the Webview's + * zoom limits. This value must be in the range 0.01 to 100.0 inclusive. + * + * @return false if no zoom changes, true otherwise. + */ + public boolean zoomBy(float zoomFactor) { + checkThread(); + if (zoomFactor < 0.01) + throw new IllegalArgumentException("zoomFactor must be greater than 0.01."); + if (zoomFactor > 100.0) + throw new IllegalArgumentException("zoomFactor must be less than 100."); + return mProvider.zoomBy(zoomFactor); + } + /** * Performs zoom in in this WebView. * diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java index b6fd363da6769..13cd2bdd49692 100644 --- a/core/java/android/webkit/WebViewProvider.java +++ b/core/java/android/webkit/WebViewProvider.java @@ -238,6 +238,8 @@ public interface WebViewProvider { public boolean canZoomOut(); + public boolean zoomBy(float zoomFactor); + public boolean zoomIn(); public boolean zoomOut();