| /* |
| * Copyright (C) 2017 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package android.test.mock; |
| |
| import android.accounts.Account; |
| import android.accounts.AccountManager; |
| import android.accounts.AccountManagerCallback; |
| import android.accounts.AccountManagerFuture; |
| import android.accounts.AuthenticatorException; |
| import android.accounts.OnAccountsUpdateListener; |
| import android.accounts.OperationCanceledException; |
| import android.content.Context; |
| import android.os.Handler; |
| import java.io.IOException; |
| import java.util.concurrent.TimeUnit; |
| |
| /** |
| * A mock {@link android.accounts.AccountManager} class. |
| * |
| * <p>Provided for use by {@code android.test.IsolatedContext}. |
| * |
| * @deprecated Use a mocking framework like <a href="https://github.com/mockito/mockito">Mockito</a>. |
| * New tests should be written using the |
| * <a href="{@docRoot} |
| * tools/testing-support-library/index.html">Android Testing Support Library</a>. |
| */ |
| @Deprecated |
| public class MockAccountManager { |
| |
| /** |
| * Create a new mock {@link AccountManager} instance. |
| * |
| * @param context the {@link Context} to which the returned object belongs. |
| * @return the new instance. |
| */ |
| public static AccountManager newMockAccountManager(Context context) { |
| return new MockAccountManagerImpl(context); |
| } |
| |
| private MockAccountManager() { |
| } |
| |
| private static class MockAccountManagerImpl extends AccountManager { |
| |
| MockAccountManagerImpl(Context context) { |
| super(context, null /* IAccountManager */, null /* handler */); |
| } |
| |
| public void addOnAccountsUpdatedListener(OnAccountsUpdateListener listener, |
| Handler handler, boolean updateImmediately) { |
| // do nothing |
| } |
| |
| public Account[] getAccounts() { |
| return new Account[] {}; |
| } |
| |
| public AccountManagerFuture<Account[]> getAccountsByTypeAndFeatures( |
| final String type, final String[] features, |
| AccountManagerCallback<Account[]> callback, Handler handler) { |
| return new MockAccountManagerFuture<Account[]>(new Account[0]); |
| } |
| |
| public String blockingGetAuthToken(Account account, String authTokenType, |
| boolean notifyAuthFailure) |
| throws OperationCanceledException, IOException, AuthenticatorException { |
| return null; |
| } |
| } |
| |
| /** |
| * A very simple AccountManagerFuture class |
| * that returns what ever was passed in |
| */ |
| private static class MockAccountManagerFuture<T> |
| implements AccountManagerFuture<T> { |
| |
| T mResult; |
| |
| MockAccountManagerFuture(T result) { |
| mResult = result; |
| } |
| |
| public boolean cancel(boolean mayInterruptIfRunning) { |
| return false; |
| } |
| |
| public boolean isCancelled() { |
| return false; |
| } |
| |
| public boolean isDone() { |
| return true; |
| } |
| |
| public T getResult() |
| throws OperationCanceledException, IOException, AuthenticatorException { |
| return mResult; |
| } |
| |
| public T getResult(long timeout, TimeUnit unit) |
| throws OperationCanceledException, IOException, AuthenticatorException { |
| return getResult(); |
| } |
| } |
| } |