From 5264ca43588d5f415a23492105eb698823062b02 Mon Sep 17 00:00:00 2001 From: "mkosiba@chromium.org" Date: Fri, 17 Jan 2014 16:08:46 +0000 Subject: [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 --- .../test/AndroidScrollIntegrationTest.java | 52 +++++------- ...ContentsClientShouldOverrideUrlLoadingTest.java | 21 +++-- .../android_webview/test/AwContentsRenderTest.java | 24 +++--- .../android_webview/test/AwContentsTest.java | 14 ++-- .../test/AwQuotaManagerBridgeTest.java | 66 ++++++--------- .../android_webview/test/AwSettingsTest.java | 94 ++++++++-------------- .../chromium/android_webview/test/AwTestBase.java | 33 +++++--- .../android_webview/test/AwViewportTest.java | 25 +++--- .../chromium/android_webview/test/AwZoomTest.java | 86 ++++++++------------ .../android_webview/test/CookieManagerTest.java | 45 +++++------ .../android_webview/test/GeolocationTest.java | 51 ++++++------ .../test/LoadDataWithBaseUrlTest.java | 15 ++-- .../test/NavigationHistoryTest.java | 15 ++-- .../android_webview/test/SaveRestoreStateTest.java | 8 +- .../android_webview/test/WebKitHitTestTest.java | 81 ++++++++----------- 15 files changed, 268 insertions(+), 362 deletions(-) (limited to 'android_webview') 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() { + @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() { + @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() { @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() { @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() { @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() { @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() { @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," + "
HelloWorld"); - 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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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() { @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() { @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() { @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() { @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() { @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() { + @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() { @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() { @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() { @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() { @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 { 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 callable) throws Exception { - return CriteriaHelper.pollForCriteria(new Criteria() { + protected static void poll(final Callable 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 callable) throws Exception { + poll(new Callable() { + @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() { @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() { @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() { @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() { + @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() { + assertTrue(runTestOnUiThreadAndGetResult(new Callable() { @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() { + assertTrue(runTestOnUiThreadAndGetResult(new Callable() { @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() { + @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() { + @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() { + @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { @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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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() { + pollOnUiThread(new Callable() { @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 + "\">"); 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 + "\">"); 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 { ""); 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 { "
"); 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); } } } -- cgit v1.1