diff options
author | nyquist@chromium.org <nyquist@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-13 21:53:44 +0000 |
---|---|---|
committer | nyquist@chromium.org <nyquist@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-03-13 21:53:44 +0000 |
commit | 83942e8f3ea49c9c4e184fd3ef1cd0e4eae3eaad (patch) | |
tree | 77ca3a06d3aed8a4c5f7da2aa16f209ff23839dd /sync/android/java | |
parent | aca7e2959c89941a790469f1b6d091a65791976e (diff) | |
download | chromium_src-83942e8f3ea49c9c4e184fd3ef1cd0e4eae3eaad.zip chromium_src-83942e8f3ea49c9c4e184fd3ef1cd0e4eae3eaad.tar.gz chromium_src-83942e8f3ea49c9c4e184fd3ef1cd0e4eae3eaad.tar.bz2 |
Fix a bug that caused AuthToken permission not to be shown on Android
BUG=179188,181579,179844,180259
Review URL: https://codereview.chromium.org/12447017
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@187955 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/android/java')
-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); } } |