| Index: chrome/test/android/javatests/src/org/chromium/chrome/test/util/ActivityUtils.java
|
| diff --git a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/ActivityUtils.java b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/ActivityUtils.java
|
| index 1150ffebc93bcd34e91267a4d2a7f26bddbe6c6e..ca044d484667cf0aacbd1da899793aa357c0d0b9 100644
|
| --- a/chrome/test/android/javatests/src/org/chromium/chrome/test/util/ActivityUtils.java
|
| +++ b/chrome/test/android/javatests/src/org/chromium/chrome/test/util/ActivityUtils.java
|
| @@ -9,10 +9,17 @@ import android.app.DialogFragment;
|
| import android.app.Fragment;
|
| import android.app.Instrumentation;
|
| import android.app.Instrumentation.ActivityMonitor;
|
| +import android.content.Context;
|
| +import android.content.Intent;
|
| +import android.os.Bundle;
|
| +import android.support.v4.app.ActivityOptionsCompat;
|
|
|
| import junit.framework.Assert;
|
|
|
| +import org.chromium.base.test.util.ScalableTimeout;
|
| +import org.chromium.chrome.R;
|
| import org.chromium.chrome.browser.preferences.Preferences;
|
| +import org.chromium.chrome.browser.util.IntentUtils;
|
| import org.chromium.content.browser.test.util.Criteria;
|
| import org.chromium.content.browser.test.util.CriteriaHelper;
|
|
|
| @@ -20,7 +27,7 @@ import org.chromium.content.browser.test.util.CriteriaHelper;
|
| * Collection of activity utilities.
|
| */
|
| public class ActivityUtils {
|
| - private static final long ACTIVITY_START_TIMEOUT_MS = 3000;
|
| + private static final long ACTIVITY_START_TIMEOUT_MS = ScalableTimeout.scaleTimeout(3000);
|
| private static final long CONDITION_POLL_INTERVAL_MS = 100;
|
|
|
| /**
|
| @@ -50,6 +57,35 @@ public class ActivityUtils {
|
| }
|
| }
|
|
|
| + /**
|
| + * Captures an activity of a particular type by launching an intent explicitly targeting the
|
| + * activity.
|
| + *
|
| + * @param <T> The type of activity to wait for.
|
| + * @param activityType The class type of the activity.
|
| + * @return The spawned activity.
|
| + */
|
| + public static <T> T waitForActivity(
|
| + final Instrumentation instrumentation, final Class<T> activityType) {
|
| + Runnable intentTrigger = new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + Context context = instrumentation.getTargetContext().getApplicationContext();
|
| + Intent activityIntent = new Intent();
|
| + activityIntent.setClass(context, activityType);
|
| + activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
| + activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_DOCUMENT);
|
| +
|
| + Bundle optionsBundle =
|
| + ActivityOptionsCompat
|
| + .makeCustomAnimation(context, R.anim.activity_open_enter, 0)
|
| + .toBundle();
|
| + IntentUtils.safeStartActivity(context, activityIntent, optionsBundle);
|
| + }
|
| + };
|
| + return waitForActivity(instrumentation, activityType, intentTrigger);
|
| + }
|
| +
|
| /**
|
| * Captures an activity of a particular type that is triggered from some action.
|
| *
|
|
|