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

Unified Diff: content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestCommon.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/JavaBridgeTestCommon.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/JavaBridgeTestCommon.java
similarity index 53%
copy from content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java
copy to content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestCommon.java
index 592e6f9db44871834678e47a89c5c404fa0ba888..83f21bfdb8d4fa27f735b7fdf75ff1046bad30da 100644
--- a/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestBase.java
+++ b/content/public/android/javatests/src/org/chromium/content/browser/JavaBridgeTestCommon.java
@@ -1,4 +1,4 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
+// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -6,66 +6,44 @@ package org.chromium.content.browser;
import android.util.Log;
-import junit.framework.Assert;
+import org.junit.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.
+ * Common functionality implementation for testing the Java Bridge.
*/
-public class JavaBridgeTestBase extends ContentShellTestBase {
-
+public final class JavaBridgeTestCommon {
protected TestCallbackHelperContainer mTestCallbackHelperContainer;
- /**
- * 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>"));
+ private final TestCommonCallback<ContentShellActivity> mCallback;
- 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));
- }
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- setUpContentView();
+ public JavaBridgeTestCommon(TestCommonCallback<ContentShellActivity> callback) {
+ mCallback = callback;
}
@SuppressFBWarnings("CHROMIUM_SYNCHRONIZED_METHOD")
- protected static class Controller {
+ public static class Controller {
+ private static final int RESULT_WAIT_TIME = 5000;
+
private boolean mIsResultReady;
protected synchronized void notifyResultIsReady() {
mIsResultReady = true;
notify();
}
+
protected synchronized void waitForResult() {
while (!mIsResultReady) {
try {
- wait(5000);
+ wait(RESULT_WAIT_TIME);
} catch (Exception e) {
continue;
}
@@ -77,8 +55,32 @@ public class JavaBridgeTestBase extends ContentShellTestBase {
}
}
- protected void executeJavaScript(final String script) throws Throwable {
- runTestOnUiThread(new Runnable() {
+ TestCallbackHelperContainer getTestCallBackHelperContainer() {
+ return mTestCallbackHelperContainer;
+ }
+
+ void setUpContentView() {
+ // This starts the activity, so must be called on the test thread.
+ final ContentShellActivity activity = mCallback.launchContentShellWithUrlForTestCommon(
+ UrlUtils.encodeHtmlDataUri("<html><head></head><body>test</body></html>"));
+ mCallback.waitForActiveShellToBeDoneLoadingForTestCommon();
+
+ try {
+ mCallback.runOnUiThreadForTestCommon(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));
+ }
+ }
+
+ void executeJavaScript(final String script) throws Throwable {
+ mCallback.runOnUiThreadForTestCommon(new Runnable() {
@Override
public void run() {
// When a JavaScript URL is executed, if the value of the last
@@ -86,38 +88,37 @@ public class JavaBridgeTestBase extends ContentShellTestBase {
// 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 + " })()"));
+ mCallback.getActivityForTestCommon()
+ .getActiveShell()
+ .getWebContents()
+ .getNavigationController()
+ .loadUrl(new LoadUrlParams("javascript:(function() { " + script + " })()"));
}
});
}
- protected void injectObjectAndReload(final Object object, final String name) throws Exception {
- injectObjectAndReload(object, name, null);
- }
-
- protected void injectObjectAndReload(final Object object, final String name,
- final Class<? extends Annotation> requiredAnnotation) throws Exception {
- injectObjectsAndReload(object, name, null, null, requiredAnnotation);
- }
-
- protected void injectObjectsAndReload(final Object object1, final String name1,
- final Object object2, final String name2,
- final Class<? extends Annotation> requiredAnnotation) throws Exception {
+ 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() {
+ mCallback.runOnUiThreadForTestCommon(new Runnable() {
@Override
public void run() {
- getContentViewCore().addPossiblyUnsafeJavascriptInterface(object1,
- name1, requiredAnnotation);
+ mCallback.getContentViewCoreForTestCommon()
+ .addPossiblyUnsafeJavascriptInterface(
+ object1, name1, requiredAnnotation);
if (object2 != null && name2 != null) {
- getContentViewCore().addPossiblyUnsafeJavascriptInterface(object2,
- name2, requiredAnnotation);
+ mCallback.getContentViewCoreForTestCommon()
+ .addPossiblyUnsafeJavascriptInterface(
+ object2, name2, requiredAnnotation);
}
- getContentViewCore().getWebContents().getNavigationController().reload(true);
+ mCallback.getContentViewCoreForTestCommon()
+ .getWebContents()
+ .getNavigationController()
+ .reload(true);
}
});
onPageFinishedHelper.waitForCallback(currentCallCount);
@@ -127,14 +128,17 @@ public class JavaBridgeTestBase extends ContentShellTestBase {
}
}
- protected void synchronousPageReload() throws Throwable {
+ void synchronousPageReload() throws Throwable {
TestCallbackHelperContainer.OnPageFinishedHelper onPageFinishedHelper =
mTestCallbackHelperContainer.getOnPageFinishedHelper();
int currentCallCount = onPageFinishedHelper.getCallCount();
- runTestOnUiThread(new Runnable() {
+ mCallback.runOnUiThreadForTestCommon(new Runnable() {
@Override
public void run() {
- getContentViewCore().getWebContents().getNavigationController().reload(true);
+ mCallback.getContentViewCoreForTestCommon()
+ .getWebContents()
+ .getNavigationController()
+ .reload(true);
}
});
onPageFinishedHelper.waitForCallback(currentCallCount);

Powered by Google App Engine
This is Rietveld 408576698