summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authorrogerta <rogerta@chromium.org>2015-09-02 13:20:08 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-02 20:21:27 +0000
commit4ccab513683dd36fcffa2b3eca9f4803d9243d25 (patch)
tree85c993379d3092407c7b65e3f5a56f7bdcbe8327 /sync
parentf727702e5bb16c054d5bff3c56e8c2826ca732b7 (diff)
downloadchromium_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.java47
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);
}
/**