Merge "Add apis needed for android.test.legacy"

This commit is contained in:
Paul Duffin
2018-01-09 21:57:14 +00:00
committed by Android (Google) Code Review
4 changed files with 194 additions and 0 deletions

View File

@@ -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 java.lang.String getType(android.net.Uri);
method public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
@@ -289,5 +294,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);
}
}

View File

@@ -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();
}
}
}

View File

@@ -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);
}
}

View File

@@ -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() {
}
}