| Index: sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java
|
| diff --git a/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java b/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java
|
| index 75777dd85acde0e749bc10292bebb132bcc49aca..d90280ab3fd3831e84f42aa09d68cc9bdf7a815e 100644
|
| --- a/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java
|
| +++ b/sync/android/java/src/org/chromium/sync/signin/SystemAccountManagerDelegate.java
|
| @@ -13,14 +13,17 @@ import android.accounts.AuthenticatorException;
|
| import android.accounts.OperationCanceledException;
|
| import android.content.Context;
|
| import android.os.AsyncTask;
|
| -import android.os.Bundle;
|
| -import android.os.Handler;
|
| import android.os.StrictMode;
|
| import android.os.SystemClock;
|
|
|
| +import com.google.android.gms.auth.GoogleAuthException;
|
| +import com.google.android.gms.auth.GoogleAuthUtil;
|
| +import com.google.android.gms.auth.UserRecoverableAuthException;
|
| +
|
| import org.chromium.base.Callback;
|
| import org.chromium.base.Log;
|
| import org.chromium.base.ThreadUtils;
|
| +import org.chromium.base.annotations.MainDex;
|
| import org.chromium.base.library_loader.LibraryLoader;
|
| import org.chromium.base.metrics.RecordHistogram;
|
|
|
| @@ -31,6 +34,7 @@ import java.util.concurrent.TimeUnit;
|
| * Default implementation of {@link AccountManagerDelegate} which delegates all calls to the
|
| * Android account manager.
|
| */
|
| +@MainDex
|
| public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
|
|
| private final AccountManager mAccountManager;
|
| @@ -70,10 +74,18 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
|
| }
|
|
|
| @Override
|
| - public AccountManagerFuture<Bundle> getAuthToken(Account account, String authTokenType,
|
| - boolean notifyAuthFailure, AccountManagerCallback<Bundle> callback, Handler handler) {
|
| - return mAccountManager.getAuthToken(account, authTokenType, null, notifyAuthFailure,
|
| - callback, handler);
|
| + public String getAuthToken(Account account, String authTokenScope) throws AuthException {
|
| + assert !ThreadUtils.runningOnUiThread();
|
| + assert AccountManagerHelper.GOOGLE_ACCOUNT_TYPE.equals(account.type);
|
| + try {
|
| + return GoogleAuthUtil.getToken(mApplicationContext, account, authTokenScope);
|
| + } catch (UserRecoverableAuthException ex) {
|
| + throw new AuthException(false /* isTransientError */, ex.getIntent(), ex);
|
| + } catch (GoogleAuthException ex) {
|
| + throw new AuthException(false /* isTransientError */, null, ex);
|
| + } catch (IOException ex) {
|
| + throw new AuthException(true /* isTransientError */, null, ex);
|
| + }
|
| }
|
|
|
| @Override
|
|
|