| Index: base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
|
| diff --git a/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java b/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
|
| index 752e922636bf5070a23f8e3af846758481a33ddc..d1ce76397ca8daedab6443980cc58179f1d95e50 100644
|
| --- a/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
|
| +++ b/base/test/android/javatests/src/org/chromium/base/test/BaseInstrumentationTestRunner.java
|
| @@ -9,6 +9,7 @@ import android.net.ConnectivityManager;
|
| import android.net.NetworkInfo;
|
| import android.os.Build;
|
| import android.os.Bundle;
|
| +import android.os.SystemClock;
|
| import android.test.AndroidTestRunner;
|
| import android.test.InstrumentationTestRunner;
|
| import android.text.TextUtils;
|
| @@ -18,6 +19,7 @@ import junit.framework.TestResult;
|
|
|
| import org.chromium.base.Log;
|
| import org.chromium.base.SysUtils;
|
| +import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.MinAndroidSdkLevel;
|
| import org.chromium.base.test.util.Restriction;
|
| import org.chromium.test.reporter.TestStatusListener;
|
| @@ -33,6 +35,9 @@ import java.util.List;
|
| public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
|
| private static final String TAG = "cr.base.test";
|
|
|
| + private static final int SLEEP_INTERVAL = 50; // milliseconds
|
| + private static final int WAIT_DURATION = 5000; // milliseconds
|
| +
|
| /**
|
| * An interface for classes that check whether a test case should be skipped.
|
| */
|
| @@ -49,14 +54,14 @@ public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
|
| /**
|
| * A test result that can skip tests.
|
| */
|
| - public class SkippingTestResult extends TestResult {
|
| + public class BaseTestResult extends TestResult {
|
|
|
| private final List<SkipCheck> mSkipChecks;
|
|
|
| /**
|
| - * Creates an instance of SkippingTestResult.
|
| + * Creates an instance of BaseTestResult.
|
| */
|
| - public SkippingTestResult() {
|
| + public BaseTestResult() {
|
| mSkipChecks = new ArrayList<SkipCheck>();
|
| }
|
|
|
| @@ -89,6 +94,13 @@ public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
|
|
|
| endTest(test);
|
| } else {
|
| + try {
|
| + CommandLineFlags.setUp(
|
| + BaseInstrumentationTestRunner.this.getTargetContext(),
|
| + test.getClass().getMethod(test.getName()));
|
| + } catch (NoSuchMethodException e) {
|
| + Log.e(TAG, "Unable to set up CommandLineFlags", e);
|
| + }
|
| super.run(test);
|
| }
|
| }
|
| @@ -99,7 +111,7 @@ public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
|
| AndroidTestRunner runner = new AndroidTestRunner() {
|
| @Override
|
| protected TestResult createTestResult() {
|
| - SkippingTestResult r = new SkippingTestResult();
|
| + BaseTestResult r = new BaseTestResult();
|
| addSkipChecks(r);
|
| return r;
|
| }
|
| @@ -111,7 +123,7 @@ public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
|
| /**
|
| * Adds the desired SkipChecks to result. Subclasses can add additional SkipChecks.
|
| */
|
| - protected void addSkipChecks(SkippingTestResult result) {
|
| + protected void addSkipChecks(BaseTestResult result) {
|
| result.addSkipCheck(new MinAndroidSdkLevelSkipCheck());
|
| result.addSkipCheck(new RestrictionSkipCheck());
|
| }
|
| @@ -191,4 +203,29 @@ public class BaseInstrumentationTestRunner extends InstrumentationTestRunner {
|
| return false;
|
| }
|
| }
|
| +
|
| + /**
|
| + * Gets the target context.
|
| + *
|
| + * On older versions of Android, getTargetContext() may initially return null, so we have to
|
| + * wait for it to become available.
|
| + *
|
| + * @return The target {@link android.content.Context} if available; null otherwise.
|
| + */
|
| + @Override
|
| + public Context getTargetContext() {
|
| + Context targetContext = super.getTargetContext();
|
| + try {
|
| + long startTime = SystemClock.uptimeMillis();
|
| + // TODO(jbudorick): Convert this to CriteriaHelper once that moves to base/.
|
| + while (targetContext == null
|
| + && SystemClock.uptimeMillis() - startTime < WAIT_DURATION) {
|
| + Thread.sleep(SLEEP_INTERVAL);
|
| + targetContext = super.getTargetContext();
|
| + }
|
| + } catch (InterruptedException e) {
|
| + Log.e(TAG, "Interrupted while attempting to initialize the command line.");
|
| + }
|
| + return targetContext;
|
| + }
|
| }
|
|
|