package android.test; import com.google.android.collect.Lists; import android.content.ContextWrapper; import android.content.ContentResolver; import android.content.Intent; import android.content.Context; import android.content.ServiceConnection; import android.content.BroadcastReceiver; import android.content.IntentFilter; import android.content.pm.PackageManager; import android.net.Uri; import java.util.List; /** * A mock context which prevents its users from talking to the rest of the device while * stubbing enough methods to satify code that tries to talk to other packages. */ public class IsolatedContext extends ContextWrapper { private ContentResolver mResolver; private List<Intent> mBroadcastIntents = Lists.newArrayList(); public IsolatedContext( ContentResolver resolver, Context targetContext) { super(targetContext); mResolver = resolver; } /** Returns the list of intents that were broadcast since the last call to this method. */ public List<Intent> getAndClearBroadcastIntents() { List<Intent> intents = mBroadcastIntents; mBroadcastIntents = Lists.newArrayList(); return intents; } @Override public ContentResolver getContentResolver() { // We need to return the real resolver so that MailEngine.makeRight can get to the // subscribed feeds provider. TODO: mock out subscribed feeds too. return mResolver; } @Override public boolean bindService(Intent service, ServiceConnection conn, int flags) { return false; } @Override public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { return null; } @Override public void sendBroadcast(Intent intent) { mBroadcastIntents.add(intent); } @Override public void sendOrderedBroadcast(Intent intent, String receiverPermission) { mBroadcastIntents.add(intent); } @Override public int checkUriPermission( Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags) { return PackageManager.PERMISSION_GRANTED; } @Override public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) { return PackageManager.PERMISSION_GRANTED; } @Override public Object getSystemService(String name) { // No services exist in this context. return null; } }