ContextWrapper.java revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
1/*
2 * Copyright (C) 2006 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.content;
18
19import android.content.pm.PackageManager;
20import android.content.res.AssetManager;
21import android.content.res.Resources;
22import android.database.sqlite.SQLiteDatabase;
23import android.database.sqlite.SQLiteDatabase.CursorFactory;
24import android.graphics.Bitmap;
25import android.graphics.drawable.Drawable;
26import android.net.Uri;
27import android.os.Bundle;
28import android.os.Handler;
29import android.os.Looper;
30
31import java.io.File;
32import java.io.FileInputStream;
33import java.io.FileNotFoundException;
34import java.io.FileOutputStream;
35import java.io.IOException;
36import java.io.InputStream;
37
38/**
39 * Proxying implementation of Context that simply delegates all of its calls to
40 * another Context.  Can be subclassed to modify behavior without changing
41 * the original Context.
42 */
43public class ContextWrapper extends Context {
44    Context mBase;
45
46    public ContextWrapper(Context base) {
47        mBase = base;
48    }
49
50    /**
51     * Set the base context for this ContextWrapper.  All calls will then be
52     * delegated to the base context.  Throws
53     * IllegalStateException if a base context has already been set.
54     *
55     * @param base The new base context for this wrapper.
56     */
57    protected void attachBaseContext(Context base) {
58        if (mBase != null) {
59            throw new IllegalStateException("Base context already set");
60        }
61        mBase = base;
62    }
63
64    /**
65     * @return the base context as set by the constructor or setBaseContext
66     */
67    public Context getBaseContext() {
68        return mBase;
69    }
70
71    @Override
72    public AssetManager getAssets() {
73        return mBase.getAssets();
74    }
75
76    @Override
77    public Resources getResources()
78    {
79        return mBase.getResources();
80    }
81
82    @Override
83    public PackageManager getPackageManager() {
84        return mBase.getPackageManager();
85    }
86
87    @Override
88    public ContentResolver getContentResolver() {
89        return mBase.getContentResolver();
90    }
91
92    @Override
93    public Looper getMainLooper() {
94        return mBase.getMainLooper();
95    }
96
97    @Override
98    public Context getApplicationContext() {
99        return mBase.getApplicationContext();
100    }
101
102    @Override
103    public void setTheme(int resid) {
104        mBase.setTheme(resid);
105    }
106
107    @Override
108    public Resources.Theme getTheme() {
109        return mBase.getTheme();
110    }
111
112    @Override
113    public ClassLoader getClassLoader() {
114        return mBase.getClassLoader();
115    }
116
117    @Override
118    public String getPackageName() {
119        return mBase.getPackageName();
120    }
121
122    @Override
123    public String getPackageResourcePath() {
124        return mBase.getPackageResourcePath();
125    }
126
127    @Override
128    public String getPackageCodePath() {
129        return mBase.getPackageCodePath();
130    }
131
132    @Override
133    public SharedPreferences getSharedPreferences(String name, int mode) {
134        return mBase.getSharedPreferences(name, mode);
135    }
136
137    @Override
138    public FileInputStream openFileInput(String name)
139        throws FileNotFoundException {
140        return mBase.openFileInput(name);
141    }
142
143    @Override
144    public FileOutputStream openFileOutput(String name, int mode)
145        throws FileNotFoundException {
146        return mBase.openFileOutput(name, mode);
147    }
148
149    @Override
150    public boolean deleteFile(String name) {
151        return mBase.deleteFile(name);
152    }
153
154    @Override
155    public File getFileStreamPath(String name) {
156        return mBase.getFileStreamPath(name);
157    }
158
159    @Override
160    public String[] fileList() {
161        return mBase.fileList();
162    }
163
164    @Override
165    public File getFilesDir() {
166        return mBase.getFilesDir();
167    }
168
169    @Override
170    public File getCacheDir() {
171        return mBase.getCacheDir();
172    }
173
174    @Override
175    public File getDir(String name, int mode) {
176        return mBase.getDir(name, mode);
177    }
178
179    @Override
180    public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
181        return mBase.openOrCreateDatabase(name, mode, factory);
182    }
183
184    @Override
185    public boolean deleteDatabase(String name) {
186        return mBase.deleteDatabase(name);
187    }
188
189    @Override
190    public File getDatabasePath(String name) {
191        return mBase.getDatabasePath(name);
192    }
193
194    @Override
195    public String[] databaseList() {
196        return mBase.databaseList();
197    }
198
199    @Override
200    public Drawable getWallpaper() {
201        return mBase.getWallpaper();
202    }
203
204    @Override
205    public Drawable peekWallpaper() {
206        return mBase.peekWallpaper();
207    }
208
209    @Override
210    public int getWallpaperDesiredMinimumWidth() {
211        return mBase.getWallpaperDesiredMinimumWidth();
212    }
213
214    @Override
215    public int getWallpaperDesiredMinimumHeight() {
216        return mBase.getWallpaperDesiredMinimumHeight();
217    }
218
219    @Override
220    public void setWallpaper(Bitmap bitmap) throws IOException {
221        mBase.setWallpaper(bitmap);
222    }
223
224    @Override
225    public void setWallpaper(InputStream data) throws IOException {
226        mBase.setWallpaper(data);
227    }
228
229    @Override
230    public void clearWallpaper() throws IOException {
231        mBase.clearWallpaper();
232    }
233
234    @Override
235    public void startActivity(Intent intent) {
236        mBase.startActivity(intent);
237    }
238
239    @Override
240    public void sendBroadcast(Intent intent) {
241        mBase.sendBroadcast(intent);
242    }
243
244    @Override
245    public void sendBroadcast(Intent intent, String receiverPermission) {
246        mBase.sendBroadcast(intent, receiverPermission);
247    }
248
249    @Override
250    public void sendOrderedBroadcast(Intent intent,
251            String receiverPermission) {
252        mBase.sendOrderedBroadcast(intent, receiverPermission);
253    }
254
255    @Override
256    public void sendOrderedBroadcast(
257        Intent intent, String receiverPermission, BroadcastReceiver resultReceiver,
258        Handler scheduler, int initialCode, String initialData,
259        Bundle initialExtras) {
260        mBase.sendOrderedBroadcast(intent, receiverPermission,
261                resultReceiver, scheduler, initialCode,
262                initialData, initialExtras);
263    }
264
265    @Override
266    public void sendStickyBroadcast(Intent intent) {
267        mBase.sendStickyBroadcast(intent);
268    }
269
270    @Override
271    public void removeStickyBroadcast(Intent intent) {
272        mBase.removeStickyBroadcast(intent);
273    }
274
275    @Override
276    public Intent registerReceiver(
277        BroadcastReceiver receiver, IntentFilter filter) {
278        return mBase.registerReceiver(receiver, filter);
279    }
280
281    @Override
282    public Intent registerReceiver(
283        BroadcastReceiver receiver, IntentFilter filter,
284        String broadcastPermission, Handler scheduler) {
285        return mBase.registerReceiver(receiver, filter, broadcastPermission,
286                scheduler);
287    }
288
289    @Override
290    public void unregisterReceiver(BroadcastReceiver receiver) {
291        mBase.unregisterReceiver(receiver);
292    }
293
294    @Override
295    public ComponentName startService(Intent service) {
296        return mBase.startService(service);
297    }
298
299    @Override
300    public boolean stopService(Intent name) {
301        return mBase.stopService(name);
302    }
303
304    @Override
305    public boolean bindService(Intent service, ServiceConnection conn,
306            int flags) {
307        return mBase.bindService(service, conn, flags);
308    }
309
310    @Override
311    public void unbindService(ServiceConnection conn) {
312        mBase.unbindService(conn);
313    }
314
315    @Override
316    public boolean startInstrumentation(ComponentName className,
317            String profileFile, Bundle arguments) {
318        return mBase.startInstrumentation(className, profileFile, arguments);
319    }
320
321    @Override
322    public Object getSystemService(String name) {
323        return mBase.getSystemService(name);
324    }
325
326    @Override
327    public int checkPermission(String permission, int pid, int uid) {
328        return mBase.checkPermission(permission, pid, uid);
329    }
330
331    @Override
332    public int checkCallingPermission(String permission) {
333        return mBase.checkCallingPermission(permission);
334    }
335
336    @Override
337    public int checkCallingOrSelfPermission(String permission) {
338        return mBase.checkCallingOrSelfPermission(permission);
339    }
340
341    @Override
342    public void enforcePermission(
343            String permission, int pid, int uid, String message) {
344        mBase.enforcePermission(permission, pid, uid, message);
345    }
346
347    @Override
348    public void enforceCallingPermission(String permission, String message) {
349        mBase.enforceCallingPermission(permission, message);
350    }
351
352    @Override
353    public void enforceCallingOrSelfPermission(
354            String permission, String message) {
355        mBase.enforceCallingOrSelfPermission(permission, message);
356    }
357
358    @Override
359    public void grantUriPermission(String toPackage, Uri uri, int modeFlags) {
360        mBase.grantUriPermission(toPackage, uri, modeFlags);
361    }
362
363    @Override
364    public void revokeUriPermission(Uri uri, int modeFlags) {
365        mBase.revokeUriPermission(uri, modeFlags);
366    }
367
368    @Override
369    public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) {
370        return mBase.checkUriPermission(uri, pid, uid, modeFlags);
371    }
372
373    @Override
374    public int checkCallingUriPermission(Uri uri, int modeFlags) {
375        return mBase.checkCallingUriPermission(uri, modeFlags);
376    }
377
378    @Override
379    public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) {
380        return mBase.checkCallingOrSelfUriPermission(uri, modeFlags);
381    }
382
383    @Override
384    public int checkUriPermission(Uri uri, String readPermission,
385            String writePermission, int pid, int uid, int modeFlags) {
386        return mBase.checkUriPermission(uri, readPermission, writePermission,
387                pid, uid, modeFlags);
388    }
389
390    @Override
391    public void enforceUriPermission(
392            Uri uri, int pid, int uid, int modeFlags, String message) {
393        mBase.enforceUriPermission(uri, pid, uid, modeFlags, message);
394    }
395
396    @Override
397    public void enforceCallingUriPermission(
398            Uri uri, int modeFlags, String message) {
399        mBase.enforceCallingUriPermission(uri, modeFlags, message);
400    }
401
402    @Override
403    public void enforceCallingOrSelfUriPermission(
404            Uri uri, int modeFlags, String message) {
405        mBase.enforceCallingOrSelfUriPermission(uri, modeFlags, message);
406    }
407
408    @Override
409    public void enforceUriPermission(
410            Uri uri, String readPermission, String writePermission,
411            int pid, int uid, int modeFlags, String message) {
412        mBase.enforceUriPermission(
413                uri, readPermission, writePermission, pid, uid, modeFlags,
414                message);
415    }
416
417    @Override
418    public Context createPackageContext(String packageName, int flags)
419        throws PackageManager.NameNotFoundException {
420        return mBase.createPackageContext(packageName, flags);
421    }
422}
423