1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package android.test.mock;
17 
18 import android.accounts.Account;
19 import android.accounts.AccountManager;
20 import android.accounts.AccountManagerCallback;
21 import android.accounts.AccountManagerFuture;
22 import android.accounts.AuthenticatorException;
23 import android.accounts.OnAccountsUpdateListener;
24 import android.accounts.OperationCanceledException;
25 import android.content.Context;
26 import android.os.Handler;
27 import java.io.IOException;
28 import java.util.concurrent.TimeUnit;
29 
30 /**
31  * A mock {@link android.accounts.AccountManager} class.
32  *
33  * <p>Provided for use by {@code android.test.IsolatedContext}.
34  *
35  * @deprecated Use a mocking framework like <a href="https://github.com/mockito/mockito">Mockito</a>.
36  * New tests should be written using the
37  * <a href="{@docRoot}
38  * tools/testing-support-library/index.html">Android Testing Support Library</a>.
39  */
40 @Deprecated
41 public class MockAccountManager {
42 
43     /**
44      * Create a new mock {@link AccountManager} instance.
45      *
46      * @param context the {@link Context} to which the returned object belongs.
47      * @return the new instance.
48      */
newMockAccountManager(Context context)49     public static AccountManager newMockAccountManager(Context context) {
50         return new MockAccountManagerImpl(context);
51     }
52 
MockAccountManager()53     private MockAccountManager() {
54     }
55 
56     private static class MockAccountManagerImpl extends AccountManager {
57 
MockAccountManagerImpl(Context context)58         MockAccountManagerImpl(Context context) {
59             super(context, null /* IAccountManager */, null /* handler */);
60         }
61 
addOnAccountsUpdatedListener(OnAccountsUpdateListener listener, Handler handler, boolean updateImmediately)62         public void addOnAccountsUpdatedListener(OnAccountsUpdateListener listener,
63                 Handler handler, boolean updateImmediately) {
64             // do nothing
65         }
66 
getAccounts()67         public Account[] getAccounts() {
68             return new Account[] {};
69         }
70 
getAccountsByTypeAndFeatures( final String type, final String[] features, AccountManagerCallback<Account[]> callback, Handler handler)71         public AccountManagerFuture<Account[]> getAccountsByTypeAndFeatures(
72                 final String type, final String[] features,
73                 AccountManagerCallback<Account[]> callback, Handler handler) {
74             return new MockAccountManagerFuture<Account[]>(new Account[0]);
75         }
76 
blockingGetAuthToken(Account account, String authTokenType, boolean notifyAuthFailure)77         public String blockingGetAuthToken(Account account, String authTokenType,
78                 boolean notifyAuthFailure)
79                 throws OperationCanceledException, IOException, AuthenticatorException {
80             return null;
81         }
82     }
83 
84     /**
85      * A very simple AccountManagerFuture class
86      * that returns what ever was passed in
87      */
88     private static class MockAccountManagerFuture<T>
89             implements AccountManagerFuture<T> {
90 
91         T mResult;
92 
MockAccountManagerFuture(T result)93         MockAccountManagerFuture(T result) {
94             mResult = result;
95         }
96 
cancel(boolean mayInterruptIfRunning)97         public boolean cancel(boolean mayInterruptIfRunning) {
98             return false;
99         }
100 
isCancelled()101         public boolean isCancelled() {
102             return false;
103         }
104 
isDone()105         public boolean isDone() {
106             return true;
107         }
108 
getResult()109         public T getResult()
110                 throws OperationCanceledException, IOException, AuthenticatorException {
111             return mResult;
112         }
113 
getResult(long timeout, TimeUnit unit)114         public T getResult(long timeout, TimeUnit unit)
115                 throws OperationCanceledException, IOException, AuthenticatorException {
116             return getResult();
117         }
118     }
119 }
120