diff options
author | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-02 16:53:36 +0000 |
---|---|---|
committer | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-02 16:53:36 +0000 |
commit | d4acfb05ad6156c49bff0993b69359b679a5fbe0 (patch) | |
tree | 4497d9980463091e98804f055d5d50430eaf6e12 /android_webview | |
parent | db33aec00846177eec17c5dc5788089c2bc61da6 (diff) | |
download | chromium_src-d4acfb05ad6156c49bff0993b69359b679a5fbe0.zip chromium_src-d4acfb05ad6156c49bff0993b69359b679a5fbe0.tar.gz chromium_src-d4acfb05ad6156c49bff0993b69359b679a5fbe0.tar.bz2 |
[android_webview] Add a zoomBy method to AwContents.
BUG=390921, 175854
TEST=AndroidWebViewTest
Review URL: https://codereview.chromium.org/368023002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@281052 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
3 files changed, 40 insertions, 12 deletions
diff --git a/android_webview/java/src/org/chromium/android_webview/AwContents.java b/android_webview/java/src/org/chromium/android_webview/AwContents.java index 40e4d78..ea2244d 100644 --- a/android_webview/java/src/org/chromium/android_webview/AwContents.java +++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java @@ -1602,7 +1602,7 @@ public class AwContents { if (!canZoomIn()) { return false; } - return mContentViewCore.pinchByDelta(1.25f); + return zoomBy(1.25f); } /** @@ -1614,7 +1614,19 @@ public class AwContents { if (!canZoomOut()) { return false; } - return mContentViewCore.pinchByDelta(0.8f); + return zoomBy(0.8f); + } + + /** + * @see android.webkit.WebView#zoomBy() + */ + // This method uses the term 'zoom' for legacy reasons, but relates + // to what chrome calls the 'page scale factor'. + public boolean zoomBy(float delta) { + if (delta < 0.01f || delta > 100.0f) { + throw new IllegalStateException("zoom delta value outside [0.01, 100] range."); + } + return mContentViewCore.pinchByDelta(delta); } /** @@ -2061,9 +2073,6 @@ public class AwContents { if (mPageScaleFactor != pageScaleFactor) { float oldPageScaleFactor = mPageScaleFactor; mPageScaleFactor = pageScaleFactor; - // NOTE: if this ever needs to become synchronous then we need to make sure the scroll - // bounds are correctly updated before calling the method, otherwise embedder code that - // attempts to scroll on scale change might cause weird results. mContentsClient.getCallbackHelper().postOnScaleChangedScaled( (float)(oldPageScaleFactor * mDIPScale), (float)(mPageScaleFactor * mDIPScale)); diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java index b634fef..fc0a855 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java @@ -4,9 +4,10 @@ package org.chromium.android_webview.test; +import android.test.suitebuilder.annotation.SmallTest; + import org.chromium.android_webview.AwContents; import org.chromium.android_webview.test.util.CommonResources; -import org.chromium.base.test.util.DisabledTest; import org.chromium.content.browser.ContentViewCore; /** @@ -30,11 +31,7 @@ public class AwContentsClientOnScaleChangedTest extends AwTestBase { super.tearDown(); } - /* @SmallTest - This test is timing out on ICS bots including cq. See crbug.com/175854. - */ - @DisabledTest public void testScaleUp() throws Throwable { getAwSettingsOnUiThread(mAwContents).setUseWideViewPort(true); loadDataSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java index 40e88ba..b561a13 100644 --- a/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java +++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java @@ -24,6 +24,7 @@ import java.util.concurrent.Callable; public class AwZoomTest extends AwTestBase { private TestAwContentsClient mContentsClient; private AwContents mAwContents; + private float MAXIMUM_SCALE = 2.0f; @Override public void setUp() throws Exception { @@ -37,11 +38,11 @@ public class AwZoomTest extends AwTestBase { private String getZoomableHtml(float scale) { final int divWidthPercent = (int)(100.0f / scale); return String.format(Locale.US, "<html><head><meta name=\"viewport\" content=\"" + - "width=device-width, minimum-scale=%f, maximum-scale=2.0, initial-scale=%f" + + "width=device-width, minimum-scale=%f, maximum-scale=%f, initial-scale=%f" + "\"/></head><body style='margin:0'>" + "<div style='width:%d%%;height:100px;border:1px solid black'>Zoomable</div>" + "</body></html>", - scale, scale, divWidthPercent); + scale, MAXIMUM_SCALE, scale, divWidthPercent); } private String getNonZoomableHtml() { @@ -114,6 +115,18 @@ public class AwZoomTest extends AwTestBase { waitForScaleChange(previousScale); } + private void zoomByOnUiThreadAndWait(final float delta) throws Throwable { + final float previousScale = getPixelScaleOnUiThread(mAwContents); + assertTrue(runTestOnUiThreadAndGetResult(new Callable<Boolean>() { + @Override + public Boolean call() throws Exception { + return mAwContents.zoomBy(delta); + } + })); + // The zoom level is updated asynchronously. + waitForScaleChange(previousScale); + } + private void waitForScaleChange(final float previousScale) throws Throwable { poll(new Callable<Boolean>() { @Override @@ -161,6 +174,15 @@ public class AwZoomTest extends AwTestBase { zoomOutOnUiThreadAndWait(); } assertTrue("Should be able to zoom in", canZoomInOnUiThread(mAwContents)); + + zoomByOnUiThreadAndWait(4.0f); + waitForScaleToBecome(MAXIMUM_SCALE); + + zoomByOnUiThreadAndWait(0.5f); + waitForScaleToBecome(MAXIMUM_SCALE * 0.5f); + + zoomByOnUiThreadAndWait(0.01f); + waitForScaleToBecome(pageMinimumScale); } @SmallTest |