From 4ea70a23ea0a5df44028e5dabdf2a2a8fc5adc2a Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Fri, 5 Jan 2018 13:52:17 +0000 Subject: Modify android.test.runner to use new mock APIs Previous change added some new public APIs to allow the android.test.runner classes to be built against the public API stubs rather than the internal classes. This change updates the android.test.runner classes to use that new API. This in turn is preparation for building an android.test.legacy library that can be safely statically included in APKs. Bug: 30188076 Test: make checkbuild (cherry picked from commit 20af1df63f77f6b3ab12fd6221f581fe84182091) Merged-In: I302626abb7e048ef0c3169e9a5209b85f2f87d34 Change-Id: Ie05a17598fcabc1189cacc912c01a25782ebd29c --- test-runner/src/android/test/IsolatedContext.java | 79 +--------------------- .../src/android/test/ProviderTestCase2.java | 3 +- .../android/test/RenamingDelegatingContext.java | 3 +- test-runner/src/android/test/ServiceTestCase.java | 11 +-- 4 files changed, 10 insertions(+), 86 deletions(-) diff --git a/test-runner/src/android/test/IsolatedContext.java b/test-runner/src/android/test/IsolatedContext.java index 0b77c0062dfb..6e4c41eef81c 100644 --- a/test-runner/src/android/test/IsolatedContext.java +++ b/test-runner/src/android/test/IsolatedContext.java @@ -17,12 +17,6 @@ package android.test; 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.accounts.Account; import android.content.ContextWrapper; import android.content.ContentResolver; import android.content.Intent; @@ -32,12 +26,10 @@ import android.content.BroadcastReceiver; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.net.Uri; -import android.os.Handler; +import android.test.mock.MockAccountManager; import java.io.File; -import java.io.IOException; import java.util.ArrayList; -import java.util.concurrent.TimeUnit; import java.util.List; @@ -52,7 +44,7 @@ import java.util.List; public class IsolatedContext extends ContextWrapper { private ContentResolver mResolver; - private final MockAccountManager mMockAccountManager; + private final AccountManager mMockAccountManager; private List mBroadcastIntents = new ArrayList<>(); @@ -60,7 +52,7 @@ public class IsolatedContext extends ContextWrapper { ContentResolver resolver, Context targetContext) { super(targetContext); mResolver = resolver; - mMockAccountManager = new MockAccountManager(); + mMockAccountManager = MockAccountManager.newMockAccountManager(IsolatedContext.this); } /** Returns the list of intents that were broadcast since the last call to this method. */ @@ -123,71 +115,6 @@ public class IsolatedContext extends ContextWrapper { return null; } - private class MockAccountManager extends AccountManager { - public MockAccountManager() { - super(IsolatedContext.this, null /* IAccountManager */, null /* handler */); - } - - public void addOnAccountsUpdatedListener(OnAccountsUpdateListener listener, - Handler handler, boolean updateImmediately) { - // do nothing - } - - public Account[] getAccounts() { - return new Account[]{}; - } - - public AccountManagerFuture getAccountsByTypeAndFeatures( - final String type, final String[] features, - AccountManagerCallback callback, Handler handler) { - return new MockAccountManagerFuture(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 class MockAccountManagerFuture - implements AccountManagerFuture { - - T mResult; - - public 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(); - } - } - - } - @Override public File getFilesDir() { return new File("/dev/null"); diff --git a/test-runner/src/android/test/ProviderTestCase2.java b/test-runner/src/android/test/ProviderTestCase2.java index 1fa633e26961..be18b53059f3 100644 --- a/test-runner/src/android/test/ProviderTestCase2.java +++ b/test-runner/src/android/test/ProviderTestCase2.java @@ -21,6 +21,7 @@ import android.content.ContentResolver; import android.content.Context; import android.content.pm.ProviderInfo; import android.content.res.Resources; +import android.test.mock.MockContentProvider; import android.test.mock.MockContext; import android.test.mock.MockContentResolver; import android.database.DatabaseUtils; @@ -152,7 +153,7 @@ public abstract class ProviderTestCase2 extends Andro T instance = providerClass.newInstance(); ProviderInfo providerInfo = new ProviderInfo(); providerInfo.authority = authority; - instance.attachInfoForTesting(context, providerInfo); + MockContentProvider.attachInfoForTesting(instance, context, providerInfo); return instance; } diff --git a/test-runner/src/android/test/RenamingDelegatingContext.java b/test-runner/src/android/test/RenamingDelegatingContext.java index fd3332154611..10ccebc42dd0 100644 --- a/test-runner/src/android/test/RenamingDelegatingContext.java +++ b/test-runner/src/android/test/RenamingDelegatingContext.java @@ -21,6 +21,7 @@ import android.content.ContextWrapper; import android.content.ContentProvider; import android.database.DatabaseErrorHandler; import android.database.sqlite.SQLiteDatabase; +import android.test.mock.MockContentProvider; import android.util.Log; import java.io.File; @@ -71,7 +72,7 @@ public class RenamingDelegatingContext extends ContextWrapper { if (allowAccessToExistingFilesAndDbs) { mContext.makeExistingFilesAndDbsAccessible(); } - mProvider.attachInfoForTesting(mContext, null); + MockContentProvider.attachInfoForTesting(mProvider, mContext, null); return mProvider; } diff --git a/test-runner/src/android/test/ServiceTestCase.java b/test-runner/src/android/test/ServiceTestCase.java index c8ff0f904d6d..cd54955f22fa 100644 --- a/test-runner/src/android/test/ServiceTestCase.java +++ b/test-runner/src/android/test/ServiceTestCase.java @@ -23,6 +23,7 @@ import android.content.Intent; import android.os.IBinder; import android.test.mock.MockApplication; +import android.test.mock.MockService; import java.util.Random; /** @@ -163,14 +164,8 @@ public abstract class ServiceTestCase extends AndroidTestCase if (getApplication() == null) { setApplication(new MockApplication()); } - mService.attach( - getContext(), - null, // ActivityThread not actually used in Service - mServiceClass.getName(), - null, // token not needed when not talking with the activity manager - getApplication(), - null // mocked services don't talk with the activity manager - ); + MockService.attachForTesting( + mService, getContext(), mServiceClass.getName(), getApplication()); assertNotNull(mService); -- cgit v1.2.3-59-g8ed1b