15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)package org.chromium.sync.signin; 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.accounts.Account; 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.accounts.AccountManager; 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.accounts.AccountManagerCallback; 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.accounts.AccountManagerFuture; 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)import android.accounts.AuthenticatorDescription; 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.accounts.AuthenticatorException; 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.accounts.OperationCanceledException; 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.app.Activity; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.content.Context; 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.os.Bundle; 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import android.os.Handler; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)import java.io.IOException; 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)/** 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Default implementation of {@link AccountManagerDelegate} which delegates all calls to the 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) * Android account manager. 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) */ 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)public class SystemAccountManagerDelegate implements AccountManagerDelegate { 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private final AccountManager mAccountManager; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public SystemAccountManagerDelegate(Context context) { 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) mAccountManager = AccountManager.get(context.getApplicationContext()); 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public Account[] getAccountsByType(String type) { 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.getAccountsByType(type); 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public AccountManagerFuture<Bundle> getAuthToken(Account account, String authTokenType, 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) boolean notifyAuthFailure, AccountManagerCallback<Bundle> callback, Handler handler) { 4158e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch return mAccountManager.getAuthToken(account, authTokenType, null, notifyAuthFailure, 4258e6fbe4ee35d65e14b626c557d37565bf8ad179Ben Murdoch callback, handler); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public AccountManagerFuture<Bundle> getAuthToken(Account account, String authTokenType, 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Bundle options, Activity activity, AccountManagerCallback<Bundle> callback, 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Handler handler) { 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.getAuthToken(account, authTokenType, options, activity, callback, 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) handler); 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void invalidateAuthToken(String accountType, String authToken) { 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mAccountManager.invalidateAuthToken(accountType, authToken); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public String blockingGetAuthToken(Account account, String authTokenType, 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) boolean notifyAuthFailure) 612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) throws OperationCanceledException, IOException, AuthenticatorException { 622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.blockingGetAuthToken(account, authTokenType, notifyAuthFailure); 632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public Account[] getAccounts() { 672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.getAccounts(); 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public boolean addAccountExplicitly(Account account, String password, Bundle userdata) { 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.addAccountExplicitly(account, password, userdata); 732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public AccountManagerFuture<Boolean> removeAccount(Account account, 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AccountManagerCallback<Boolean> callback, Handler handler) { 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.removeAccount(account, callback, handler); 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public String getPassword(Account account) { 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.getPassword(account); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void setPassword(Account account, String password) { 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mAccountManager.setPassword(account, password); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public void clearPassword(Account account) { 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) mAccountManager.clearPassword(account); 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public AccountManagerFuture<Bundle> confirmCredentials(Account account, Bundle bundle, 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Activity activity, AccountManagerCallback<Bundle> callback, Handler handler) { 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.confirmCredentials(account, bundle, activity, callback, handler); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) @Override 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public String peekAuthToken(Account account, String authTokenType) { 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return mAccountManager.peekAuthToken(account, authTokenType); 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) @Override 108c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) public AuthenticatorDescription[] getAuthenticatorTypes() { 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return mAccountManager.getAuthenticatorTypes(); 110c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 112