// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package org.chromium.sync.signin; import android.accounts.Account; import android.accounts.AccountManagerCallback; import android.accounts.AccountManagerFuture; import android.accounts.AuthenticatorDescription; import android.accounts.AuthenticatorException; import android.accounts.OperationCanceledException; import android.app.Activity; import android.os.Bundle; import android.os.Handler; import java.io.IOException; /** * Wrapper around the Android account manager, to facilitate dependency injection during testing. */ public interface AccountManagerDelegate { Account[] getAccountsByType(String type); AccountManagerFuture<Bundle> getAuthToken(Account account, String authTokenType, boolean notifyAuthFailure, AccountManagerCallback<Bundle> callback, Handler handler); AccountManagerFuture<Bundle> getAuthToken(Account account, String authTokenType, Bundle options, Activity activity, AccountManagerCallback<Bundle> callback, Handler handler); void invalidateAuthToken(String accountType, String authToken); String blockingGetAuthToken(Account account, String authTokenType, boolean notifyAuthFailure) throws OperationCanceledException, IOException, AuthenticatorException; Account[] getAccounts(); boolean addAccountExplicitly(Account account, String password, Bundle userdata); AccountManagerFuture<Boolean> removeAccount(Account account, AccountManagerCallback<Boolean> callback, Handler handler); String getPassword(Account account); void setPassword(Account account, String password); void clearPassword(Account account); AccountManagerFuture<Bundle> confirmCredentials(Account account, Bundle bundle, Activity activity, AccountManagerCallback<Bundle> callback, Handler handler); String peekAuthToken(Account account, String authTokenType); AuthenticatorDescription[] getAuthenticatorTypes(); }