diff options
-rw-r--r-- | sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java | 37 |
1 files changed, 20 insertions, 17 deletions
diff --git a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java index 5c1ec826..882f90d 100644 --- a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java +++ b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java @@ -26,6 +26,7 @@ import java.util.ArrayList; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; import java.util.List; +import javax.annotation.Nullable; /** * AccountManagerHelper wraps our access of AccountManager in Android. @@ -153,18 +154,12 @@ public class AccountManagerHelper { * * - Assumes that the account is a valid account. */ - public void getAuthTokenFromForeground(Account account, String authTokenType, + public void getAuthTokenFromForeground(Activity activity, Account account, String authTokenType, GetAuthTokenCallback callback) { AtomicInteger numTries = new AtomicInteger(0); AtomicBoolean errorEncountered = new AtomicBoolean(false); - getAuthTokenAsynchronously(account, authTokenType, callback, numTries, errorEncountered, - null); - } - - @Deprecated - public void getAuthTokenFromForeground(Activity activity, Account account, - String authTokenType, GetAuthTokenCallback callback) { - getAuthTokenFromForeground(account, authTokenType, callback); + getAuthTokenAsynchronously(activity, account, authTokenType, callback, numTries, + errorEncountered, null); } private class ConnectionRetry implements NetworkChangeNotifier.ConnectionTypeObserver { @@ -192,7 +187,7 @@ public class AccountManagerHelper { } if (NetworkChangeNotifier.isOnline()) { NetworkChangeNotifier.removeConnectionTypeObserver(this); - getAuthTokenAsynchronously(mAccount, mAuthTokenType, mCallback, mNumTries, + getAuthTokenAsynchronously(null, mAccount, mAuthTokenType, mCallback, mNumTries, mErrorEncountered, this); } } @@ -229,16 +224,24 @@ public class AccountManagerHelper { return null; } - private void getAuthTokenAsynchronously(final Account account, final String authTokenType, - final GetAuthTokenCallback callback, final AtomicInteger numTries, - final AtomicBoolean errorEncountered, final ConnectionRetry retry) { - final AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken(account, - authTokenType, false, null, null); + private void getAuthTokenAsynchronously(@Nullable Activity activity, final Account account, + final String authTokenType, final GetAuthTokenCallback callback, + final AtomicInteger numTries, final AtomicBoolean errorEncountered, + final ConnectionRetry retry) { + AccountManagerFuture<Bundle> future; + if (numTries.get() == 0 && activity != null) { + future = mAccountManager.getAuthToken( + account, authTokenType, null, activity, null, null); + } else { + future = mAccountManager.getAuthToken( + account, authTokenType, false, null, null); + } + final AccountManagerFuture<Bundle> finalFuture = future; errorEncountered.set(false); new AsyncTask<Void, Void, String>() { @Override public String doInBackground(Void... params) { - return getAuthTokenInner(future, errorEncountered); + return getAuthTokenInner(finalFuture, errorEncountered); } @Override public void onPostExecute(String authToken) { @@ -301,6 +304,6 @@ public class AccountManagerHelper { AtomicInteger numTries = new AtomicInteger(0); AtomicBoolean errorEncountered = new AtomicBoolean(false); getAuthTokenAsynchronously( - account, authTokenType, callback, numTries, errorEncountered, null); + null, account, authTokenType, callback, numTries, errorEncountered, null); } } |