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

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

Issue 10855171: Add a test runner for android_webview. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: address feedback Created 8 years, 4 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/AndroidWebViewTestBase.java
diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/AndroidWebViewTestBase.java b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidWebViewTestBase.java
new file mode 100644
index 0000000000000000000000000000000000000000..56b909aad3d84da3bc3a897f67aab01935c0e6b8
--- /dev/null
+++ b/android_webview/javatests/src/org/chromium/android_webview/test/AndroidWebViewTestBase.java
@@ -0,0 +1,134 @@
+// Copyright (c) 2012 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.
+
+package org.chromium.android_webview.test;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.test.ActivityInstrumentationTestCase2;
+import android.view.View;
+
+import org.chromium.android_webview.AndroidWebViewUtil;
+import org.chromium.android_webview.AwContents;
+import org.chromium.content.browser.ContentSettings;
+import org.chromium.content.browser.ContentView;
+import org.chromium.content.browser.ContentViewClient;
+import org.chromium.content.browser.ContentViewCore;
+import org.chromium.content.browser.LoadUrlParams;
+import org.chromium.content.browser.test.CallbackHelper;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Callable;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.FutureTask;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * A base class for android_webview tests.
+ */
+public class AndroidWebViewTestBase
+ extends ActivityInstrumentationTestCase2<AndroidWebViewTestRunnerActivity> {
+ protected static int WAIT_TIMEOUT_SECONDS = 15;
+
+ public AndroidWebViewTestBase() {
+ super(AndroidWebViewTestRunnerActivity.class);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ final Context context = getActivity();
+ getInstrumentation().runOnMainSync(new Runnable() {
+ @Override
+ public void run() {
+ ContentViewCore.initChromiumBrowserProcess(
+ context, ContentView.MAX_RENDERERS_SINGLE_PROCESS);
+ }
+ });
+ }
+
+ /**
+ * Runs a {@link Callable} on the main thread, blocking until it is
+ * complete, and returns the result. Calls
+ * {@link Instrumentation#waitForIdleSync()} first to help avoid certain
+ * race conditions.
+ *
+ * @param <R> Type of result to return
+ */
+ public <R> R runTestOnUiThreadAndGetResult(Callable<R> callable)
+ throws Throwable {
+ FutureTask<R> task = new FutureTask<R>(callable);
+ getInstrumentation().waitForIdleSync();
+ getInstrumentation().runOnMainSync(task);
+ try {
+ return task.get();
+ } catch (ExecutionException e) {
+ // Unwrap the cause of the exception and re-throw it.
+ throw e.getCause();
+ }
+ }
+
+ /**
+ * Loads url on the UI thread and blocks until onPageFinished is called.
+ */
+ protected void loadUrlSync(final ContentViewCore contentViewCore,
+ CallbackHelper onPageFinishedHelper,
+ final String url) throws Throwable {
+ int currentCallCount = onPageFinishedHelper.getCallCount();
+ loadUrlAsync(contentViewCore, url);
+ onPageFinishedHelper.waitForCallback(currentCallCount, 1, WAIT_TIMEOUT_SECONDS,
+ TimeUnit.SECONDS);
+ }
+
+ /**
+ * Loads url on the UI thread but does not block.
+ */
+ protected void loadUrlAsync(final ContentViewCore contentViewCore,
+ final String url) throws Throwable {
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ contentViewCore.loadUrl(new LoadUrlParams(url));
+ }
+ });
+ }
+
+ /**
+ * Loads data on the UI thread and blocks until onPageFinished is called.
+ */
+ protected void loadDataSync(final ContentViewCore contentViewCore,
+ CallbackHelper onPageFinishedHelper,
+ final String data, final String mimeType,
+ final boolean isBase64Encoded) throws Throwable {
+ int currentCallCount = onPageFinishedHelper.getCallCount();
+ loadDataAsync(contentViewCore, data, mimeType, isBase64Encoded);
+ onPageFinishedHelper.waitForCallback(currentCallCount, 1, WAIT_TIMEOUT_SECONDS,
+ TimeUnit.SECONDS);
+ }
+
+ /**
+ * Loads data on the UI thread but does not block.
+ */
+ protected void loadDataAsync(final ContentViewCore contentViewCore, final String data,
+ final String mimeType, final boolean isBase64Encoded)
+ throws Throwable {
+ runTestOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ contentViewCore.loadUrl(LoadUrlParams.createLoadDataParams(
+ data, mimeType, isBase64Encoded));
+ }
+ });
+ }
+
+ protected ContentView createContentView(boolean incognito,
+ ContentViewClient contentViewClient) {
+ int nativeWebContents = AndroidWebViewUtil.createNativeWebContents(incognito);
+ ContentView contentView = ContentView.newInstance(getActivity(), nativeWebContents,
+ ContentView.PERSONALITY_VIEW);
+ contentView.setContentViewClient(contentViewClient);
+ return contentView;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698