Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1588)

Unified Diff: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java

Issue 2933623002: Create AwJUnit4ClassRunner AwActivityTestRule and convert AwContentsTest (Closed)
Patch Set: address bo's comments Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/javatests/src/org/chromium/android_webview/test/AwContentsTest.java
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 ce3724696e9632de13e36ba7a489e717dcc18533..d12e4c0adee1e641df4df65e27da42161f5c3feb 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
@@ -4,6 +4,8 @@
package org.chromium.android_webview.test;
+import static org.chromium.android_webview.test.AwTestCommon.WAIT_TIMEOUT_MS;
+
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
@@ -11,14 +13,19 @@ import android.graphics.Canvas;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
+import android.support.test.InstrumentationRegistry;
import android.support.test.filters.LargeTest;
import android.support.test.filters.SmallTest;
-import android.test.UiThreadTest;
import android.util.Pair;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.JavascriptInterface;
+import org.junit.Assert;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwSettings;
import org.chromium.android_webview.AwSwitches;
@@ -52,117 +59,141 @@ import java.util.concurrent.atomic.AtomicInteger;
/**
* AwContents tests.
*/
-public class AwContentsTest extends AwTestBase {
+@RunWith(AwJUnit4ClassRunner.class)
+public class AwContentsTest {
+ @Rule
+ public AwActivityTestRule mActivityTestRule = new AwActivityTestRule();
private TestAwContentsClient mContentsClient = new TestAwContentsClient();
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
- @UiThreadTest
public void testCreateDestroy() throws Throwable {
// NOTE this test runs on UI thread, so we cannot call any async methods.
- createAwTestContainerView(mContentsClient).getAwContents().destroy();
+ mActivityTestRule.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mActivityTestRule.createAwTestContainerView(mContentsClient)
+ .getAwContents()
+ .destroy();
+ }
+ });
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
public void testCreateLoadPageDestroy() throws Throwable {
AwTestContainerView awTestContainerView =
- createAwTestContainerViewOnMainSync(mContentsClient);
- loadDataSync(awTestContainerView.getAwContents(), mContentsClient.getOnPageFinishedHelper(),
- CommonResources.ABOUT_HTML, "text/html", false);
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
+ mActivityTestRule.loadDataSync(awTestContainerView.getAwContents(),
+ mContentsClient.getOnPageFinishedHelper(), CommonResources.ABOUT_HTML, "text/html",
+ false);
- destroyAwContentsOnMainSync(awTestContainerView.getAwContents());
+ mActivityTestRule.destroyAwContentsOnMainSync(awTestContainerView.getAwContents());
// It should be safe to call destroy multiple times.
- destroyAwContentsOnMainSync(awTestContainerView.getAwContents());
+ mActivityTestRule.destroyAwContentsOnMainSync(awTestContainerView.getAwContents());
}
+ @Test
@LargeTest
@Feature({"AndroidWebView"})
public void testCreateLoadDestroyManyTimes() throws Throwable {
for (int i = 0; i < 10; ++i) {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ mActivityTestRule.loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
- destroyAwContentsOnMainSync(awContents);
+ mActivityTestRule.destroyAwContentsOnMainSync(awContents);
}
}
+ @Test
@LargeTest
@Feature({"AndroidWebView"})
public void testCreateLoadDestroyManyAtOnce() throws Throwable {
AwTestContainerView views[] = new AwTestContainerView[10];
for (int i = 0; i < views.length; ++i) {
- views[i] = createAwTestContainerViewOnMainSync(mContentsClient);
- loadUrlSync(views[i].getAwContents(), mContentsClient.getOnPageFinishedHelper(),
+ views[i] = mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
+ mActivityTestRule.loadUrlSync(views[i].getAwContents(),
+ mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
}
for (int i = 0; i < views.length; ++i) {
- destroyAwContentsOnMainSync(views[i].getAwContents());
+ mActivityTestRule.destroyAwContentsOnMainSync(views[i].getAwContents());
views[i] = null;
}
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
- @UiThreadTest
public void testWebViewApisFailGracefullyAfterDestruction() throws Throwable {
- AwContents awContents =
- createAwTestContainerView(mContentsClient).getAwContents();
- awContents.destroy();
-
- // The documentation for WebView#destroy() reads "This method should be called
- // after this WebView has been removed from the view system. No other methods
- // may be called on this WebView after destroy".
- // However, some apps do not respect that restriction so we need to ensure that
- // we fail gracefully and do not crash when APIs are invoked after destruction.
- // Due to the large number of APIs we only test a representative selection here.
- awContents.clearHistory();
- awContents.loadUrl("http://www.google.com");
- awContents.findAllAsync("search");
- assertNull(awContents.getUrl());
- assertFalse(awContents.canGoBack());
- awContents.disableJavascriptInterfacesInspection();
- awContents.invokeZoomPicker();
- awContents.onResume();
- awContents.stopLoading();
- awContents.onWindowVisibilityChanged(View.VISIBLE);
- awContents.requestFocus();
- awContents.isMultiTouchZoomSupported();
- awContents.setOverScrollMode(View.OVER_SCROLL_NEVER);
- awContents.pauseTimers();
- awContents.onContainerViewScrollChanged(200, 200, 100, 100);
- awContents.computeScroll();
- awContents.onMeasure(100, 100);
- awContents.onDraw(new Canvas());
- awContents.getMostRecentProgress();
- assertEquals(0, awContents.computeHorizontalScrollOffset());
- assertEquals(0, awContents.getContentWidthCss());
- awContents.onKeyUp(KeyEvent.KEYCODE_BACK,
- new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU));
+ mActivityTestRule.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ AwContents awContents = mActivityTestRule.createAwTestContainerView(mContentsClient)
+ .getAwContents();
+ awContents.destroy();
+
+ // The documentation for WebView#destroy() reads "This method should be called
+ // after this WebView has been removed from the view system. No other methods
+ // may be called on this WebView after destroy".
+ // However, some apps do not respect that restriction so we need to ensure that
+ // we fail gracefully and do not crash when APIs are invoked after destruction.
+ // Due to the large number of APIs we only test a representative selection here.
+ awContents.clearHistory();
+ awContents.loadUrl("http://www.google.com");
+ awContents.findAllAsync("search");
+ Assert.assertNull(awContents.getUrl());
+ Assert.assertFalse(awContents.canGoBack());
+ awContents.disableJavascriptInterfacesInspection();
+ awContents.invokeZoomPicker();
+ awContents.onResume();
+ awContents.stopLoading();
+ awContents.onWindowVisibilityChanged(View.VISIBLE);
+ awContents.requestFocus();
+ awContents.isMultiTouchZoomSupported();
+ awContents.setOverScrollMode(View.OVER_SCROLL_NEVER);
+ awContents.pauseTimers();
+ awContents.onContainerViewScrollChanged(200, 200, 100, 100);
+ awContents.computeScroll();
+ awContents.onMeasure(100, 100);
+ awContents.onDraw(new Canvas());
+ awContents.getMostRecentProgress();
+ Assert.assertEquals(0, awContents.computeHorizontalScrollOffset());
+ Assert.assertEquals(0, awContents.getContentWidthCss());
+ awContents.onKeyUp(KeyEvent.KEYCODE_BACK,
+ new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MENU));
+ }
+ });
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
public void testUseAwSettingsAfterDestroy() throws Throwable {
AwTestContainerView awTestContainerView =
- createAwTestContainerViewOnMainSync(mContentsClient);
- AwSettings awSettings = getAwSettingsOnUiThread(awTestContainerView.getAwContents());
- loadDataSync(awTestContainerView.getAwContents(), mContentsClient.getOnPageFinishedHelper(),
- CommonResources.ABOUT_HTML, "text/html", false);
- destroyAwContentsOnMainSync(awTestContainerView.getAwContents());
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
+ AwSettings awSettings =
+ mActivityTestRule.getAwSettingsOnUiThread(awTestContainerView.getAwContents());
+ mActivityTestRule.loadDataSync(awTestContainerView.getAwContents(),
+ mContentsClient.getOnPageFinishedHelper(), CommonResources.ABOUT_HTML, "text/html",
+ false);
+ mActivityTestRule.destroyAwContentsOnMainSync(awTestContainerView.getAwContents());
// AwSettings should still be usable even after native side is destroyed.
String newFontFamily = "serif";
awSettings.setStandardFontFamily(newFontFamily);
- assertEquals(newFontFamily, awSettings.getStandardFontFamily());
+ Assert.assertEquals(newFontFamily, awSettings.getStandardFontFamily());
boolean newBlockNetworkLoads = !awSettings.getBlockNetworkLoads();
awSettings.setBlockNetworkLoads(newBlockNetworkLoads);
- assertEquals(newBlockNetworkLoads, awSettings.getBlockNetworkLoads());
+ Assert.assertEquals(newBlockNetworkLoads, awSettings.getBlockNetworkLoads());
}
private int callDocumentHasImagesSync(final AwContents awContents)
@@ -178,21 +209,23 @@ public class AwContentsTest extends AwTestBase {
s.release();
}
});
- runTestOnUiThread(new Runnable() {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
awContents.documentHasImages(msg);
}
});
- assertTrue(s.tryAcquire(WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS));
+ Assert.assertTrue(s.tryAcquire(AwActivityTestRule.WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS));
int result = val.get();
return result;
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
public void testDocumentHasImages() throws Throwable {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
final CallbackHelper loadHelper = mContentsClient.getOnPageFinishedHelper();
@@ -202,21 +235,22 @@ public class AwContentsTest extends AwTestBase {
final String imageDoc = "<head/><body><img/><img/></body>";
// Make sure a document that does not have images returns 0
- loadDataSync(awContents, loadHelper, emptyDoc, mime, false);
+ mActivityTestRule.loadDataSync(awContents, loadHelper, emptyDoc, mime, false);
int result = callDocumentHasImagesSync(awContents);
- assertEquals(0, result);
+ Assert.assertEquals(0, result);
// Make sure a document that does have images returns 1
- loadDataSync(awContents, loadHelper, imageDoc, mime, false);
+ mActivityTestRule.loadDataSync(awContents, loadHelper, imageDoc, mime, false);
result = callDocumentHasImagesSync(awContents);
- assertEquals(1, result);
+ Assert.assertEquals(1, result);
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
public void testClearCacheMemoryAndDisk() throws Throwable {
final AwTestContainerView testContainer =
- createAwTestContainerViewOnMainSync(mContentsClient);
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testContainer.getAwContents();
TestWebServer webServer = TestWebServer.start();
@@ -230,46 +264,44 @@ public class AwContentsTest extends AwTestBase {
pagePath, "<html><body>foo</body></html>", headers);
// First load to populate cache.
- clearCacheOnUiThread(awContents, true);
- loadUrlSync(awContents,
- mContentsClient.getOnPageFinishedHelper(),
- pageUrl);
- assertEquals(1, webServer.getRequestCount(pagePath));
+ mActivityTestRule.clearCacheOnUiThread(awContents, true);
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(1, webServer.getRequestCount(pagePath));
// Load about:blank so next load is not treated as reload by webkit and force
// revalidate with the server.
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ mActivityTestRule.loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
// No clearCache call, so should be loaded from cache.
- loadUrlSync(awContents,
- mContentsClient.getOnPageFinishedHelper(),
- pageUrl);
- assertEquals(1, webServer.getRequestCount(pagePath));
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(1, webServer.getRequestCount(pagePath));
// Same as above.
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ mActivityTestRule.loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
// Clear cache, so should hit server again.
- clearCacheOnUiThread(awContents, true);
- loadUrlSync(awContents,
- mContentsClient.getOnPageFinishedHelper(),
- pageUrl);
- assertEquals(2, webServer.getRequestCount(pagePath));
+ mActivityTestRule.clearCacheOnUiThread(awContents, true);
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(2, webServer.getRequestCount(pagePath));
} finally {
webServer.shutdown();
}
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
public void testClearCacheInQuickSuccession() throws Throwable {
final AwTestContainerView testContainer =
- createAwTestContainerViewOnMainSync(new TestAwContentsClient());
+ mActivityTestRule.createAwTestContainerViewOnMainSync(new TestAwContentsClient());
final AwContents awContents = testContainer.getAwContents();
- runTestOnUiThread(new Runnable() {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; ++i) {
@@ -279,11 +311,13 @@ public class AwContentsTest extends AwTestBase {
});
}
+ @Test
@SmallTest
@Feature({"AndroidWebView"})
public void testGetFavicon() throws Throwable {
AwContents.setShouldDownloadFavicons();
- final AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ final AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testView.getAwContents();
TestWebServer webServer = TestWebServer.start();
@@ -298,10 +332,11 @@ public class AwContentsTest extends AwTestBase {
// the page load completes which makes it slightly hard to test.
final Bitmap defaultFavicon = awContents.getFavicon();
- getAwSettingsOnUiThread(awContents).setImagesEnabled(true);
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ mActivityTestRule.getAwSettingsOnUiThread(awContents).setImagesEnabled(true);
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- pollUiThread(new Callable<Boolean>() {
+ mActivityTestRule.pollUiThread(new Callable<Boolean>() {
@Override
public Boolean call() {
return awContents.getFavicon() != null
@@ -312,19 +347,21 @@ public class AwContentsTest extends AwTestBase {
final Object originalFaviconSource = (new URL(faviconUrl)).getContent();
final Bitmap originalFavicon =
BitmapFactory.decodeStream((InputStream) originalFaviconSource);
- assertNotNull(originalFavicon);
+ Assert.assertNotNull(originalFavicon);
- assertTrue(awContents.getFavicon().sameAs(originalFavicon));
+ Assert.assertTrue(awContents.getFavicon().sameAs(originalFavicon));
} finally {
webServer.shutdown();
}
}
+ @Test
@Feature({"AndroidWebView", "Downloads"})
@SmallTest
public void testDownload() throws Throwable {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
final String data = "download data";
@@ -343,42 +380,47 @@ public class AwContentsTest extends AwTestBase {
final OnDownloadStartHelper downloadStartHelper =
mContentsClient.getOnDownloadStartHelper();
final int callCount = downloadStartHelper.getCallCount();
- loadUrlAsync(awContents, pageUrl);
+ mActivityTestRule.loadUrlAsync(awContents, pageUrl);
downloadStartHelper.waitForCallback(callCount);
- assertEquals(pageUrl, downloadStartHelper.getUrl());
- assertEquals(contentDisposition, downloadStartHelper.getContentDisposition());
- assertEquals(mimeType, downloadStartHelper.getMimeType());
- assertEquals(data.length(), downloadStartHelper.getContentLength());
+ Assert.assertEquals(pageUrl, downloadStartHelper.getUrl());
+ Assert.assertEquals(contentDisposition, downloadStartHelper.getContentDisposition());
+ Assert.assertEquals(mimeType, downloadStartHelper.getMimeType());
+ Assert.assertEquals(data.length(), downloadStartHelper.getContentLength());
} finally {
webServer.shutdown();
}
}
+ @Test
@Feature({"AndroidWebView", "setNetworkAvailable"})
@SmallTest
public void testSetNetworkAvailable() throws Throwable {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
String script = "navigator.onLine";
- enableJavaScriptOnUiThread(awContents);
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ mActivityTestRule.enableJavaScriptOnUiThread(awContents);
+ mActivityTestRule.loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
// Default to "online".
- assertEquals("true", executeJavaScriptAndWaitForResult(awContents, mContentsClient,
- script));
+ Assert.assertEquals("true",
+ mActivityTestRule.executeJavaScriptAndWaitForResult(
+ awContents, mContentsClient, script));
// Forcing "offline".
- setNetworkAvailableOnUiThread(awContents, false);
- assertEquals("false", executeJavaScriptAndWaitForResult(awContents, mContentsClient,
- script));
+ mActivityTestRule.setNetworkAvailableOnUiThread(awContents, false);
+ Assert.assertEquals("false",
+ mActivityTestRule.executeJavaScriptAndWaitForResult(
+ awContents, mContentsClient, script));
// Forcing "online".
- setNetworkAvailableOnUiThread(awContents, true);
- assertEquals("true", executeJavaScriptAndWaitForResult(awContents, mContentsClient,
- script));
+ mActivityTestRule.setNetworkAvailableOnUiThread(awContents, true);
+ Assert.assertEquals("true",
+ mActivityTestRule.executeJavaScriptAndWaitForResult(
+ awContents, mContentsClient, script));
}
@@ -394,13 +436,15 @@ public class AwContentsTest extends AwTestBase {
}
}
+ @Test
@Feature({"AndroidWebView", "Android-JavaBridge"})
@SmallTest
public void testJavaBridge() throws Throwable {
- final AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ final AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final CallbackHelper callback = new CallbackHelper();
- runTestOnUiThread(new Runnable() {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
AwContents awContents = testView.getAwContents();
@@ -413,56 +457,64 @@ public class AwContentsTest extends AwTestBase {
callback.waitForCallback(0, 1, WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS);
}
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
public void testEscapingOfErrorPage() throws Throwable {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
String script = "window.failed == true";
- enableJavaScriptOnUiThread(awContents);
+ mActivityTestRule.enableJavaScriptOnUiThread(awContents);
CallbackHelper onPageFinishedHelper = mContentsClient.getOnPageFinishedHelper();
int currentCallCount = onPageFinishedHelper.getCallCount();
- loadUrlAsync(awContents,
+ mActivityTestRule.loadUrlAsync(awContents,
"file:///file-that-does-not-exist#<script>window.failed = true;</script>");
- onPageFinishedHelper.waitForCallback(currentCallCount, 1, WAIT_TIMEOUT_MS,
- TimeUnit.MILLISECONDS);
+ onPageFinishedHelper.waitForCallback(
+ currentCallCount, 1, WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS);
- assertEquals("false", executeJavaScriptAndWaitForResult(awContents, mContentsClient,
- script));
+ Assert.assertEquals("false",
+ mActivityTestRule.executeJavaScriptAndWaitForResult(
+ awContents, mContentsClient, script));
}
+ @Test
@SuppressFBWarnings("DLS_DEAD_LOCAL_STORE")
@Feature({"AndroidWebView"})
@SmallTest
public void testCanInjectHeaders() throws Throwable {
final AwTestContainerView testContainer =
- createAwTestContainerViewOnMainSync(mContentsClient);
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testContainer.getAwContents();
- enableJavaScriptOnUiThread(awContents);
+ mActivityTestRule.enableJavaScriptOnUiThread(awContents);
- EmbeddedTestServer testServer =
- EmbeddedTestServer.createAndStartServer(getInstrumentation().getContext());
+ EmbeddedTestServer testServer = EmbeddedTestServer.createAndStartServer(
+ InstrumentationRegistry.getInstrumentation().getContext());
try {
String url = testServer.getURL("/echoheader?X-foo");
final Map<String, String> extraHeaders = new HashMap<String, String>();
extraHeaders.put("X-foo", "bar");
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), url, extraHeaders);
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), url, extraHeaders);
- String xfoo = getJavaScriptResultBodyTextContent(awContents, mContentsClient);
- assertEquals("bar", xfoo);
+ String xfoo = mActivityTestRule.getJavaScriptResultBodyTextContent(
+ awContents, mContentsClient);
+ Assert.assertEquals("bar", xfoo);
url = testServer.getURL("/echoheader?Referer");
extraHeaders.clear();
extraHeaders.put("Referer", "http://www.example.com/");
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), url, extraHeaders);
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), url, extraHeaders);
- String referer = getJavaScriptResultBodyTextContent(awContents, mContentsClient);
- assertEquals("http://www.example.com/", referer);
+ String referer = mActivityTestRule.getJavaScriptResultBodyTextContent(
+ awContents, mContentsClient);
+ Assert.assertEquals("http://www.example.com/", referer);
} finally {
testServer.stopAndDestroyServer();
}
@@ -471,17 +523,19 @@ public class AwContentsTest extends AwTestBase {
// This is a meta test that we don't accidentally turn off hardware
// acceleration in instrumentation tests without notice. Do not add the
// @DisableHardwareAccelerationForTest annotation for this test.
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
public void testHardwareModeWorks() throws Throwable {
AwTestContainerView testContainer =
- createAwTestContainerViewOnMainSync(mContentsClient);
- assertTrue(testContainer.isHardwareAccelerated());
- assertTrue(testContainer.isBackedByHardwareView());
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
+ Assert.assertTrue(testContainer.isHardwareAccelerated());
+ Assert.assertTrue(testContainer.isBackedByHardwareView());
}
// TODO(hush): more ssl tests. And put the ssl tests into a separate test
// class.
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
// If the user allows the ssl error, the same ssl error will not trigger
@@ -489,7 +543,7 @@ public class AwContentsTest extends AwTestBase {
// error will still trigger the onReceivedSslError callback.
public void testSslPreferences() throws Throwable {
final AwTestContainerView testContainer =
- createAwTestContainerViewOnMainSync(mContentsClient);
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testContainer.getAwContents();
TestWebServer webServer = TestWebServer.startSsl();
final String pagePath = "/hello.html";
@@ -499,54 +553,62 @@ public class AwContentsTest extends AwTestBase {
mContentsClient.getOnReceivedSslErrorHelper();
int onSslErrorCallCount = onReceivedSslErrorHelper.getCallCount();
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
- assertEquals(1, webServer.getRequestCount(pagePath));
+ Assert.assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
+ Assert.assertEquals(1, webServer.getRequestCount(pagePath));
// Now load the page again. This time, we expect no ssl error, because
// user's decision should be remembered.
onSslErrorCallCount = onReceivedSslErrorHelper.getCallCount();
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- assertEquals(onSslErrorCallCount, onReceivedSslErrorHelper.getCallCount());
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(onSslErrorCallCount, onReceivedSslErrorHelper.getCallCount());
// Now clear the ssl preferences then load the same url again. Expect to see
// onReceivedSslError getting called again.
awContents.clearSslPreferences();
onSslErrorCallCount = onReceivedSslErrorHelper.getCallCount();
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
// Now clear the stored decisions and tell the client to deny ssl errors.
awContents.clearSslPreferences();
mContentsClient.setAllowSslError(false);
onSslErrorCallCount = onReceivedSslErrorHelper.getCallCount();
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
// Now load the same page again. This time, we still expect onReceivedSslError,
// because we only remember user's decision if it is "allow".
onSslErrorCallCount = onReceivedSslErrorHelper.getCallCount();
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
- assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
+ mActivityTestRule.loadUrlSync(
+ awContents, mContentsClient.getOnPageFinishedHelper(), pageUrl);
+ Assert.assertEquals(onSslErrorCallCount + 1, onReceivedSslErrorHelper.getCallCount());
}
/**
* Verifies that Web Notifications and the Push API are not exposed in WebView.
*/
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
public void testPushAndNotificationsDisabled() throws Throwable {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
String script = "window.Notification || window.PushManager";
- enableJavaScriptOnUiThread(awContents);
- loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ mActivityTestRule.enableJavaScriptOnUiThread(awContents);
+ mActivityTestRule.loadUrlSync(awContents, mContentsClient.getOnPageFinishedHelper(),
ContentUrlConstants.ABOUT_BLANK_DISPLAY_URL);
- assertEquals("null", executeJavaScriptAndWaitForResult(awContents, mContentsClient,
- script));
+ Assert.assertEquals("null",
+ mActivityTestRule.executeJavaScriptAndWaitForResult(
+ awContents, mContentsClient, script));
}
private static class MockBindingManager implements BindingManager {
@@ -573,8 +635,8 @@ public class AwContentsTest extends AwTestBase {
} catch (InterruptedException e) {
}
}
- assertTrue(mForegroundState.size() != 0);
- assertEquals(inForeground, mForegroundState.get(0).booleanValue());
+ Assert.assertTrue(mForegroundState.size() != 0);
+ Assert.assertEquals(inForeground, mForegroundState.get(0).booleanValue());
mForegroundState.remove(0);
return;
}
@@ -612,6 +674,7 @@ public class AwContentsTest extends AwTestBase {
/**
* Verifies that a child process is actually gets created with WEBVIEW_SANDBOXED_RENDERER flag.
*/
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
@CommandLineFlags.Add(AwSwitches.WEBVIEW_SANDBOXED_RENDERER)
@@ -619,21 +682,24 @@ public class AwContentsTest extends AwTestBase {
public void testSandboxedRendererWorks() throws Throwable {
MockBindingManager bindingManager = new MockBindingManager();
ChildProcessLauncherHelper.setBindingManagerForTesting(bindingManager);
- assertFalse(bindingManager.isChildProcessCreated());
+ Assert.assertFalse(bindingManager.isChildProcessCreated());
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
final String pageTitle = "I am sandboxed";
- loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ mActivityTestRule.loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(),
"<html><head><title>" + pageTitle + "</title></head></html>", "text/html", false);
- assertEquals(pageTitle, getTitleOnUiThread(awContents));
+ Assert.assertEquals(pageTitle, mActivityTestRule.getTitleOnUiThread(awContents));
- assertTrue(bindingManager.isChildProcessCreated());
+ Assert.assertTrue(bindingManager.isChildProcessCreated());
// Test end-to-end interaction with the renderer.
- AwSettings awSettings = getAwSettingsOnUiThread(awContents);
+ AwSettings awSettings = mActivityTestRule.getAwSettingsOnUiThread(awContents);
awSettings.setJavaScriptEnabled(true);
- assertEquals("42", JSUtils.executeJavaScriptAndWaitForResult(this, awContents,
+ Assert.assertEquals("42",
+ JSUtils.executeJavaScriptAndWaitForResult(
+ InstrumentationRegistry.getInstrumentation(), awContents,
mContentsClient.getOnEvaluateJavaScriptResultHelper(), "21 + 21"));
}
@@ -641,6 +707,7 @@ public class AwContentsTest extends AwTestBase {
* By default the renderer should be considererd to be in the
* foreground.
*/
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
@CommandLineFlags.Add(AwSwitches.WEBVIEW_SANDBOXED_RENDERER)
@@ -648,14 +715,15 @@ public class AwContentsTest extends AwTestBase {
public void testRendererPriorityStartsHigh() throws Throwable {
MockBindingManager bindingManager = new MockBindingManager();
ChildProcessLauncherHelper.setBindingManagerForTesting(bindingManager);
- assertFalse(bindingManager.isChildProcessCreated());
+ Assert.assertFalse(bindingManager.isChildProcessCreated());
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
AwContents awContents = testView.getAwContents();
- loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(), "<html></html>",
- "text/html", false);
+ mActivityTestRule.loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ "<html></html>", "text/html", false);
- assertTrue(bindingManager.isChildProcessCreated());
+ Assert.assertTrue(bindingManager.isChildProcessCreated());
bindingManager.assertSetInForegroundCall(true);
}
@@ -663,6 +731,7 @@ public class AwContentsTest extends AwTestBase {
* If we specify that the priority is WAIVED, then the renderer
* should not be in the foreground.
*/
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
@CommandLineFlags.Add(AwSwitches.WEBVIEW_SANDBOXED_RENDERER)
@@ -670,21 +739,22 @@ public class AwContentsTest extends AwTestBase {
public void testRendererPriorityLow() throws Throwable {
MockBindingManager bindingManager = new MockBindingManager();
ChildProcessLauncherHelper.setBindingManagerForTesting(bindingManager);
- assertFalse(bindingManager.isChildProcessCreated());
+ Assert.assertFalse(bindingManager.isChildProcessCreated());
- final AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ final AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testView.getAwContents();
- runTestOnUiThread(new Runnable() {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
awContents.setRendererPriorityPolicy(RendererPriority.WAIVED, false);
}
});
- loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(), "<html></html>",
- "text/html", false);
+ mActivityTestRule.loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ "<html></html>", "text/html", false);
- assertTrue(awContents.isPageVisible());
- assertTrue(bindingManager.isChildProcessCreated());
+ Assert.assertTrue(awContents.isPageVisible());
+ Assert.assertTrue(bindingManager.isChildProcessCreated());
bindingManager.assertSetInForegroundCall(false);
}
@@ -693,6 +763,7 @@ public class AwContentsTest extends AwTestBase {
* background, then pausing the view should send the renderer to
* the background.
*/
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
@CommandLineFlags.Add(AwSwitches.WEBVIEW_SANDBOXED_RENDERER)
@@ -700,23 +771,24 @@ public class AwContentsTest extends AwTestBase {
public void testRendererPriorityManaged() throws Throwable {
MockBindingManager bindingManager = new MockBindingManager();
ChildProcessLauncherHelper.setBindingManagerForTesting(bindingManager);
- assertFalse(bindingManager.isChildProcessCreated());
+ Assert.assertFalse(bindingManager.isChildProcessCreated());
- final AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ final AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testView.getAwContents();
- runTestOnUiThread(new Runnable() {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
awContents.setRendererPriorityPolicy(RendererPriority.HIGH, true);
}
});
- loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(), "<html></html>",
- "text/html", false);
+ mActivityTestRule.loadDataSync(awContents, mContentsClient.getOnPageFinishedHelper(),
+ "<html></html>", "text/html", false);
- assertTrue(awContents.isPageVisible());
- assertTrue(bindingManager.isChildProcessCreated());
+ Assert.assertTrue(awContents.isPageVisible());
+ Assert.assertTrue(bindingManager.isChildProcessCreated());
bindingManager.assertSetInForegroundCall(true);
- runTestOnUiThread(new Runnable() {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(new Runnable() {
@Override
public void run() {
awContents.onPause();
@@ -725,30 +797,39 @@ public class AwContentsTest extends AwTestBase {
bindingManager.assertSetInForegroundCall(false);
}
+ @Test
@Feature({"AndroidWebView"})
@SmallTest
- @UiThreadTest
@CommandLineFlags.Add(AwSwitches.WEBVIEW_SANDBOXED_RENDERER)
@SkipCommandLineParameterization
public void testPauseDestroyResume() throws Throwable {
- AwContents awContents;
- awContents = createAwTestContainerView(mContentsClient).getAwContents();
- awContents.pauseTimers();
- awContents.pauseTimers();
- awContents.destroy();
- awContents = createAwTestContainerView(mContentsClient).getAwContents();
- awContents.resumeTimers();
+ mActivityTestRule.runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ AwContents awContents;
+ awContents = mActivityTestRule.createAwTestContainerView(mContentsClient)
+ .getAwContents();
+ awContents.pauseTimers();
+ awContents.pauseTimers();
+ awContents.destroy();
+ awContents = mActivityTestRule.createAwTestContainerView(mContentsClient)
+ .getAwContents();
+ awContents.resumeTimers();
+ }
+ });
}
/** Regression test for https://crbug.com/732976. Load a data URL, then immediately
* after that load a javascript URL. The data URL navigation shouldn't be blocked.
*/
+ @Test
@LargeTest
@Feature({"AndroidWebView"})
public void testJavaScriptUrlAfterLoadData() throws Throwable {
- AwTestContainerView testView = createAwTestContainerViewOnMainSync(mContentsClient);
+ AwTestContainerView testView =
+ mActivityTestRule.createAwTestContainerViewOnMainSync(mContentsClient);
final AwContents awContents = testView.getAwContents();
- getInstrumentation().runOnMainSync(new Runnable() {
+ mActivityTestRule.runOnUiThread(new Runnable() {
@Override
public void run() {
// Run javascript navigation immediately, without waiting for the completion of data
@@ -760,10 +841,10 @@ public class AwContentsTest extends AwTestBase {
mContentsClient.getOnPageFinishedHelper().waitForCallback(
0, 1, WAIT_TIMEOUT_MS, TimeUnit.MILLISECONDS);
- assertEquals("data:text/html,<html>test</html>", awContents.getLastCommittedUrl());
+ Assert.assertEquals("data:text/html,<html>test</html>", awContents.getLastCommittedUrl());
TestAwContentsClient.AddMessageToConsoleHelper consoleHelper =
mContentsClient.getAddMessageToConsoleHelper();
- assertEquals(0, consoleHelper.getMessages().size());
+ Assert.assertEquals(0, consoleHelper.getMessages().size());
}
}

Powered by Google App Engine
This is Rietveld 408576698