diff options
author | rogerta <rogerta@chromium.org> | 2015-09-02 13:20:08 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-02 20:21:27 +0000 |
commit | 4ccab513683dd36fcffa2b3eca9f4803d9243d25 (patch) | |
tree | 85c993379d3092407c7b65e3f5a56f7bdcbe8327 /sync | |
parent | f727702e5bb16c054d5bff3c56e8c2826ca732b7 (diff) | |
download | chromium_src-4ccab513683dd36fcffa2b3eca9f4803d9243d25.zip chromium_src-4ccab513683dd36fcffa2b3eca9f4803d9243d25.tar.gz chromium_src-4ccab513683dd36fcffa2b3eca9f4803d9243d25.tar.bz2 |
A canceled request for a profile download is causing the token service to remember this as an error
for the account.
BUG=520400,524478
Review URL: https://codereview.chromium.org/1317873002
Cr-Commit-Position: refs/heads/master@{#347007}
Diffstat (limited to 'sync')
-rw-r--r-- | sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java | 47 |
1 files changed, 25 insertions, 22 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 dbe1638..d10991c 100644 --- a/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java +++ b/sync/android/java/src/org/chromium/sync/signin/AccountManagerHelper.java @@ -77,8 +77,11 @@ public class AccountManagerHelper { * Invoked on the UI thread once a token has been provided by the AccountManager. * @param token Auth token, or null if no token is available (bad credentials, * permission denied, etc). + * @param isTransientError If the token is null, then this parameter indicates + * if the error is transient or persistent. If token is non-null, this + * parameter is not used. */ - void tokenAvailable(String token); + void tokenAvailable(String token, boolean isTransientError); } /** @@ -233,8 +236,8 @@ public class AccountManagerHelper { public String getAuthTokenFromBackground(Account account, String authTokenType) { AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken( account, authTokenType, true, null, null); - AtomicBoolean errorEncountered = new AtomicBoolean(false); - return getAuthTokenInner(future, errorEncountered); + AtomicBoolean isTransientError = new AtomicBoolean(false); + return getAuthTokenInner(future, isTransientError); } /** @@ -247,9 +250,9 @@ public class AccountManagerHelper { public void getAuthTokenFromForeground(Activity activity, Account account, String authTokenType, GetAuthTokenCallback callback) { AtomicInteger numTries = new AtomicInteger(0); - AtomicBoolean errorEncountered = new AtomicBoolean(false); + AtomicBoolean isTransientError = new AtomicBoolean(false); getAuthTokenAsynchronously(activity, account, authTokenType, callback, numTries, - errorEncountered, null); + isTransientError, null); } private class ConnectionRetry implements NetworkChangeNotifier.ConnectionTypeObserver { @@ -257,15 +260,15 @@ public class AccountManagerHelper { private final String mAuthTokenType; private final GetAuthTokenCallback mCallback; private final AtomicInteger mNumTries; - private final AtomicBoolean mErrorEncountered; + private final AtomicBoolean mIsTransientError; ConnectionRetry(Account account, String authTokenType, GetAuthTokenCallback callback, - AtomicInteger numTries, AtomicBoolean errorEncountered) { + AtomicInteger numTries, AtomicBoolean isTransientError) { mAccount = account; mAuthTokenType = authTokenType; mCallback = callback; mNumTries = numTries; - mErrorEncountered = errorEncountered; + mIsTransientError = isTransientError; } @Override @@ -278,7 +281,7 @@ public class AccountManagerHelper { if (NetworkChangeNotifier.isOnline()) { NetworkChangeNotifier.removeConnectionTypeObserver(this); getAuthTokenAsynchronously(null, mAccount, mAuthTokenType, mCallback, mNumTries, - mErrorEncountered, this); + mIsTransientError, this); } } } @@ -296,7 +299,7 @@ public class AccountManagerHelper { // Gets the auth token synchronously private String getAuthTokenInner(AccountManagerFuture<Bundle> future, - AtomicBoolean errorEncountered) { + AtomicBoolean isTransientError) { try { Bundle result = future.getResult(); if (result != null) { @@ -310,54 +313,54 @@ public class AccountManagerHelper { Log.w(TAG, "Auth token - authenticator exception", e); } catch (IOException e) { Log.w(TAG, "Auth token - IO exception", e); - errorEncountered.set(true); + isTransientError.set(true); } return null; } private void getAuthTokenAsynchronously(@Nullable Activity activity, final Account account, final String authTokenType, final GetAuthTokenCallback callback, - final AtomicInteger numTries, final AtomicBoolean errorEncountered, + final AtomicInteger numTries, final AtomicBoolean isTransientError, final ConnectionRetry retry) { // Return null token for no USE_CREDENTIALS permission. if (!hasUseCredentialsPermission()) { ThreadUtils.runOnUiThread(new Runnable() { @Override public void run() { - callback.tokenAvailable(null); + callback.tokenAvailable(null, false); } }); return; } final AccountManagerFuture<Bundle> future = mAccountManager.getAuthToken( account, authTokenType, true, null, null); - errorEncountered.set(false); + isTransientError.set(false); new AsyncTask<Void, Void, String>() { @Override public String doInBackground(Void... params) { - return getAuthTokenInner(future, errorEncountered); + return getAuthTokenInner(future, isTransientError); } @Override public void onPostExecute(String authToken) { onGotAuthTokenResult(account, authTokenType, authToken, callback, numTries, - errorEncountered, retry); + isTransientError, retry); } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } private void onGotAuthTokenResult(Account account, String authTokenType, String authToken, - GetAuthTokenCallback callback, AtomicInteger numTries, AtomicBoolean errorEncountered, + GetAuthTokenCallback callback, AtomicInteger numTries, AtomicBoolean isTransientError, ConnectionRetry retry) { - if (authToken != null || !errorEncountered.get() + if (authToken != null || !isTransientError.get() || numTries.incrementAndGet() == MAX_TRIES || !NetworkChangeNotifier.isInitialized()) { - callback.tokenAvailable(authToken); + callback.tokenAvailable(authToken, isTransientError.get()); return; } if (retry == null) { ConnectionRetry newRetry = new ConnectionRetry(account, authTokenType, callback, - numTries, errorEncountered); + numTries, isTransientError); NetworkChangeNotifier.addConnectionTypeObserver(newRetry); } else { NetworkChangeNotifier.addConnectionTypeObserver(retry); @@ -373,9 +376,9 @@ public class AccountManagerHelper { String authTokenType, GetAuthTokenCallback callback) { invalidateAuthToken(authToken); AtomicInteger numTries = new AtomicInteger(0); - AtomicBoolean errorEncountered = new AtomicBoolean(false); + AtomicBoolean isTransientError = new AtomicBoolean(false); getAuthTokenAsynchronously( - null, account, authTokenType, callback, numTries, errorEncountered, null); + null, account, authTokenType, callback, numTries, isTransientError, null); } /** |