diff options
-rw-r--r-- | api/current.txt | 9 | ||||
-rw-r--r-- | test-mock/api/android-test-mock-current.txt | 9 | ||||
-rw-r--r-- | test-mock/src/android/test/mock/MockAccountManager.java | 119 | ||||
-rw-r--r-- | test-mock/src/android/test/mock/MockContentProvider.java | 17 | ||||
-rw-r--r-- | test-mock/src/android/test/mock/MockService.java | 49 |
5 files changed, 203 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt index e047bdc0ef61..14f44ecf7e83 100644 --- a/api/current.txt +++ b/api/current.txt @@ -41672,6 +41672,10 @@ package android.test { package android.test.mock { + public deprecated class MockAccountManager { + method public static android.accounts.AccountManager newMockAccountManager(android.content.Context); + } + public deprecated class MockApplication extends android.app.Application { ctor public MockApplication(); } @@ -41681,6 +41685,7 @@ package android.test.mock { ctor public MockContentProvider(android.content.Context); ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]); method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>); + method public static deprecated void attachInfoForTesting(android.content.ContentProvider, android.content.Context, android.content.pm.ProviderInfo); method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); method public java.lang.String getType(android.net.Uri); method public android.net.Uri insert(android.net.Uri, android.content.ContentValues); @@ -41961,6 +41966,10 @@ package android.test.mock { method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics); } + public deprecated class MockService { + method public static <T extends android.app.Service> void attachForTesting(android.app.Service, android.content.Context, java.lang.String, android.app.Application); + } + } package android.test.suitebuilder { diff --git a/test-mock/api/android-test-mock-current.txt b/test-mock/api/android-test-mock-current.txt index 73f794b8e431..10286c297152 100644 --- a/test-mock/api/android-test-mock-current.txt +++ b/test-mock/api/android-test-mock-current.txt @@ -1,5 +1,9 @@ package android.test.mock { + public deprecated class MockAccountManager { + method public static android.accounts.AccountManager newMockAccountManager(android.content.Context); + } + public deprecated class MockApplication extends android.app.Application { ctor public MockApplication(); } @@ -9,6 +13,7 @@ package android.test.mock { ctor public MockContentProvider(android.content.Context); ctor public MockContentProvider(android.content.Context, java.lang.String, java.lang.String, android.content.pm.PathPermission[]); method public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList<android.content.ContentProviderOperation>); + method public static deprecated void attachInfoForTesting(android.content.ContentProvider, android.content.Context, android.content.pm.ProviderInfo); method public int delete(android.net.Uri, java.lang.String, java.lang.String[]); method public final android.content.IContentProvider getIContentProvider(); method public java.lang.String getType(android.net.Uri); @@ -411,5 +416,9 @@ package android.test.mock { method public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics); } + public deprecated class MockService { + method public static <T extends android.app.Service> void attachForTesting(android.app.Service, android.content.Context, java.lang.String, android.app.Application); + } + } 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(); + } + } +} diff --git a/test-mock/src/android/test/mock/MockContentProvider.java b/test-mock/src/android/test/mock/MockContentProvider.java index d5f3ce880b8f..b917fbd8a1fe 100644 --- a/test-mock/src/android/test/mock/MockContentProvider.java +++ b/test-mock/src/android/test/mock/MockContentProvider.java @@ -277,4 +277,21 @@ public class MockContentProvider extends ContentProvider { public final IContentProvider getIContentProvider() { return mIContentProvider; } + + /** + * Like {@link #attachInfo(Context, android.content.pm.ProviderInfo)}, but for use + * when directly instantiating the provider for testing. + * + * <p>Provided for use by {@code android.test.ProviderTestCase2} and + * {@code android.test.RenamingDelegatingContext}. + * + * @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 static void attachInfoForTesting( + ContentProvider provider, Context context, ProviderInfo providerInfo) { + provider.attachInfoForTesting(context, providerInfo); + } } diff --git a/test-mock/src/android/test/mock/MockService.java b/test-mock/src/android/test/mock/MockService.java new file mode 100644 index 000000000000..dbba4f329eae --- /dev/null +++ b/test-mock/src/android/test/mock/MockService.java @@ -0,0 +1,49 @@ +/* + * 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.app.Application; +import android.app.Service; +import android.content.Context; + +/** + * A mock {@link android.app.Service} class. + * + * <p>Provided for use by {@code android.test.ServiceTestCase}. + * + * @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 MockService { + + public static <T extends Service> void attachForTesting(Service service, Context context, + String serviceClassName, + Application application) { + service.attach( + context, + null, // ActivityThread not actually used in Service + serviceClassName, + null, // token not needed when not talking with the activity manager + application, + null // mocked services don't talk with the activity manager + ); + } + + private MockService() { + } +} |