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

Side by Side Diff: chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/FirstRunTest.java

Issue 2834253002: 🔍 Don't display the search engine until First Run completes (Closed)
Patch Set: Cmments Created 3 years, 7 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 unified diff | Download patch
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chrome.browser.sync; 5 package org.chromium.chrome.browser.sync;
6 6
7 import android.accounts.Account; 7 import android.accounts.Account;
8 import android.app.Activity; 8 import android.app.Activity;
9 import android.app.Instrumentation; 9 import android.app.Instrumentation;
10 import android.app.Instrumentation.ActivityMonitor; 10 import android.app.Instrumentation.ActivityMonitor;
11 import android.content.Context; 11 import android.content.Context;
12 import android.content.Intent; 12 import android.content.Intent;
13 import android.os.Bundle; 13 import android.os.Bundle;
14 import android.support.test.filters.SmallTest; 14 import android.support.test.filters.SmallTest;
15 15
16 import org.chromium.base.ThreadUtils; 16 import org.chromium.base.ThreadUtils;
17 import org.chromium.base.test.util.CallbackHelper;
17 import org.chromium.base.test.util.CommandLineFlags; 18 import org.chromium.base.test.util.CommandLineFlags;
18 import org.chromium.base.test.util.Feature; 19 import org.chromium.base.test.util.Feature;
19 import org.chromium.base.test.util.FlakyTest; 20 import org.chromium.base.test.util.FlakyTest;
20 import org.chromium.base.test.util.RetryOnFailure; 21 import org.chromium.base.test.util.RetryOnFailure;
21 import org.chromium.chrome.browser.ChromeSwitches; 22 import org.chromium.chrome.browser.ChromeSwitches;
22 import org.chromium.chrome.browser.firstrun.FirstRunActivity; 23 import org.chromium.chrome.browser.firstrun.FirstRunActivity;
24 import org.chromium.chrome.browser.firstrun.FirstRunActivity.FirstRunActivityObs erver;
23 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer; 25 import org.chromium.chrome.browser.firstrun.FirstRunFlowSequencer;
24 import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor; 26 import org.chromium.chrome.browser.firstrun.FirstRunSignInProcessor;
25 import org.chromium.chrome.browser.preferences.Preferences; 27 import org.chromium.chrome.browser.preferences.Preferences;
26 import org.chromium.chrome.browser.signin.AccountManagementFragment; 28 import org.chromium.chrome.browser.signin.AccountManagementFragment;
27 import org.chromium.chrome.test.util.ActivityUtils; 29 import org.chromium.chrome.test.util.ActivityUtils;
28 import org.chromium.chrome.test.util.browser.signin.SigninTestUtil; 30 import org.chromium.chrome.test.util.browser.signin.SigninTestUtil;
29 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; 31 import org.chromium.chrome.test.util.browser.sync.SyncTestUtil;
30 import org.chromium.content.browser.test.util.Criteria; 32 import org.chromium.content.browser.test.util.Criteria;
31 import org.chromium.content.browser.test.util.CriteriaHelper; 33 import org.chromium.content.browser.test.util.CriteriaHelper;
32 34
35 import java.util.concurrent.TimeoutException;
36
33 /** 37 /**
34 * Tests for the first run experience. 38 * Tests for the first run experience.
35 */ 39 */
36 @CommandLineFlags.Remove(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE) 40 @CommandLineFlags.Remove(ChromeSwitches.DISABLE_FIRST_RUN_EXPERIENCE)
37 @RetryOnFailure // crbug.com/637448 41 @RetryOnFailure // crbug.com/637448
38 public class FirstRunTest extends SyncTestBase { 42 public class FirstRunTest extends SyncTestBase {
39 private static final String TEST_ACTION = "com.artificial.package.TEST_ACTIO N"; 43 private static final String TEST_ACTION = "com.artificial.package.TEST_ACTIO N";
40 44
41 private static enum ShowSettings { 45 private static enum ShowSettings {
42 YES, 46 YES,
43 NO; 47 NO;
44 } 48 }
45 49
50 private static final class TestObserver implements FirstRunActivityObserver {
51 public final CallbackHelper flowIsKnownCallback = new CallbackHelper();
52
53 @Override
54 public void onFlowIsKnown() {
55 flowIsKnownCallback.notifyCalled();
56 }
57
58 @Override
59 public void onAcceptTermsOfService() {}
60
61 @Override
62 public void onJumpToPage(int position) {}
63
64 @Override
65 public void onUpdateCachedEngineName() {}
66
67 @Override
68 public void onAbortFirstRunExperience() {}
69 }
70
71 private final TestObserver mTestObserver = new TestObserver();
46 private FirstRunActivity mActivity; 72 private FirstRunActivity mActivity;
47 73
48 @Override 74 @Override
49 public void startMainActivity() throws InterruptedException { 75 public void startMainActivity() throws InterruptedException {
76 FirstRunActivity.setObserverForTest(mTestObserver);
77
50 // Starts up and waits for the FirstRunActivity to be ready. 78 // Starts up and waits for the FirstRunActivity to be ready.
51 // This isn't exactly what startMainActivity is supposed to be doing, bu t short of a 79 // This isn't exactly what startMainActivity is supposed to be doing, bu t short of a
52 // refactoring of SyncTestBase to use something other than ChromeTabbedA ctivity, it's the 80 // refactoring of SyncTestBase to use something other than ChromeTabbedA ctivity, it's the
53 // only way to reuse the rest of the setup and initialization code insid e of it. 81 // only way to reuse the rest of the setup and initialization code insid e of it.
54 final Instrumentation instrumentation = getInstrumentation(); 82 final Instrumentation instrumentation = getInstrumentation();
55 final Context context = instrumentation.getTargetContext(); 83 final Context context = instrumentation.getTargetContext();
56 84
57 // Create an Intent that causes Chrome to run. 85 // Create an Intent that causes Chrome to run.
58 final Intent intent = new Intent(TEST_ACTION); 86 final Intent intent = new Intent(TEST_ACTION);
59 intent.setPackage(context.getPackageName()); 87 intent.setPackage(context.getPackageName());
(...skipping 11 matching lines...) Expand all
71 }); 99 });
72 100
73 // Wait for the FRE to be ready to use. 101 // Wait for the FRE to be ready to use.
74 Activity activity = 102 Activity activity =
75 freMonitor.waitForActivityWithTimeout(CriteriaHelper.DEFAULT_MAX _TIME_TO_POLL); 103 freMonitor.waitForActivityWithTimeout(CriteriaHelper.DEFAULT_MAX _TIME_TO_POLL);
76 instrumentation.removeMonitor(freMonitor); 104 instrumentation.removeMonitor(freMonitor);
77 105
78 assertTrue(activity instanceof FirstRunActivity); 106 assertTrue(activity instanceof FirstRunActivity);
79 mActivity = (FirstRunActivity) activity; 107 mActivity = (FirstRunActivity) activity;
80 108
81 CriteriaHelper.pollUiThread(new Criteria() { 109 try {
82 @Override 110 mTestObserver.flowIsKnownCallback.waitForCallback(0);
83 public boolean isSatisfied() { 111 } catch (TimeoutException e) {
84 return mActivity.isPostNativePageSequenceCreated(); 112 fail();
85 } 113 }
86 });
87 114
88 getInstrumentation().waitForIdleSync(); 115 getInstrumentation().waitForIdleSync();
89 } 116 }
90 117
91 @Override 118 @Override
119 public void setUp() throws Exception {
120 super.setUp();
121 }
122
123 @Override
92 public void tearDown() throws Exception { 124 public void tearDown() throws Exception {
93 if (mActivity != null) mActivity.finish(); 125 if (mActivity != null) mActivity.finish();
94 super.tearDown(); 126 super.tearDown();
95 } 127 }
96 128
97 // Test that signing in through FirstRun signs in and starts sync. 129 // Test that signing in through FirstRun signs in and starts sync.
98 /* 130 /*
99 * @SmallTest 131 * @SmallTest
100 * @Feature({"Sync"}) 132 * @Feature({"Sync"})
101 */ 133 */
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 220
189 private void processFirstRunOnUiThread() { 221 private void processFirstRunOnUiThread() {
190 ThreadUtils.runOnUiThreadBlocking(new Runnable() { 222 ThreadUtils.runOnUiThreadBlocking(new Runnable() {
191 @Override 223 @Override
192 public void run() { 224 public void run() {
193 FirstRunSignInProcessor.start(mActivity); 225 FirstRunSignInProcessor.start(mActivity);
194 } 226 }
195 }); 227 });
196 } 228 }
197 } 229 }
OLDNEW
« no previous file with comments | « chrome/android/javatests/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProviderTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698