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