summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-21 14:20:07 +0000
committermkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-21 14:20:07 +0000
commit61850458d6ffefc848213e4db74aecc1257b6373 (patch)
treec2b39cca5bda8b84a507e02e1f79c1ff58dab812
parent4ff66b98ca4947747e58f8a2b1b8bdfcbd0ce46a (diff)
downloadchromium_src-61850458d6ffefc848213e4db74aecc1257b6373.zip
chromium_src-61850458d6ffefc848213e4db74aecc1257b6373.tar.gz
chromium_src-61850458d6ffefc848213e4db74aecc1257b6373.tar.bz2
Merge 281052 "[android_webview] Add a zoomBy method to AwContents."
> [android_webview] Add a zoomBy method to AwContents. > > BUG=390921, 175854 > TEST=AndroidWebViewTest > > Review URL: https://codereview.chromium.org/368023002 TBR=mkosiba@chromium.org Review URL: https://codereview.chromium.org/404123002 git-svn-id: svn://svn.chromium.org/chrome/branches/1985/src@284425 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--android_webview/java/src/org/chromium/android_webview/AwContents.java19
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientOnScaleChangedTest.java7
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java26
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 5b0a427..46338b6 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwContents.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwContents.java
@@ -1476,7 +1476,7 @@ public class AwContents {
if (!canZoomIn()) {
return false;
}
- return mContentViewCore.pinchByDelta(1.25f);
+ return zoomBy(1.25f);
}
/**
@@ -1488,7 +1488,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);
}
/**
@@ -1983,9 +1995,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