| Index: chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
| index 66d20a5a0a2f54ce6622f13bbcea356a99573abd..4b31f5b46c35bce9c94e4e4084e87a97b51f0b5f 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivity.java
|
| @@ -27,6 +27,7 @@ import org.chromium.chrome.browser.net.spdyproxy.DataReductionProxySettings;
|
| import org.chromium.chrome.browser.preferences.datareduction.DataReductionPromoUtils;
|
| import org.chromium.chrome.browser.preferences.datareduction.DataReductionProxyUma;
|
| import org.chromium.chrome.browser.profiles.Profile;
|
| +import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider;
|
| import org.chromium.chrome.browser.util.IntentUtils;
|
|
|
| import java.lang.ref.WeakReference;
|
| @@ -46,6 +47,24 @@ import java.util.concurrent.Callable;
|
| * The activity might be run more than once, e.g. 1) for ToS and sign-in, and 2) for intro.
|
| */
|
| public class FirstRunActivity extends AsyncInitializationActivity implements FirstRunPageDelegate {
|
| + /** Alerted about various events when FirstRunActivity performs them. */
|
| + public interface FirstRunActivityObserver {
|
| + /** See {@link #onFlowIsKnown}. */
|
| + void onFlowIsKnown();
|
| +
|
| + /** See {@link #acceptTermsOfService}. */
|
| + void onAcceptTermsOfService();
|
| +
|
| + /** See {@link #jumpToPage}. */
|
| + void onJumpToPage(int position);
|
| +
|
| + /** Called when First Run is completed. */
|
| + void onUpdateCachedEngineName();
|
| +
|
| + /** See {@link #abortFirstRunExperience}. */
|
| + void onAbortFirstRunExperience();
|
| + }
|
| +
|
| protected static final String TAG = "FirstRunActivity";
|
|
|
| // Incoming parameters:
|
| @@ -95,6 +114,8 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
| @VisibleForTesting
|
| static FirstRunGlue sGlue = new FirstRunGlueImpl();
|
|
|
| + private static FirstRunActivityObserver sObserver;
|
| +
|
| private boolean mShowWelcomePage = true;
|
|
|
| private String mResultSignInAccountName;
|
| @@ -241,6 +262,7 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
| skipPagesIfNecessary();
|
| }
|
|
|
| + if (sObserver != null) sObserver.onFlowIsKnown();
|
| recordFreProgressHistogram(mFreProgressStates.get(0));
|
| }
|
| };
|
| @@ -391,6 +413,7 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
| finishAllTheActivities(getLocalClassName(), Activity.RESULT_CANCELED, intent);
|
|
|
| sendPendingIntentIfNecessary(false);
|
| + if (sObserver != null) sObserver.onAbortFirstRunExperience();
|
| }
|
|
|
| @Override
|
| @@ -442,6 +465,10 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
| resultData.putExtras(mFreProperties);
|
| finishAllTheActivities(getLocalClassName(), Activity.RESULT_OK, resultData);
|
|
|
| + // Update the search engine name cached by the widget.
|
| + SearchWidgetProvider.updateCachedEngineName();
|
| + if (sObserver != null) sObserver.onUpdateCachedEngineName();
|
| +
|
| sendPendingIntentIfNecessary(true);
|
| }
|
|
|
| @@ -464,7 +491,9 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
|
|
| @Override
|
| public boolean didAcceptTermsOfService() {
|
| - return sGlue.didAcceptTermsOfService(getApplicationContext());
|
| + boolean result = sGlue.didAcceptTermsOfService(getApplicationContext());
|
| + if (sObserver != null) sObserver.onAcceptTermsOfService();
|
| + return result;
|
| }
|
|
|
| @Override
|
| @@ -546,6 +575,8 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
| * @param position A page index to transition to.
|
| */
|
| private boolean jumpToPage(int position) {
|
| + if (sObserver != null) sObserver.onJumpToPage(position);
|
| +
|
| if (mShowWelcomePage && !didAcceptTermsOfService()) {
|
| return position == 0;
|
| }
|
| @@ -603,9 +634,9 @@ public class FirstRunActivity extends AsyncInitializationActivity implements Fir
|
| CustomTabActivity.showInfoPage(this, getString(url));
|
| }
|
|
|
| - /** Returns whether or not First Run is ready for interaction. */
|
| @VisibleForTesting
|
| - public boolean isPostNativePageSequenceCreated() {
|
| - return mPostNativePageSequenceCreated;
|
| + public static void setObserverForTest(FirstRunActivityObserver observer) {
|
| + assert sObserver == null;
|
| + sObserver = observer;
|
| }
|
| }
|
|
|