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

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java

Issue 2739603003: Add TestRules for content shell test and refactor test bases (Closed)
Patch Set: Address +boliu's comments Created 3 years, 9 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: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java
diff --git a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java
index 592e6f9db44871834678e47a89c5c404fa0ba888..d7907c689c46a77a872f533d7d3b71e3d0962eb9 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java
@@ -4,92 +4,39 @@
package org.chromium.content.browser;
-import android.util.Log;
-
-import junit.framework.Assert;
-
-import org.chromium.base.annotations.SuppressFBWarnings;
-import org.chromium.base.test.util.UrlUtils;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer;
-import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.content_shell_apk.ContentShellActivity;
import org.chromium.content_shell_apk.ContentShellTestBase;
+import org.chromium.content_shell_apk.ContentShellTestCommon.TestCommonCallback;
import java.lang.annotation.Annotation;
/**
* Common functionality for testing the Java Bridge.
*/
-public class JavaBridgeTestBase extends ContentShellTestBase {
-
- protected TestCallbackHelperContainer mTestCallbackHelperContainer;
+public class JavaBridgeTestBase
+ extends ContentShellTestBase implements TestCommonCallback<ContentShellActivity> {
+ private final JavaBridgeTestCommon mTestCommon = new JavaBridgeTestCommon(this);
/**
* Sets up the ContentView. Intended to be called from setUp().
*/
private void setUpContentView() throws Exception {
- // This starts the activity, so must be called on the test thread.
- final ContentShellActivity activity = launchContentShellWithUrl(
- UrlUtils.encodeHtmlDataUri("<html><head></head><body>test</body></html>"));
-
- waitForActiveShellToBeDoneLoading();
-
- try {
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- mTestCallbackHelperContainer = new TestCallbackHelperContainer(
- activity.getActiveContentViewCore());
- }
- });
- } catch (Throwable e) {
- throw new RuntimeException(
- "Failed to set up ContentView: " + Log.getStackTraceString(e));
- }
+ mTestCommon.setUpContentView();
}
@Override
protected void setUp() throws Exception {
super.setUp();
- setUpContentView();
+ mTestCommon.setUpContentView();
}
- @SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD")
- protected static class Controller {
- private boolean mIsResultReady;
-
- protected synchronized void notifyResultIsReady() {
- mIsResultReady = true;
- notify();
- }
- protected synchronized void waitForResult() {
- while (!mIsResultReady) {
- try {
- wait(5000);
- } catch (Exception e) {
- continue;
- }
- if (!mIsResultReady) {
- Assert.fail("Wait timed out");
- }
- }
- mIsResultReady = false;
- }
+ public TestCallbackHelperContainer getTestCallBackHelperContainer() {
+ return mTestCommon.getTestCallBackHelperContainer();
}
protected void executeJavaScript(final String script) throws Throwable {
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- // When a JavaScript URL is executed, if the value of the last
- // expression evaluated is not 'undefined', this value is
- // converted to a string and used as the new document for the
- // frame. We don't want this behaviour, so wrap the script in
- // an anonymous function.
- getWebContents().getNavigationController().loadUrl(
- new LoadUrlParams("javascript:(function() { " + script + " })()"));
- }
- });
+ mTestCommon.executeJavaScript(script);
}
protected void injectObjectAndReload(final Object object, final String name) throws Exception {
@@ -104,39 +51,10 @@ public class JavaBridgeTestBase extends ContentShellTestBase {
protected void injectObjectsAndReload(final Object object1, final String name1,
final Object object2, final String name2,
final Class<? extends Annotation> requiredAnnotation) throws Exception {
- TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
- mTestCallbackHelperContainer.getOnPageFinishedHelper();
- int currentCallCount = onPageFinishedHelper.getCallCount();
- try {
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- getContentViewCore().addPossiblyUnsafeJavascriptInterface(object1,
- name1, requiredAnnotation);
- if (object2 != null && name2 != null) {
- getContentViewCore().addPossiblyUnsafeJavascriptInterface(object2,
- name2, requiredAnnotation);
- }
- getContentViewCore().getWebContents().getNavigationController().reload(true);
- }
- });
- onPageFinishedHelper.waitForCallback(currentCallCount);
- } catch (Throwable e) {
- throw new RuntimeException(
- "Failed to injectObjectsAndReload: " + Log.getStackTraceString(e));
- }
+ mTestCommon.injectObjectsAndReload(object1, name1, object2, name2, requiredAnnotation);
}
protected void synchronousPageReload() throws Throwable {
- TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
- mTestCallbackHelperContainer.getOnPageFinishedHelper();
- int currentCallCount = onPageFinishedHelper.getCallCount();
- runTestOnUiThread(new Runnable() {
- @Override
- public void run() {
- getContentViewCore().getWebContents().getNavigationController().reload(true);
- }
- });
- onPageFinishedHelper.waitForCallback(currentCallCount);
+ mTestCommon.synchronousPageReload();
}
}

Powered by Google App Engine
This is Rietveld 408576698