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 
17 package android.test;
18 
19 import android.accounts.AccountManager;
20 import android.content.ContextWrapper;
21 import android.content.ContentResolver;
22 import android.content.Intent;
23 import android.content.Context;
24 import android.content.ServiceConnection;
25 import android.content.BroadcastReceiver;
26 import android.content.IntentFilter;
27 import android.content.pm.PackageManager;
28 import android.net.Uri;
29 import android.test.mock.MockAccountManager;
30 
31 import java.io.File;
32 import java.util.ArrayList;
33 import 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
44 public class IsolatedContext extends ContextWrapper {
45 
46     private ContentResolver mResolver;
47     private final AccountManager mMockAccountManager;
48 
49     private List<Intent> mBroadcastIntents = new ArrayList<>();
50 
IsolatedContext( ContentResolver resolver, Context targetContext)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. */
getAndClearBroadcastIntents()59     public List<Intent> getAndClearBroadcastIntents() {
60         List<Intent> intents = mBroadcastIntents;
61         mBroadcastIntents = new ArrayList<>();
62         return intents;
63     }
64 
65     @Override
getContentResolver()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
bindService(Intent service, ServiceConnection conn, int flags)73     public boolean bindService(Intent service, ServiceConnection conn, int flags) {
74         return false;
75     }
76 
77     @Override
registerReceiver(BroadcastReceiver receiver, IntentFilter filter)78     public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {
79         return null;
80     }
81 
82     @Override
unregisterReceiver(BroadcastReceiver receiver)83     public void unregisterReceiver(BroadcastReceiver receiver) {
84         // Ignore
85     }
86 
87     @Override
sendBroadcast(Intent intent)88     public void sendBroadcast(Intent intent) {
89         mBroadcastIntents.add(intent);
90     }
91 
92     @Override
sendOrderedBroadcast(Intent intent, String receiverPermission)93     public void sendOrderedBroadcast(Intent intent, String receiverPermission) {
94         mBroadcastIntents.add(intent);
95     }
96 
97     @Override
checkUriPermission( Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)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
checkUriPermission(Uri uri, int pid, int uid, int modeFlags)105     public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) {
106         return PackageManager.PERMISSION_GRANTED;
107     }
108 
109     @Override
getSystemService(String name)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
getFilesDir()119     public File getFilesDir() {
120         return new File("/dev/null");
121     }
122 }
123