| Index: chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
|
| diff --git a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
|
| index a6f9789da2f357166a858f6735fdd3b37c3013d3..bf4bb6fb8369fb532cfd76fc476946631a1ffec6 100644
|
| --- a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
|
| +++ b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java
|
| @@ -14,12 +14,14 @@ import android.os.Bundle;
|
| import android.support.test.filters.SmallTest;
|
|
|
| import org.chromium.base.ThreadUtils;
|
| +import org.chromium.base.test.util.CallbackHelper;
|
| import org.chromium.base.test.util.CommandLineFlags;
|
| import org.chromium.base.test.util.Feature;
|
| import org.chromium.base.test.util.FlakyTest;
|
| import org.chromium.base.test.util.RetryOnFailure;
|
| import org.chromium.chrome.browser.ChromeSwitches;
|
| import org.chromium.chrome.browser.firstrun.FirstRunActivity;
|
| +import org.chromium.chrome.browser.firstrun.FirstRunActivity.FirstRunActivityObserver;
|
| import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
|
| import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
|
| import org.chromium.chrome.browser.preferences.Preferences;
|
| @@ -30,6 +32,8 @@ import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
|
| import org.chromium.content.browser.test.util.Criteria;
|
| import org.chromium.content.browser.test.util.CriteriaHelper;
|
|
|
| +import java.util.concurrent.TimeoutException;
|
| +
|
| /**
|
| * Tests for the first run experience.
|
| */
|
| @@ -43,10 +47,34 @@ public class FirstRunTest extends SyncTestBase {
|
| NO;
|
| }
|
|
|
| + private static final class TestObserver implements FirstRunActivityObserver {
|
| + public final CallbackHelper flowIsKnownCallback = new CallbackHelper();
|
| +
|
| + @Override
|
| + public void onFlowIsKnown() {
|
| + flowIsKnownCallback.notifyCalled();
|
| + }
|
| +
|
| + @Override
|
| + public void onAcceptTermsOfService() {}
|
| +
|
| + @Override
|
| + public void onJumpToPage(int position) {}
|
| +
|
| + @Override
|
| + public void onUpdateCachedEngineName() {}
|
| +
|
| + @Override
|
| + public void onAbortFirstRunExperience() {}
|
| + }
|
| +
|
| + private final TestObserver mTestObserver = new TestObserver();
|
| private FirstRunActivity mActivity;
|
|
|
| @Override
|
| public void startMainActivity() throws InterruptedException {
|
| + FirstRunActivity.setObserverForTest(mTestObserver);
|
| +
|
| // Starts up and waits for the FirstRunActivity to be ready.
|
| // This isn't exactly what startMainActivity is supposed to be doing, but short of a
|
| // refactoring of SyncTestBase to use something other than ChromeTabbedActivity, it's the
|
| @@ -78,17 +106,21 @@ public class FirstRunTest extends SyncTestBase {
|
| assertTrue(activity instanceof FirstRunActivity);
|
| mActivity = (FirstRunActivity) activity;
|
|
|
| - CriteriaHelper.pollUiThread(new Criteria() {
|
| - @Override
|
| - public boolean isSatisfied() {
|
| - return mActivity.isPostNativePageSequenceCreated();
|
| - }
|
| - });
|
| + try {
|
| + mTestObserver.flowIsKnownCallback.waitForCallback(0);
|
| + } catch (TimeoutException e) {
|
| + fail();
|
| + }
|
|
|
| getInstrumentation().waitForIdleSync();
|
| }
|
|
|
| @Override
|
| + public void setUp() throws Exception {
|
| + super.setUp();
|
| + }
|
| +
|
| + @Override
|
| public void tearDown() throws Exception {
|
| if (mActivity != null) mActivity.finish();
|
| super.tearDown();
|
|
|