| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.sync.signin; | 5 package org.chromium.components.sync.signin; |
| 6 | 6 |
| 7 import android.accounts.Account; | 7 import android.accounts.Account; |
| 8 import android.accounts.AccountManager; | 8 import android.accounts.AccountManager; |
| 9 import android.accounts.AccountManagerCallback; | 9 import android.accounts.AccountManagerCallback; |
| 10 import android.accounts.AccountManagerFuture; | 10 import android.accounts.AccountManagerFuture; |
| 11 import android.accounts.AuthenticatorDescription; | 11 import android.accounts.AuthenticatorDescription; |
| 12 import android.accounts.AuthenticatorException; | 12 import android.accounts.AuthenticatorException; |
| 13 import android.accounts.OperationCanceledException; | 13 import android.accounts.OperationCanceledException; |
| 14 import android.content.Context; | 14 import android.content.Context; |
| 15 import android.os.AsyncTask; | 15 import android.os.AsyncTask; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 28 | 28 |
| 29 import java.io.IOException; | 29 import java.io.IOException; |
| 30 import java.util.concurrent.TimeUnit; | 30 import java.util.concurrent.TimeUnit; |
| 31 | 31 |
| 32 /** | 32 /** |
| 33 * Default implementation of {@link AccountManagerDelegate} which delegates all
calls to the | 33 * Default implementation of {@link AccountManagerDelegate} which delegates all
calls to the |
| 34 * Android account manager. | 34 * Android account manager. |
| 35 */ | 35 */ |
| 36 @MainDex | 36 @MainDex |
| 37 public class SystemAccountManagerDelegate implements AccountManagerDelegate { | 37 public class SystemAccountManagerDelegate implements AccountManagerDelegate { |
| 38 | |
| 39 private final AccountManager mAccountManager; | 38 private final AccountManager mAccountManager; |
| 40 private final Context mApplicationContext; | 39 private final Context mApplicationContext; |
| 41 private static final String TAG = "Auth"; | 40 private static final String TAG = "Auth"; |
| 42 | 41 |
| 43 public SystemAccountManagerDelegate(Context context) { | 42 public SystemAccountManagerDelegate(Context context) { |
| 44 mApplicationContext = context.getApplicationContext(); | 43 mApplicationContext = context.getApplicationContext(); |
| 45 mAccountManager = AccountManager.get(context.getApplicationContext()); | 44 mAccountManager = AccountManager.get(context.getApplicationContext()); |
| 46 } | 45 } |
| 47 | 46 |
| 48 @Override | 47 @Override |
| 49 public Account[] getAccountsByType(String type) { | 48 public Account[] getAccountsByType(String type) { |
| 50 if (!AccountManagerHelper.get(mApplicationContext).hasGetAccountsPermiss
ion()) { | 49 if (!AccountManagerHelper.get(mApplicationContext).hasGetAccountsPermiss
ion()) { |
| 51 return new Account[]{}; | 50 return new Account[] {}; |
| 52 } | 51 } |
| 53 long now = SystemClock.elapsedRealtime(); | 52 long now = SystemClock.elapsedRealtime(); |
| 54 Account[] accounts = mAccountManager.getAccountsByType(type); | 53 Account[] accounts = mAccountManager.getAccountsByType(type); |
| 55 long elapsed = SystemClock.elapsedRealtime() - now; | 54 long elapsed = SystemClock.elapsedRealtime() - now; |
| 56 recordElapsedTimeHistogram("Signin.AndroidGetAccountsTime_AccountManager
", elapsed); | 55 recordElapsedTimeHistogram("Signin.AndroidGetAccountsTime_AccountManager
", elapsed); |
| 57 return accounts; | 56 return accounts; |
| 58 } | 57 } |
| 59 | 58 |
| 60 @Override | 59 @Override |
| 61 public void getAccountsByType(final String type, final Callback<Account[]> c
allback) { | 60 public void getAccountsByType(final String type, final Callback<Account[]> c
allback) { |
| 62 new AsyncTask<Void, Void, Account[]>() { | 61 new AsyncTask<Void, Void, Account[]>() { |
| 63 @Override | 62 @Override |
| 64 protected Account[] doInBackground(Void... params) { | 63 protected Account[] doInBackground(Void... params) { |
| 65 return getAccountsByType(type); | 64 return getAccountsByType(type); |
| 66 } | 65 } |
| 67 | 66 |
| 68 @Override | 67 @Override |
| 69 protected void onPostExecute(Account[] accounts) { | 68 protected void onPostExecute(Account[] accounts) { |
| 70 callback.onResult(accounts); | 69 callback.onResult(accounts); |
| 71 } | 70 } |
| 72 }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); | 71 }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); |
| 73 } | 72 } |
| 74 | 73 |
| 75 @Override | 74 @Override |
| 76 public String getAuthToken(Account account, String authTokenScope) throws Au
thException { | 75 public String getAuthToken(Account account, String authTokenScope) throws Au
thException { |
| 77 assert !ThreadUtils.runningOnUiThread(); | 76 assert !ThreadUtils.runningOnUiThread(); |
| 78 assert AccountManagerHelper.GOOGLE_ACCOUNT_TYPE.equals(account.type); | 77 assert AccountManagerHelper.GOOGLE_ACCOUNT_TYPE.equals(account.type); |
| 79 try { | 78 try { |
| 80 return GoogleAuthUtil.getTokenWithNotification(mApplicationContext,
account, | 79 return GoogleAuthUtil.getTokenWithNotification( |
| 81 authTokenScope, null); | 80 mApplicationContext, account, authTokenScope, null); |
| 82 } catch (GoogleAuthException ex) { | 81 } catch (GoogleAuthException ex) { |
| 83 // This case includes a UserRecoverableNotifiedException, but most c
lients will have | 82 // This case includes a UserRecoverableNotifiedException, but most c
lients will have |
| 84 // their own retry mechanism anyway. | 83 // their own retry mechanism anyway. |
| 85 // TODO(bauerb): Investigate integrating the callback with Connectio
nRetry. | 84 // TODO(bauerb): Investigate integrating the callback with Connectio
nRetry. |
| 86 throw new AuthException(false /* isTransientError */, ex); | 85 throw new AuthException(false /* isTransientError */, ex); |
| 87 } catch (IOException ex) { | 86 } catch (IOException ex) { |
| 88 throw new AuthException(true /* isTransientError */, ex); | 87 throw new AuthException(true /* isTransientError */, ex); |
| 89 } | 88 } |
| 90 } | 89 } |
| 91 | 90 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 * process has been initialized. | 140 * process has been initialized. |
| 142 * | 141 * |
| 143 * @param histogramName the name of the histogram. | 142 * @param histogramName the name of the histogram. |
| 144 * @param elapsedMs the elapsed time in milliseconds. | 143 * @param elapsedMs the elapsed time in milliseconds. |
| 145 */ | 144 */ |
| 146 protected static void recordElapsedTimeHistogram(String histogramName, long
elapsedMs) { | 145 protected static void recordElapsedTimeHistogram(String histogramName, long
elapsedMs) { |
| 147 if (!LibraryLoader.isInitialized()) return; | 146 if (!LibraryLoader.isInitialized()) return; |
| 148 RecordHistogram.recordTimesHistogram(histogramName, elapsedMs, TimeUnit.
MILLISECONDS); | 147 RecordHistogram.recordTimesHistogram(histogramName, elapsedMs, TimeUnit.
MILLISECONDS); |
| 149 } | 148 } |
| 150 } | 149 } |
| OLD | NEW |