Chromium Code Reviews| Index: chrome/android/java/src/org/chromium/chrome/browser/signin/OAuth2TokenService.java |
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/OAuth2TokenService.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/OAuth2TokenService.java |
| index 7f6737d1fddc239855f021c9003c76f11162601a..05e45c6d7d49f55ae86c17c64bb7eeb6fe6b8cb5 100644 |
| --- a/chrome/android/java/src/org/chromium/chrome/browser/signin/OAuth2TokenService.java |
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/OAuth2TokenService.java |
| @@ -7,6 +7,7 @@ package org.chromium.chrome.browser.signin; |
| import android.accounts.Account; |
| import android.app.Activity; |
| import android.content.Context; |
| +import android.os.AsyncTask; |
| import android.preference.PreferenceManager; |
| import android.util.Log; |
| @@ -232,10 +233,34 @@ public final class OAuth2TokenService { |
| @CalledByNative |
| public void validateAccounts(Context context, boolean forceNotifications) { |
| ThreadUtils.assertOnUiThread(); |
| - String currentlySignedInAccount = |
| + final String currentlySignedInAccount = |
| ChromeSigninController.get(context).getSignedInAccountName(); |
| - nativeValidateAccounts(mNativeOAuth2TokenServiceDelegateAndroid, currentlySignedInAccount, |
| - forceNotifications); |
| + final String[] accountNames = getSystemAccounts(context); |
| + final boolean fForceNotifications = forceNotifications; |
| + final Context fContext = context; |
| + new AsyncTask<Void, Void, String[]>() { |
| + @Override |
| + public String[] doInBackground(Void... params) { |
| + Log.d(TAG, "Getting id/email mapping"); |
| + if (AccountIdProvider.getInstance() == null) { |
| + AccountIdProvider.setInstance(AccountIdProvider.getGoogleAccountIdProvider()); |
|
Roger Tawa OOO till Jul 10th
2015/08/12 15:28:46
Should already be created by now. Under what case
gogerald1
2015/08/13 18:12:12
AccountIdProvider.setInstance is in GoogleServiceM
|
| + } |
| + AccountIdProvider provider = AccountIdProvider.getInstance(); |
| + String[] accountIds = new String[accountNames.length]; |
| + for (int i = 0; i < accountIds.length; ++i) { |
| + accountIds[i] = provider.getAccountId(fContext, accountNames[i]); |
| + } |
| + return accountIds; |
| + } |
| + @Override |
| + public void onPostExecute(String[] accountIds) { |
| + nativeSeedAccountsInfo( |
| + mNativeOAuth2TokenServiceDelegateAndroid, accountIds, accountNames); |
| + nativeValidateAccounts(mNativeOAuth2TokenServiceDelegateAndroid, |
| + currentlySignedInAccount, fForceNotifications); |
| + } |
| + |
| + }.execute(); |
| } |
| /** |
| @@ -323,4 +348,6 @@ public final class OAuth2TokenService { |
| long nativeOAuth2TokenServiceDelegateAndroid, String accountName); |
| private native void nativeFireRefreshTokensLoadedFromJava( |
| long nativeOAuth2TokenServiceDelegateAndroid); |
| + private native void nativeSeedAccountsInfo( |
| + long nativeOAuth2TokenServiceDelegateAndroid, String[] gaiaids, String[] usernames); |
| } |