diff options
Diffstat (limited to 'test-mock/src/android/test/mock/MockAccountManager.java')
-rw-r--r-- | test-mock/src/android/test/mock/MockAccountManager.java | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/test-mock/src/android/test/mock/MockAccountManager.java b/test-mock/src/android/test/mock/MockAccountManager.java new file mode 100644 index 000000000000..c9b4c7ba0f8f --- /dev/null +++ b/test-mock/src/android/test/mock/MockAccountManager.java @@ -0,0 +1,119 @@ +/* + * 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(); + } + } +} |