From 0eabf0228a17e07ef831bc1ee1951c9697d2a079 Mon Sep 17 00:00:00 2001 From: Fred Quintana Date: Mon, 27 Apr 2009 15:08:17 -0700 Subject: change the IsolatedContext to have a test version of the AccountManager that has no IBinder to the AccountManagerService. --- core/java/android/accounts/AccountManager.java | 9 +++++++++ test-runner/android/test/IsolatedContext.java | 21 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java index 3d21101ef1ac..4fcaa884b1c6 100644 --- a/core/java/android/accounts/AccountManager.java +++ b/core/java/android/accounts/AccountManager.java @@ -67,6 +67,15 @@ public class AccountManager { mMainHandler = new Handler(mContext.getMainLooper()); } + /** + * @hide used for testing only + */ + public AccountManager(Context context, IAccountManager service, Handler handler) { + mContext = context; + mService = service; + mMainHandler = handler; + } + public static AccountManager get(Context context) { return (AccountManager) context.getSystemService(Context.ACCOUNT_SERVICE); } diff --git a/test-runner/android/test/IsolatedContext.java b/test-runner/android/test/IsolatedContext.java index 286666684b88..03d95b722dcd 100644 --- a/test-runner/android/test/IsolatedContext.java +++ b/test-runner/android/test/IsolatedContext.java @@ -2,6 +2,8 @@ package android.test; import com.google.android.collect.Lists; +import android.accounts.AccountManager; +import android.accounts.OnAccountsUpdatedListener; import android.content.ContextWrapper; import android.content.ContentResolver; import android.content.Intent; @@ -11,6 +13,8 @@ import android.content.BroadcastReceiver; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.net.Uri; +import android.os.Handler; +import android.os.Looper; import java.util.List; @@ -21,6 +25,7 @@ import java.util.List; public class IsolatedContext extends ContextWrapper { private ContentResolver mResolver; + private final MockAccountManager mMockAccountManager; private List mBroadcastIntents = Lists.newArrayList(); @@ -28,6 +33,7 @@ public class IsolatedContext extends ContextWrapper { ContentResolver resolver, Context targetContext) { super(targetContext); mResolver = resolver; + mMockAccountManager = new MockAccountManager(); } /** Returns the list of intents that were broadcast since the last call to this method. */ @@ -78,8 +84,21 @@ public class IsolatedContext extends ContextWrapper { @Override public Object getSystemService(String name) { - // No services exist in this context. + if (Context.ACCOUNT_SERVICE.equals(name)) { + return mMockAccountManager; + } + // No other services exist in this context. return null; } + private class MockAccountManager extends AccountManager { + public MockAccountManager() { + super(IsolatedContext.this, null /* IAccountManager */, null /* handler */); + } + + public void addOnAccountsUpdatedListener(OnAccountsUpdatedListener listener, + Handler handler, boolean updateImmediately) { + // do nothing + } + } } -- cgit v1.2.3-59-g8ed1b