1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.test; 18 19import android.accounts.AccountManager; 20import android.content.ContextWrapper; 21import android.content.ContentResolver; 22import android.content.Intent; 23import android.content.Context; 24import android.content.ServiceConnection; 25import android.content.BroadcastReceiver; 26import android.content.IntentFilter; 27import android.content.pm.PackageManager; 28import android.net.Uri; 29import android.test.mock.MockAccountManager; 30 31import java.io.File; 32import java.util.ArrayList; 33import java.util.List; 34 35 36/** 37 * A mock context which prevents its users from talking to the rest of the device while 38 * stubbing enough methods to satify code that tries to talk to other packages. 39 * 40 * @deprecated New tests should be written using the 41 * <a href="{@docRoot}tools/testing-support-library/index.html">Android Testing Support Library</a>. 42 */ 43@Deprecated 44public class IsolatedContext extends ContextWrapper { 45 46 private ContentResolver mResolver; 47 private final AccountManager mMockAccountManager; 48 49 private List<Intent> mBroadcastIntents = new ArrayList<>(); 50 51 public IsolatedContext( 52 ContentResolver resolver, Context targetContext) { 53 super(targetContext); 54 mResolver = resolver; 55 mMockAccountManager = MockAccountManager.newMockAccountManager(IsolatedContext.this); 56 } 57 58 /** Returns the list of intents that were broadcast since the last call to this method. */ 59 public List<Intent> getAndClearBroadcastIntents() { 60 List<Intent> intents = mBroadcastIntents; 61 mBroadcastIntents = new ArrayList<>(); 62 return intents; 63 } 64 65 @Override 66 public ContentResolver getContentResolver() { 67 // We need to return the real resolver so that MailEngine.makeRight can get to the 68 // subscribed feeds provider. TODO: mock out subscribed feeds too. 69 return mResolver; 70 } 71 72 @Override 73 public boolean bindService(Intent service, ServiceConnection conn, int flags) { 74 return false; 75 } 76 77 @Override 78 public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) { 79 return null; 80 } 81 82 @Override 83 public void unregisterReceiver(BroadcastReceiver receiver) { 84 // Ignore 85 } 86 87 @Override 88 public void sendBroadcast(Intent intent) { 89 mBroadcastIntents.add(intent); 90 } 91 92 @Override 93 public void sendOrderedBroadcast(Intent intent, String receiverPermission) { 94 mBroadcastIntents.add(intent); 95 } 96 97 @Override 98 public int checkUriPermission( 99 Uri uri, String readPermission, String writePermission, int pid, 100 int uid, int modeFlags) { 101 return PackageManager.PERMISSION_GRANTED; 102 } 103 104 @Override 105 public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) { 106 return PackageManager.PERMISSION_GRANTED; 107 } 108 109 @Override 110 public Object getSystemService(String name) { 111 if (Context.ACCOUNT_SERVICE.equals(name)) { 112 return mMockAccountManager; 113 } 114 // No other services exist in this context. 115 return null; 116 } 117 118 @Override 119 public File getFilesDir() { 120 return new File("/dev/null"); 121 } 122} 123