| Index: chrome/android/java/src/org/chromium/chrome/browser/blimp/ChromeBlimpClientContextDelegate.java
 | 
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/blimp/ChromeBlimpClientContextDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/blimp/ChromeBlimpClientContextDelegate.java
 | 
| index 9cc27c74c543198a17f28d7ddf6b3b83ef151a4a..858108c7681613430c30017948613dc1d9393334 100644
 | 
| --- a/chrome/android/java/src/org/chromium/chrome/browser/blimp/ChromeBlimpClientContextDelegate.java
 | 
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/blimp/ChromeBlimpClientContextDelegate.java
 | 
| @@ -4,12 +4,15 @@
 | 
|  
 | 
|  package org.chromium.chrome.browser.blimp;
 | 
|  
 | 
| -import org.chromium.base.ContextUtils;
 | 
| +import android.content.Context;
 | 
| +
 | 
|  import org.chromium.base.annotations.CalledByNative;
 | 
|  import org.chromium.blimp_public.BlimpClientContext;
 | 
|  import org.chromium.blimp_public.BlimpClientContextDelegate;
 | 
| +import org.chromium.chrome.browser.ApplicationLifetime;
 | 
|  import org.chromium.chrome.browser.profiles.Profile;
 | 
| -import org.chromium.chrome.browser.signin.AccountTrackerService;
 | 
| +import org.chromium.chrome.browser.signin.AccountSigninActivity;
 | 
| +import org.chromium.chrome.browser.signin.SigninAccessPoint;
 | 
|  
 | 
|  /**
 | 
|   * The ChromeBlimpClientContextDelegate for //chrome which provides the necessary functionality
 | 
| @@ -20,9 +23,7 @@ import org.chromium.chrome.browser.signin.AccountTrackerService;
 | 
|   * it, call {@link ChromeBlimpClientContextDelegate#createAndSetDelegateForContext(Profile)}.
 | 
|   * When the delegate should be deleted, a call to {@link #destroy} is required.
 | 
|   */
 | 
| -public class ChromeBlimpClientContextDelegate
 | 
| -        implements BlimpClientContextDelegate,
 | 
| -                   AccountTrackerService.OnSystemAccountsSeededListener {
 | 
| +public class ChromeBlimpClientContextDelegate implements BlimpClientContextDelegate {
 | 
|      /**
 | 
|       * {@link BlimpClientContext} associated with this delegate.
 | 
|       */
 | 
| @@ -51,18 +52,15 @@ public class ChromeBlimpClientContextDelegate
 | 
|      }
 | 
|  
 | 
|      @Override
 | 
| -    public void onSystemAccountsSeedingComplete() {
 | 
| -        AccountTrackerService.get(ContextUtils.getApplicationContext())
 | 
| -                .removeSystemAccountsSeededListener(this);
 | 
| -
 | 
| -        // Start authentication.
 | 
| -        // Must request OAuth2 token after account seeded, or native ProfileOAuth2TokenService might
 | 
| -        // revoke the refresh token during request, making token retrieval flaky.
 | 
| -        mBlimpClientContext.connect();
 | 
| +    public void restartBrowser() {
 | 
| +        ApplicationLifetime.terminate(true);
 | 
|      }
 | 
|  
 | 
|      @Override
 | 
| -    public void onSystemAccountsChanged() {}
 | 
| +    public void startUserSignInFlow(Context context) {
 | 
| +        // TODO(xingliu): Figure out if Blimp should have its own SigninAccessPoint.
 | 
| +        AccountSigninActivity.startAccountSigninActivity(context, SigninAccessPoint.SETTINGS);
 | 
| +    }
 | 
|  
 | 
|      /**
 | 
|       * The pointer to the ChromeBlimpClientContextDelegateAndroid JNI bridge.
 | 
| @@ -80,10 +78,10 @@ public class ChromeBlimpClientContextDelegate
 | 
|          // Set ourselves as the Java delegate object.
 | 
|          mBlimpClientContext.setDelegate(this);
 | 
|  
 | 
| -        // Connect after account seeding finished, if account seeding is already done, listener will
 | 
| -        // immediately get called.
 | 
| -        AccountTrackerService.get(ContextUtils.getApplicationContext())
 | 
| -                .addSystemAccountsSeededListener(this);
 | 
| +        // Connect to engine on start up.
 | 
| +        if (mBlimpClientContext.isBlimpEnabled()) {
 | 
| +            mBlimpClientContext.connect();
 | 
| +        }
 | 
|      }
 | 
|  
 | 
|      @CalledByNative
 | 
| @@ -94,9 +92,6 @@ public class ChromeBlimpClientContextDelegate
 | 
|      public void destroy() {
 | 
|          assert mNativeChromeBlimpClientContextDelegateAndroid != 0;
 | 
|  
 | 
| -        AccountTrackerService.get(ContextUtils.getApplicationContext())
 | 
| -                .removeSystemAccountsSeededListener(this);
 | 
| -
 | 
|          nativeDestroy(mNativeChromeBlimpClientContextDelegateAndroid);
 | 
|      }
 | 
|  
 | 
| 
 |