summaryrefslogtreecommitdiffstats
path: root/android_webview
diff options
context:
space:
mode:
authormkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-17 16:08:46 +0000
committermkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-17 16:08:46 +0000
commit5264ca43588d5f415a23492105eb698823062b02 (patch)
tree69493ed3148784fe559b835e26309f785bfb3917 /android_webview
parentbdcc9707e0645cd3c1ed8659a821916a553c4bc2 (diff)
downloadchromium_src-5264ca43588d5f415a23492105eb698823062b02.zip
chromium_src-5264ca43588d5f415a23492105eb698823062b02.tar.gz
chromium_src-5264ca43588d5f415a23492105eb698823062b02.tar.bz2
[android_webivew] Refactor polling checks in test code.
There really is no good reason to poll for something and not fail in a test (otherwise we're just adding a sleep). I refactored our test code to use new AwTestBase methods. BUG=None TEST=AndroidWebViewTests // java-only change, trybots happy NOTRY=true Review URL: https://codereview.chromium.org/131743020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@245525 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview')
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java52
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java21
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java24
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java14
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java66
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java94
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java33
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java25
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/AwZoomTest.java86
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java45
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/GeolocationTest.java51
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java15
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java15
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java8
-rw-r--r--android_webview/javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java81
15 files changed, 268 insertions, 362 deletions
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
index 8df51eb..0634f59 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidScrollIntegrationTest.java
@@ -15,8 +15,6 @@ import org.chromium.android_webview.test.util.JavascriptEventObserver;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.test.util.CallbackHelper;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.ui.gfx.DeviceDisplayInfo;
import java.util.concurrent.Callable;
@@ -193,43 +191,31 @@ public class AndroidScrollIntegrationTest extends AwTestBase {
private void assertScrollInJs(final AwContents awContents,
final TestAwContentsClient contentsClient,
final int xCss, final int yCss) throws Exception {
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- String x = executeJavaScriptAndWaitForResult(awContents, contentsClient,
- "window.scrollX");
- String y = executeJavaScriptAndWaitForResult(awContents, contentsClient,
- "window.scrollY");
- return (Integer.toString(xCss).equals(x) &&
- Integer.toString(yCss).equals(y));
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to get window.scroll(X/Y): " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ String x = executeJavaScriptAndWaitForResult(awContents, contentsClient,
+ "window.scrollX");
+ String y = executeJavaScriptAndWaitForResult(awContents, contentsClient,
+ "window.scrollY");
+ return (Integer.toString(xCss).equals(x) &&
+ Integer.toString(yCss).equals(y));
+ }
+ });
}
private void assertScrolledToBottomInJs(final AwContents awContents,
final TestAwContentsClient contentsClient) throws Exception {
final String isBottomScript = "window.scrollY == " +
"(window.document.documentElement.scrollHeight - window.innerHeight)";
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- String r = executeJavaScriptAndWaitForResult(awContents, contentsClient,
- isBottomScript);
- return r.equals("true");
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to get window.scroll(X/Y): " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ String r = executeJavaScriptAndWaitForResult(awContents, contentsClient,
+ isBottomScript);
+ return r.equals("true");
+ }
+ });
}
private void loadTestPageAndWaitForFirstFrame(final ScrollTestContainerView testContainerView,
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
index 6bd5df1..c09c41e 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsClientShouldOverrideUrlLoadingTest.java
@@ -13,14 +13,13 @@ import org.chromium.android_webview.test.util.JSUtils;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.LoadUrlParams;
import org.chromium.content.browser.test.util.CallbackHelper;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnPageStartedHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
import org.chromium.net.test.util.TestWebServer;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
/**
@@ -615,12 +614,12 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
clickOnLinkUsingJs(awContents, contentsClient);
// Wait for the target URL to be fetched from the server.
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mWebServer.getRequestCount(REDIRECT_TARGET_PATH) == 1;
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
// Since the targetURL was loaded from the test server it means all processing related
// to dispatching a shouldOverrideUrlLoading callback had finished and checking the call
@@ -655,12 +654,12 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
shouldOverrideUrlLoadingHelper.waitForCallback(shouldOverrideUrlLoadingCallCount);
// Wait for the target URL to be fetched from the server.
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mWebServer.getRequestCount(REDIRECT_TARGET_PATH) == 1;
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
assertEquals(redirectTargetUrl,
shouldOverrideUrlLoadingHelper.getShouldOverrideUrlLoadingUrl());
@@ -690,12 +689,12 @@ public class AwContentsClientShouldOverrideUrlLoadingTest extends AwTestBase {
loadUrlSync(awContents, contentsClient.getOnPageFinishedHelper(), pageWithIframeUrl);
// Wait for the redirect target URL to be fetched from the server.
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mWebServer.getRequestCount(REDIRECT_TARGET_PATH) == 1;
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
assertEquals(shouldOverrideUrlLoadingCallCount,
shouldOverrideUrlLoadingHelper.getCallCount());
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java
index f211d75..a5fd0a9 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsRenderTest.java
@@ -11,8 +11,6 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.android_webview.AwContents;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.Feature;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import java.util.concurrent.Callable;
@@ -48,7 +46,7 @@ public class AwContentsRenderTest extends AwTestBase {
return result;
}
- int sampleBackgroundColorOnUiThread() throws Throwable {
+ int sampleBackgroundColorOnUiThread() throws Exception {
return ThreadUtils.runOnUiThreadBlocking(new Callable<Integer>() {
@Override
public Integer call() throws Exception {
@@ -57,15 +55,11 @@ public class AwContentsRenderTest extends AwTestBase {
});
}
- boolean waitForBackgroundColor(final int c) throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
+ void pollForBackgroundColor(final int c) throws Throwable {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return sampleBackgroundColorOnUiThread() == c;
- } catch (Throwable e) {
- throw new RuntimeException(e);
- }
+ public Boolean call() throws Exception {
+ return sampleBackgroundColorOnUiThread() == c;
}
});
}
@@ -74,21 +68,21 @@ public class AwContentsRenderTest extends AwTestBase {
@Feature({"AndroidWebView"})
public void testSetGetBackgroundColor() throws Throwable {
setBackgroundColorOnUiThread(Color.MAGENTA);
- assertTrue(waitForBackgroundColor(Color.MAGENTA));
+ pollForBackgroundColor(Color.MAGENTA);
setBackgroundColorOnUiThread(Color.CYAN);
- assertTrue(waitForBackgroundColor(Color.CYAN));
+ pollForBackgroundColor(Color.CYAN);
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), "about:blank");
assertEquals(Color.CYAN, sampleBackgroundColorOnUiThread());
setBackgroundColorOnUiThread(Color.YELLOW);
- assertTrue(waitForBackgroundColor(Color.YELLOW));
+ pollForBackgroundColor(Color.YELLOW);
loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(),
"data:text/html,<html><head><style>body {background-color:#227788}</style></head>" +
"<body><br>HelloWorld</body></html>");
- assertTrue(waitForBackgroundColor(Color.rgb(0x22, 0x77, 0x88)));
+ pollForBackgroundColor(Color.rgb(0x22, 0x77, 0x88));
// Changing the base background should not override CSS background.
setBackgroundColorOnUiThread(Color.MAGENTA);
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java
index 9e4615d..70ab742 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java
@@ -34,7 +34,7 @@ import java.util.concurrent.atomic.AtomicInteger;
* AwContents tests.
*/
public class AwContentsTest extends AwTestBase {
- public static class OnDownloadStartHelper extends CallbackHelper {
+ private static class OnDownloadStartHelper extends CallbackHelper {
String mUrl;
String mUserAgent;
String mContentDisposition;
@@ -163,12 +163,12 @@ public class AwContentsTest extends AwTestBase {
System.gc();
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
return AwContents.getNativeInstanceCount() <= MAX_IDLE_INSTANCES;
}
- }));
+ });
for (int i = 0; i < REPETITIONS; ++i) {
for (int j = 0; j < CONCURRENT_INSTANCES; ++j) {
AwTestContainerView view = createAwTestContainerViewOnMainSync(mContentsClient);
@@ -186,12 +186,12 @@ public class AwContentsTest extends AwTestBase {
System.gc();
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
return AwContents.getNativeInstanceCount() <= MAX_IDLE_INSTANCES;
}
- }));
+ });
}
private int callDocumentHasImagesSync(final AwContents awContents)
@@ -334,13 +334,13 @@ public class AwContentsTest extends AwTestBase {
getAwSettingsOnUiThread(awContents).setImagesEnabled(true);
loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
return awContents.getFavicon() != null &&
!awContents.getFavicon().sameAs(defaultFavicon);
}
- }));
+ });
final Object originalFaviconSource = (new URL(faviconUrl)).getContent();
final Bitmap originalFavicon =
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java
index 9e7610c..8ea8630 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwQuotaManagerBridgeTest.java
@@ -14,13 +14,15 @@ import org.chromium.android_webview.AwSettings;
import org.chromium.android_webview.test.util.AwQuotaManagerBridgeTestUtil;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.test.util.CallbackHelper;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.net.test.util.TestWebServer;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.Callable;
+/**
+ * Tests for the AwQuotaManagerBridge.
+ */
public class AwQuotaManagerBridgeTest extends AwTestBase {
private TestAwContentsClient mContentsClient;
private AwTestContainerView mTestView;
@@ -164,28 +166,20 @@ public class AwQuotaManagerBridgeTest extends AwTestBase {
final long initialUsage = getUsageForOrigin(mOrigin);
useAppCache();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return getUsageForOrigin(mOrigin) > initialUsage;
- } catch (Exception e) {
- return false;
- }
+ public Boolean call() throws Exception {
+ return getUsageForOrigin(mOrigin) > initialUsage;
}
- }));
+ });
deleteAllData();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return getUsageForOrigin(mOrigin) == 0;
- } catch (Exception e) {
- return false;
- }
+ public Boolean call() throws Exception {
+ return getUsageForOrigin(mOrigin) == 0;
}
- }));
+ });
}
@LargeTest
@@ -194,28 +188,20 @@ public class AwQuotaManagerBridgeTest extends AwTestBase {
final long initialUsage = getUsageForOrigin(mOrigin);
useAppCache();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return getUsageForOrigin(mOrigin) > initialUsage;
- } catch (Exception e) {
- return false;
- }
+ public Boolean call() throws Exception {
+ return getUsageForOrigin(mOrigin) > initialUsage;
}
- }));
+ });
deleteOrigin(mOrigin);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return getUsageForOrigin(mOrigin) == 0;
- } catch (Exception e) {
- return false;
- }
+ public Boolean call() throws Exception {
+ return getUsageForOrigin(mOrigin) == 0;
}
- }));
+ });
}
@LargeTest
@@ -223,15 +209,11 @@ public class AwQuotaManagerBridgeTest extends AwTestBase {
public void testGetResultsMatch() throws Exception {
useAppCache();
- CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return AwQuotaManagerBridgeTestUtil.getOrigins(
- AwQuotaManagerBridgeTest.this).mOrigins.length > 0;
- } catch (Exception e) {
- return false;
- }
+ public Boolean call() throws Exception {
+ return AwQuotaManagerBridgeTestUtil.getOrigins(
+ AwQuotaManagerBridgeTest.this).mOrigins.length > 0;
}
});
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
index f7f81ff..d8a161a 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwSettingsTest.java
@@ -31,13 +31,12 @@ import org.chromium.base.test.util.TestFileUtil;
import org.chromium.base.test.util.UrlUtils;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.test.util.CallbackHelper;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.HistoryUtils;
import org.chromium.net.test.util.TestWebServer;
import org.chromium.ui.gfx.DeviceDisplayInfo;
import java.io.File;
+import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -99,7 +98,7 @@ public class AwSettingsTest extends AwTestBase {
protected abstract void doEnsureSettingHasValue(T value) throws Throwable;
- protected String getTitleOnUiThread() throws Throwable {
+ protected String getTitleOnUiThread() throws Exception {
return AwSettingsTest.this.getTitleOnUiThread(mAwContents);
}
@@ -127,7 +126,7 @@ public class AwSettingsTest extends AwTestBase {
url);
}
- protected String executeJavaScriptAndWaitForResult(String script) throws Throwable {
+ protected String executeJavaScriptAndWaitForResult(String script) throws Exception {
return AwSettingsTest.this.executeJavaScriptAndWaitForResult(
mAwContents, mContentViewClient, script);
}
@@ -926,20 +925,14 @@ public class AwSettingsTest extends AwTestBase {
executeJavaScriptAndWaitForResult("setTitleToActualFontSize()");
} else {
final float oldFontSize = mOldFontSize;
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- executeJavaScriptAndWaitForResult("setTitleToActualFontSize()");
- float newFontSize = Float.parseFloat(getTitleOnUiThread());
- return newFontSize != oldFontSize;
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to getTitleOnUiThread: " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ executeJavaScriptAndWaitForResult("setTitleToActualFontSize()");
+ float newFontSize = Float.parseFloat(getTitleOnUiThread());
+ return newFontSize != oldFontSize;
+ }
+ });
mNeedToWaitForFontSizeChange = false;
}
return Float.parseFloat(getTitleOnUiThread());
@@ -1147,20 +1140,14 @@ public class AwSettingsTest extends AwTestBase {
protected void doEnsureSettingHasValue(Boolean value) throws Throwable {
loadDataSync(getData());
final boolean expectPopupEnabled = value;
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- String title = getTitleOnUiThread();
- return expectPopupEnabled ? POPUP_ENABLED.equals(title) :
- POPUP_BLOCKED.equals(title);
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to getTitleOnUiThread: " + t.toString());
- return false;
- }
+ public Boolean call() throws Exception {
+ String title = getTitleOnUiThread();
+ return expectPopupEnabled ? POPUP_ENABLED.equals(title) :
+ POPUP_BLOCKED.equals(title);
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
assertEquals(value ? POPUP_ENABLED : POPUP_BLOCKED, getTitleOnUiThread());
}
@@ -1443,19 +1430,13 @@ public class AwSettingsTest extends AwTestBase {
assertEquals(ImagePageGenerator.IMAGE_NOT_LOADED_STRING,
getTitleOnUiThread(awContents));
settings.setLoadsImagesAutomatically(true);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return !ImagePageGenerator.IMAGE_NOT_LOADED_STRING.equals(
- getTitleOnUiThread(awContents));
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to getTitleOnUiThread: " + t.toString());
- return false;
- }
+ public Boolean call() throws Exception {
+ return !ImagePageGenerator.IMAGE_NOT_LOADED_STRING.equals(
+ getTitleOnUiThread(awContents));
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
assertEquals(ImagePageGenerator.IMAGE_LOADED_STRING, getTitleOnUiThread(awContents));
}
@@ -1825,19 +1806,13 @@ public class AwSettingsTest extends AwTestBase {
getTitleOnUiThread(awContents));
settings.setImagesEnabled(true);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- return ImagePageGenerator.IMAGE_LOADED_STRING.equals(
- getTitleOnUiThread(awContents));
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to getTitleOnUIThread: " + t.toString());
- return false;
- }
+ public Boolean call() throws Exception {
+ return ImagePageGenerator.IMAGE_LOADED_STRING.equals(
+ getTitleOnUiThread(awContents));
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
} finally {
if (webServer != null) webServer.shutdown();
}
@@ -1919,7 +1894,7 @@ public class AwSettingsTest extends AwTestBase {
}
}
- public static class AudioEvent {
+ private static class AudioEvent {
private CallbackHelper mCallback;
public AudioEvent(CallbackHelper callback) {
mCallback = callback;
@@ -2237,23 +2212,22 @@ public class AwSettingsTest extends AwTestBase {
return mManifestPath;
}
- int waitUntilHtmlIsRequested(final int initialRequestCount) throws InterruptedException {
+ int waitUntilHtmlIsRequested(final int initialRequestCount) throws Exception {
return waitUntilResourceIsRequested(mHtmlPath, initialRequestCount);
}
- int waitUntilManifestIsRequested(final int initialRequestCount)
- throws InterruptedException {
+ int waitUntilManifestIsRequested(final int initialRequestCount) throws Exception {
return waitUntilResourceIsRequested(mManifestPath, initialRequestCount);
}
private int waitUntilResourceIsRequested(
- final String path, final int initialRequestCount) throws InterruptedException {
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ final String path, final int initialRequestCount) throws Exception {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mWebServer.getRequestCount(path) > initialRequestCount;
}
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ });
return mWebServer.getRequestCount(path);
}
}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java
index dba2b7b..77613f4 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwTestBase.java
@@ -7,6 +7,7 @@ package org.chromium.android_webview.test;
import android.app.Instrumentation;
import android.content.Context;
import android.test.ActivityInstrumentationTestCase2;
+import android.util.Log;
import static org.chromium.base.test.util.ScalableTimeout.ScaleTimeout;
@@ -36,6 +37,7 @@ public class AwTestBase
extends ActivityInstrumentationTestCase2<AwTestRunnerActivity> {
protected static final long WAIT_TIMEOUT_MS = ScaleTimeout(15000);
protected static final int CHECK_INTERVAL = 100;
+ private static final String TAG = "AwTestBase";
public AwTestBase() {
super(AwTestRunnerActivity.class);
@@ -215,7 +217,7 @@ public class AwTestBase
* Reloads the current page synchronously.
*/
protected void reloadSync(final AwContents awContents,
- CallbackHelper onPageFinishedHelper) throws Throwable {
+ CallbackHelper onPageFinishedHelper) throws Exception {
int currentCallCount = onPageFinishedHelper.getCallCount();
getInstrumentation().runOnMainSync(new Runnable() {
@Override
@@ -357,19 +359,32 @@ public class AwTestBase
}
/**
- * Similar to CriteriaHelper.pollForCriteria but runs the callable on the UI thread.
- * Note that exceptions are treated as failure.
+ * Wrapper around CriteriaHelper.pollForCriteria. This uses AwTestBase-specifc timeouts and
+ * treats timeouts and exceptions as test failures automatically.
*/
- protected boolean pollOnUiThread(final Callable<Boolean> callable) throws Exception {
- return CriteriaHelper.pollForCriteria(new Criteria() {
+ protected static void poll(final Callable<Boolean> callable) throws Exception {
+ assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
@Override
public boolean isSatisfied() {
try {
- return runTestOnUiThreadAndGetResult(callable);
+ return callable.call();
} catch (Throwable e) {
+ Log.e(TAG, "Exception while polling.", e);
return false;
}
}
+ }, WAIT_TIMEOUT_MS, CHECK_INTERVAL));
+ }
+
+ /**
+ * Wrapper around {@link AwTestBase#poll()} but runs the callable on the UI thread.
+ */
+ protected void pollOnUiThread(final Callable<Boolean> callable) throws Exception {
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return runTestOnUiThreadAndGetResult(callable);
+ }
});
}
@@ -403,7 +418,7 @@ public class AwTestBase
/**
* Returns page scale multiplied by the screen density.
*/
- protected float getPixelScaleOnUiThread(final AwContents awContents) throws Throwable {
+ protected float getPixelScaleOnUiThread(final AwContents awContents) throws Exception {
return runTestOnUiThreadAndGetResult(new Callable<Float>() {
@Override
public Float call() throws Exception {
@@ -415,7 +430,7 @@ public class AwTestBase
/**
* Returns whether a user can zoom the page in.
*/
- protected boolean canZoomInOnUiThread(final AwContents awContents) throws Throwable {
+ protected boolean canZoomInOnUiThread(final AwContents awContents) throws Exception {
return runTestOnUiThreadAndGetResult(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
@@ -427,7 +442,7 @@ public class AwTestBase
/**
* Returns whether a user can zoom the page out.
*/
- protected boolean canZoomOutOnUiThread(final AwContents awContents) throws Throwable {
+ protected boolean canZoomOutOnUiThread(final AwContents awContents) throws Exception {
return runTestOnUiThreadAndGetResult(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java
index 416d347..19d93c6 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AwViewportTest.java
@@ -10,11 +10,10 @@ import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwSettings;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.test.util.CallbackHelper;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.ui.gfx.DeviceDisplayInfo;
import java.util.Locale;
+import java.util.concurrent.Callable;
/**
* Tests for usage and quirks of viewport related methods.
@@ -259,7 +258,7 @@ public class AwViewportTest extends AwTestBase {
// flaky. So instead, we are just polling the scale until it becomes 1.0.
settings.setInitialPageScale(50);
loadDataSync(awContents, onPageFinishedHelper, page, "text/html", false);
- assertTrue(waitUntilScaleBecomes(1.0f, awContents));
+ ensureScaleBecomes(1.0f, awContents);
}
@MediumTest
@@ -297,19 +296,13 @@ public class AwViewportTest extends AwTestBase {
assertEquals(1.0f, getScaleOnUiThread(awContents));
}
- private boolean waitUntilScaleBecomes(final float targetScale, final AwContents awContents)
+ private void ensureScaleBecomes(final float targetScale, final AwContents awContents)
throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- return targetScale == getScaleOnUiThread(awContents);
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to getScaleOnUiThread: " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL);
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return targetScale == getScaleOnUiThread(awContents);
+ }
+ });
}
}
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 6155461..afcf127 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
@@ -14,8 +14,6 @@ import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwSettings;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.Feature;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import java.util.concurrent.Callable;
@@ -87,76 +85,56 @@ public class AwZoomTest extends AwTestBase {
});
}
- private boolean zoomInOnUiThreadAndWait() throws Throwable {
+ private void zoomInOnUiThreadAndWait() throws Throwable {
final float previousScale = getPixelScaleOnUiThread(mAwContents);
- if (!runTestOnUiThreadAndGetResult(new Callable<Boolean>() {
+ assertTrue(runTestOnUiThreadAndGetResult(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return mAwContents.zoomIn();
}
- }))
- return false;
+ }));
// The zoom level is updated asynchronously.
- return waitForScaleChange(previousScale);
+ waitForScaleChange(previousScale);
}
- private boolean zoomOutOnUiThreadAndWait() throws Throwable {
+ private void zoomOutOnUiThreadAndWait() throws Throwable {
final float previousScale = getPixelScaleOnUiThread(mAwContents);
- if (!runTestOnUiThreadAndGetResult(new Callable<Boolean>() {
+ assertTrue(runTestOnUiThreadAndGetResult(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return mAwContents.zoomOut();
}
- }))
- return false;
+ }));
// The zoom level is updated asynchronously.
- return waitForScaleChange(previousScale);
+ waitForScaleChange(previousScale);
}
- private boolean waitForScaleChange(final float previousScale) throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- return previousScale != getPixelScaleOnUiThread(mAwContents);
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to getPixelScaleOnUiThread: " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL);
+ private void waitForScaleChange(final float previousScale) throws Throwable {
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return previousScale != getPixelScaleOnUiThread(mAwContents);
+ }
+ });
}
- private boolean waitUntilCanZoomIn() throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- return canZoomInOnUiThread(mAwContents);
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to query canZoomIn: " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL);
+ private void waitUntilCanZoomIn() throws Throwable {
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return canZoomInOnUiThread(mAwContents);
+ }
+ });
}
- private boolean waitUntilCanNotZoom() throws Throwable {
- return CriteriaHelper.pollForCriteria(new Criteria() {
- @Override
- public boolean isSatisfied() {
- try {
- return !canZoomInOnUiThread(mAwContents) &&
- !canZoomOutOnUiThread(mAwContents);
- } catch (Throwable t) {
- t.printStackTrace();
- fail("Failed to query canZoomIn/Out: " + t.toString());
- return false;
- }
- }
- }, WAIT_TIMEOUT_MS, CHECK_INTERVAL);
+ private void waitUntilCanNotZoom() throws Throwable {
+ poll(new Callable<Boolean>() {
+ @Override
+ public Boolean call() throws Exception {
+ return !canZoomInOnUiThread(mAwContents) &&
+ !canZoomOutOnUiThread(mAwContents);
+ }
+ });
}
private void runMagnificationTest() throws Throwable {
@@ -169,12 +147,12 @@ public class AwZoomTest extends AwTestBase {
assertFalse("Should not be able to zoom out", canZoomOutOnUiThread(mAwContents));
while (canZoomInOnUiThread(mAwContents)) {
- assertTrue(zoomInOnUiThreadAndWait());
+ zoomInOnUiThreadAndWait();
}
assertTrue("Should be able to zoom out", canZoomOutOnUiThread(mAwContents));
while (canZoomOutOnUiThread(mAwContents)) {
- assertTrue(zoomOutOnUiThreadAndWait());
+ zoomOutOnUiThreadAndWait();
}
assertTrue("Should be able to zoom in", canZoomInOnUiThread(mAwContents));
}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java
index ea09999..18cde68 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/CookieManagerTest.java
@@ -13,8 +13,6 @@ import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwCookieManager;
import org.chromium.android_webview.test.util.JSUtils;
import org.chromium.base.test.util.Feature;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.net.test.util.TestWebServer;
import java.util.ArrayList;
@@ -23,6 +21,7 @@ import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import java.util.concurrent.Callable;
/**
* Tests for the CookieManager.
@@ -122,13 +121,13 @@ public class CookieManagerTest extends AwTestBase {
"; expires=' + expirationDate.toUTCString();");
}
- private void waitForCookie(final String url) throws InterruptedException {
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ private void waitForCookie(final String url) throws Exception {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mCookieManager.getCookie(url) != null;
}
- }));
+ });
}
private void validateCookies(String responseCookie, String... expectedCookieNames) {
@@ -143,7 +142,7 @@ public class CookieManagerTest extends AwTestBase {
@MediumTest
@Feature({"AndroidWebView", "Privacy"})
- public void testRemoveAllCookie() throws InterruptedException {
+ public void testRemoveAllCookie() throws Exception {
// enable cookie
mCookieManager.setAcceptCookie(true);
assertTrue(mCookieManager.acceptCookie());
@@ -158,27 +157,27 @@ public class CookieManagerTest extends AwTestBase {
mCookieManager.setCookie(url, cookie);
assertEquals(cookie, mCookieManager.getCookie(url));
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mCookieManager.hasCookies();
}
- }));
+ });
// clean up all cookies
mCookieManager.removeAllCookie();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return !mCookieManager.hasCookies();
}
- }));
+ });
}
@MediumTest
@Feature({"AndroidWebView", "Privacy"})
@SuppressWarnings("deprecation")
- public void testCookieExpiration() throws InterruptedException {
+ public void testCookieExpiration() throws Exception {
// enable cookie
mCookieManager.setAcceptCookie(true);
assertTrue(mCookieManager.acceptCookie());
@@ -209,30 +208,30 @@ public class CookieManagerTest extends AwTestBase {
assertTrue(allCookies.contains(cookie3));
mCookieManager.removeSessionCookie();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
String c = mCookieManager.getCookie(url);
return !c.contains(cookie1) && c.contains(cookie2) && c.contains(cookie3);
}
- }));
+ });
Thread.sleep(expiration + 1000); // wait for cookie to expire
mCookieManager.removeExpiredCookie();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
String c = mCookieManager.getCookie(url);
return !c.contains(cookie1) && c.contains(cookie2) && !c.contains(cookie3);
}
- }));
+ });
mCookieManager.removeAllCookie();
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mCookieManager.getCookie(url) == null;
}
- }));
+ });
}
}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/GeolocationTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/GeolocationTest.java
index fc97527..06d13b5 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/GeolocationTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/GeolocationTest.java
@@ -10,20 +10,16 @@ import android.webkit.GeolocationPermissions;
import org.chromium.android_webview.AwContents;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.LocationProviderFactory;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.MockLocationProvider;
+import java.util.concurrent.Callable;
+
/**
* Test suite for Geolocation in AwContents. Smoke tests for
* basic functionality, and tests to ensure the AwContents.onPause
* and onResume APIs affect Geolocation as expected.
*/
public class GeolocationTest extends AwTestBase {
-
- private static final long TEST_TIMEOUT_MS = 5000L;
- private static final int CHECK_INTERVAL_MS = 100;
-
private TestAwContentsClient mContentsClient;
private AwContents mAwContents;
private MockLocationProvider mMockLocationProvider;
@@ -97,12 +93,12 @@ public class GeolocationTest extends AwTestBase {
}
private void ensureGeolocationRunning(final boolean running) throws Exception {
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return mMockLocationProvider.isRunning() == running;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
+ });
}
@@ -117,20 +113,20 @@ public class GeolocationTest extends AwTestBase {
mAwContents.evaluateJavaScript("initiate_getCurrentPosition();", null);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return getPositionCountFromJS() == 1;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
+ });
mAwContents.evaluateJavaScript("initiate_getCurrentPosition();", null);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return getPositionCountFromJS() == 2;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
+ });
}
/**
@@ -144,12 +140,12 @@ public class GeolocationTest extends AwTestBase {
mAwContents.evaluateJavaScript("initiate_watchPosition();", null);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return getPositionCountFromJS() > 1;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
+ });
}
@MediumTest
@@ -161,12 +157,12 @@ public class GeolocationTest extends AwTestBase {
mAwContents.evaluateJavaScript("initiate_watchPosition();", null);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return getPositionCountFromJS() > 1;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
+ });
ensureGeolocationRunning(true);
@@ -195,12 +191,12 @@ public class GeolocationTest extends AwTestBase {
ensureGeolocationRunning(true);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return getPositionCountFromJS() > 1;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
+ });
}
@MediumTest
@@ -232,13 +228,12 @@ public class GeolocationTest extends AwTestBase {
ensureGeolocationRunning(true);
- assertTrue(CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
+ public Boolean call() throws Exception {
return getPositionCountFromJS() > 1;
}
- }, TEST_TIMEOUT_MS, CHECK_INTERVAL_MS));
-
+ });
}
@MediumTest
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java
index 1b75c12..4163d76 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/LoadDataWithBaseUrlTest.java
@@ -14,14 +14,13 @@ import org.chromium.base.test.util.DisabledTest;
import org.chromium.base.test.util.Feature;
import org.chromium.content.browser.ContentViewCore;
import org.chromium.content.browser.LoadUrlParams;
-import org.chromium.content.browser.test.util.Criteria;
-import org.chromium.content.browser.test.util.CriteriaHelper;
import org.chromium.content.browser.test.util.HistoryUtils;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
import org.chromium.net.test.util.TestWebServer;
import java.io.File;
import java.io.FileOutputStream;
+import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
/**
@@ -303,15 +302,11 @@ public class LoadDataWithBaseUrlTest extends AwTestBase {
loadDataWithBaseUrlSync(data, "text/html", false, baseUrl, null);
- CriteriaHelper.pollForCriteria(new Criteria() {
+ poll(new Callable<Boolean>() {
@Override
- public boolean isSatisfied() {
- try {
- String title = getTitleOnUiThread(mAwContents);
- return IMAGE_LOADED.equals(title) || IMAGE_NOT_LOADED.equals(title);
- } catch (Throwable t) {
- return false;
- }
+ public Boolean call() throws Exception {
+ String title = getTitleOnUiThread(mAwContents);
+ return IMAGE_LOADED.equals(title) || IMAGE_NOT_LOADED.equals(title);
}
});
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java
index a85c1d4..a50a151 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/NavigationHistoryTest.java
@@ -18,6 +18,9 @@ import org.chromium.net.test.util.TestWebServer;
import java.util.concurrent.Callable;
+/**
+ * Navigation history tests.
+ */
public class NavigationHistoryTest extends AwTestBase {
private static final String PAGE_1_PATH = "/page1.html";
@@ -281,34 +284,34 @@ public class NavigationHistoryTest extends AwTestBase {
getAwSettingsOnUiThread(mAwContents).setJavaScriptEnabled(true);
loadUrlSync(mAwContents, onPageFinishedHelper, loginPageUrl);
// Since the page performs an async action, we can't rely on callbacks.
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
String title = mAwContents.getContentViewCore().getTitle();
return LOGIN_RESPONSE_PAGE_TITLE.equals(title);
}
- }));
+ });
executeJavaScriptAndWaitForResult(mAwContents,
mContentsClient,
"link = document.getElementById('" + LOGIN_RESPONSE_PAGE_HELP_LINK_ID + "');" +
"link.click();");
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
String title = mAwContents.getContentViewCore().getTitle();
return PAGE_1_TITLE.equals(title);
}
- }));
+ });
// Verify that we can still go back to the login response page despite that
// it is non-cacheable.
HistoryUtils.goBackSync(getInstrumentation(), mAwContents.getContentViewCore(),
onPageFinishedHelper);
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
String title = mAwContents.getContentViewCore().getTitle();
return LOGIN_RESPONSE_PAGE_TITLE.equals(title);
}
- }));
+ });
}
}
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java
index 694a3df..b20dd07 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/SaveRestoreStateTest.java
@@ -16,6 +16,10 @@ import org.chromium.net.test.util.TestWebServer;
import java.util.concurrent.Callable;
+/**
+ * Tests for the {@link android.webkit.WebView#saveState} and
+ * {@link android.webkit.WebView#restoreState} APIs.
+ */
public class SaveRestoreStateTest extends AwTestBase {
private static class TestVars {
public final TestAwContentsClient contentsClient;
@@ -129,13 +133,13 @@ public class SaveRestoreStateTest extends AwTestBase {
public void testSaveRestoreStateWithTitle() throws Throwable {
setServerResponseAndLoad(mVars, 1);
final TestVars restoredVars = saveAndRestoreStateOnUiThread(mVars);
- assertTrue(pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
return TITLES[0].equals(restoredVars.contentViewCore.getTitle()) &&
TITLES[0].equals(restoredVars.contentsClient.getUpdatedTitle());
}
- }));
+ });
}
@SmallTest
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java
index 658f699..c91ed37 100644
--- a/android_webview/javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/WebKitHitTestTest.java
@@ -105,9 +105,9 @@ public class WebKitHitTestTest extends AwTestBase {
return a == null ? b == null : a.equals(b);
}
- private boolean pollForHitTestDataOnUiThread(
+ private void pollForHitTestDataOnUiThread(
final int expectedType, final String expectedExtra) throws Throwable {
- return pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
AwContents.HitTestData data = mAwContents.getLastHitTestResult();
@@ -117,11 +117,11 @@ public class WebKitHitTestTest extends AwTestBase {
});
}
- private boolean pollForHrefAndImageSrcOnUiThread(
+ private void pollForHrefAndImageSrcOnUiThread(
final String expectedHref,
final String expectedAnchorText,
final String expectedImageSrc) throws Throwable {
- boolean pollResult = pollOnUiThread(new Callable<Boolean>() {
+ pollOnUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
AwContents.HitTestData data = mAwContents.getLastHitTestResult();
@@ -141,21 +141,18 @@ public class WebKitHitTestTest extends AwTestBase {
mAwContents.requestImageRef(imageRefMsg);
}
});
- pollResult &= stringEquals(expectedHref, focusNodeHrefMsg.getData().getString("url"));
- pollResult &= stringEquals(expectedAnchorText,
- focusNodeHrefMsg.getData().getString("title"));
- pollResult &= stringEquals(expectedImageSrc, focusNodeHrefMsg.getData().getString("src"));
- pollResult &= stringEquals(expectedImageSrc, imageRefMsg.getData().getString("url"));
-
- return pollResult;
+ assertEquals(expectedHref, focusNodeHrefMsg.getData().getString("url"));
+ assertEquals(expectedAnchorText, focusNodeHrefMsg.getData().getString("title"));
+ assertEquals(expectedImageSrc, focusNodeHrefMsg.getData().getString("src"));
+ assertEquals(expectedImageSrc, imageRefMsg.getData().getString("url"));
}
private void srcAnchorTypeTestBody(boolean byTouch) throws Throwable {
String page = fullPageLink(HREF, ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(HitTestResult.SRC_ANCHOR_TYPE, HREF));
- assertTrue(pollForHrefAndImageSrcOnUiThread(HREF, ANCHOR_TEXT, null));
+ pollForHitTestDataOnUiThread(HitTestResult.SRC_ANCHOR_TYPE, HREF);
+ pollForHrefAndImageSrcOnUiThread(HREF, ANCHOR_TEXT, null);
}
@SmallTest
@@ -175,9 +172,8 @@ public class WebKitHitTestTest extends AwTestBase {
String page = fullPageLink("", ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.SRC_ANCHOR_TYPE, fullPath));
- assertTrue(pollForHrefAndImageSrcOnUiThread(fullPath, ANCHOR_TEXT, null));
+ pollForHitTestDataOnUiThread(HitTestResult.SRC_ANCHOR_TYPE, fullPath);
+ pollForHrefAndImageSrcOnUiThread(fullPath, ANCHOR_TEXT, null);
}
@SmallTest
@@ -198,9 +194,8 @@ public class WebKitHitTestTest extends AwTestBase {
String page = fullPageLink(relPath, ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.SRC_ANCHOR_TYPE, fullPath));
- assertTrue(pollForHrefAndImageSrcOnUiThread(fullPath, ANCHOR_TEXT, null));
+ pollForHitTestDataOnUiThread(HitTestResult.SRC_ANCHOR_TYPE, fullPath);
+ pollForHrefAndImageSrcOnUiThread(fullPath, ANCHOR_TEXT, null);
}
@SmallTest
@@ -221,8 +216,8 @@ public class WebKitHitTestTest extends AwTestBase {
String page = fullPageLink(prefix + email, ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(HitTestResult.EMAIL_TYPE, email));
- assertTrue(pollForHrefAndImageSrcOnUiThread(prefix + email, ANCHOR_TEXT, null));
+ pollForHitTestDataOnUiThread(HitTestResult.EMAIL_TYPE, email);
+ pollForHrefAndImageSrcOnUiThread(prefix + email, ANCHOR_TEXT, null);
}
@SmallTest
@@ -243,8 +238,8 @@ public class WebKitHitTestTest extends AwTestBase {
String page = fullPageLink(prefix + location, ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(HitTestResult.GEO_TYPE, location));
- assertTrue(pollForHrefAndImageSrcOnUiThread(prefix + location, ANCHOR_TEXT, null));
+ pollForHitTestDataOnUiThread(HitTestResult.GEO_TYPE, location);
+ pollForHrefAndImageSrcOnUiThread(prefix + location, ANCHOR_TEXT, null);
}
@SmallTest
@@ -266,8 +261,8 @@ public class WebKitHitTestTest extends AwTestBase {
String page = fullPageLink("tel:" + phone_num, ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(HitTestResult.PHONE_TYPE, expected_phone_num));
- assertTrue(pollForHrefAndImageSrcOnUiThread(prefix + phone_num, ANCHOR_TEXT, null));
+ pollForHitTestDataOnUiThread(HitTestResult.PHONE_TYPE, expected_phone_num);
+ pollForHrefAndImageSrcOnUiThread(prefix + phone_num, ANCHOR_TEXT, null);
}
@SmallTest
@@ -289,9 +284,8 @@ public class WebKitHitTestTest extends AwTestBase {
fullImageSrc + "\"></a>");
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.SRC_IMAGE_ANCHOR_TYPE, fullImageSrc));
- assertTrue(pollForHrefAndImageSrcOnUiThread(HREF, null, fullImageSrc));
+ pollForHitTestDataOnUiThread(HitTestResult.SRC_IMAGE_ANCHOR_TYPE, fullImageSrc);
+ pollForHrefAndImageSrcOnUiThread(HREF, null, fullImageSrc);
}
@SmallTest
@@ -316,9 +310,8 @@ public class WebKitHitTestTest extends AwTestBase {
relImageSrc + "\"></a>");
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.SRC_IMAGE_ANCHOR_TYPE, fullImageSrc));
- assertTrue(pollForHrefAndImageSrcOnUiThread(fullPath, null, fullImageSrc));
+ pollForHitTestDataOnUiThread(HitTestResult.SRC_IMAGE_ANCHOR_TYPE, fullImageSrc);
+ pollForHrefAndImageSrcOnUiThread(fullPath, null, fullImageSrc);
}
@SmallTest
@@ -342,9 +335,8 @@ public class WebKitHitTestTest extends AwTestBase {
"<img class=\"full_view\" src=\"" + relImageSrc + "\">");
setServerResponseAndLoad(page);
simulateTouchCenterOfWebViewOnUiThread();
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.IMAGE_TYPE, fullImageSrc));
- assertTrue(pollForHrefAndImageSrcOnUiThread(null, null, fullImageSrc));
+ pollForHitTestDataOnUiThread(HitTestResult.IMAGE_TYPE, fullImageSrc);
+ pollForHrefAndImageSrcOnUiThread(null, null, fullImageSrc);
}
private void editTextTypeTestBody(boolean byTouch) throws Throwable {
@@ -352,9 +344,8 @@ public class WebKitHitTestTest extends AwTestBase {
"<form><input class=\"full_view\" type=\"text\" name=\"test\"></form>");
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.EDIT_TEXT_TYPE, null));
- assertTrue(pollForHrefAndImageSrcOnUiThread(null, null, null));
+ pollForHitTestDataOnUiThread(HitTestResult.EDIT_TEXT_TYPE, null);
+ pollForHrefAndImageSrcOnUiThread(null, null, null);
}
@SmallTest
@@ -375,8 +366,8 @@ public class WebKitHitTestTest extends AwTestBase {
String page = fullPageLink(javascript, ANCHOR_TEXT);
setServerResponseAndLoad(page);
simulateInput(byTouch);
- assertTrue(pollForHrefAndImageSrcOnUiThread(javascript, ANCHOR_TEXT, null));
- assertTrue(pollForHitTestDataOnUiThread(HitTestResult.UNKNOWN_TYPE, null));
+ pollForHrefAndImageSrcOnUiThread(javascript, ANCHOR_TEXT, null);
+ pollForHitTestDataOnUiThread(HitTestResult.UNKNOWN_TYPE, null);
}
@SmallTest
@@ -413,7 +404,7 @@ public class WebKitHitTestTest extends AwTestBase {
}
});
simulateTouchCenterOfWebViewOnUiThread();
- assertTrue(pollForHitTestDataOnUiThread(HitTestResult.UNKNOWN_TYPE, null));
+ pollForHitTestDataOnUiThread(HitTestResult.UNKNOWN_TYPE, null);
}
@LargeTest
@@ -437,9 +428,8 @@ public class WebKitHitTestTest extends AwTestBase {
// Focus on input element and check the hit test results.
simulateTabDownUpOnUiThread();
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.EDIT_TEXT_TYPE, null));
- assertTrue(pollForHrefAndImageSrcOnUiThread(null, null, null));
+ pollForHitTestDataOnUiThread(HitTestResult.EDIT_TEXT_TYPE, null);
+ pollForHrefAndImageSrcOnUiThread(null, null, null);
// Touch image. Now the focus based hit test path will try to null out
// the results and the touch based path will update with the result of
@@ -449,9 +439,8 @@ public class WebKitHitTestTest extends AwTestBase {
// Make sure the result of image sticks.
for (int i = 0; i < 2; ++i) {
Thread.sleep(500);
- assertTrue(pollForHitTestDataOnUiThread(
- HitTestResult.IMAGE_TYPE, fullImageSrc));
- assertTrue(pollForHrefAndImageSrcOnUiThread(null, null, fullImageSrc));
+ pollForHitTestDataOnUiThread(HitTestResult.IMAGE_TYPE, fullImageSrc);
+ pollForHrefAndImageSrcOnUiThread(null, null, fullImageSrc);
}
}
}