ContextWrapper.java revision 98365d7663cbd82979a5700faf0050220b01084d
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.ApplicationInfo;
20import android.content.pm.PackageManager;
21import android.content.res.AssetManager;
22import android.content.res.Configuration;
23import android.content.res.Resources;
24import android.database.DatabaseErrorHandler;
25import android.database.sqlite.SQLiteDatabase;
26import android.database.sqlite.SQLiteDatabase.CursorFactory;
27import android.graphics.Bitmap;
28import android.graphics.drawable.Drawable;
29import android.net.Uri;
30import android.os.Bundle;
31import android.os.Handler;
32import android.os.Looper;
33import android.os.UserHandle;
34import android.view.CompatibilityInfoHolder;
35
36import java.io.File;
37import java.io.FileInputStream;
38import java.io.FileNotFoundException;
39import java.io.FileOutputStream;
40import java.io.IOException;
41import java.io.InputStream;
42
43/**
44 * Proxying implementation of Context that simply delegates all of its calls to
45 * another Context.  Can be subclassed to modify behavior without changing
46 * the original Context.
47 */
48public class ContextWrapper extends Context {
49    Context mBase;
50
51    public ContextWrapper(Context base) {
52        mBase = base;
53    }
54
55    /**
56     * Set the base context for this ContextWrapper.  All calls will then be
57     * delegated to the base context.  Throws
58     * IllegalStateException if a base context has already been set.
59     *
60     * @param base The new base context for this wrapper.
61     */
62    protected void attachBaseContext(Context base) {
63        if (mBase != null) {
64            throw new IllegalStateException("Base context already set");
65        }
66        mBase = base;
67    }
68
69    /**
70     * @return the base context as set by the constructor or setBaseContext
71     */
72    public Context getBaseContext() {
73        return mBase;
74    }
75
76    @Override
77    public AssetManager getAssets() {
78        return mBase.getAssets();
79    }
80
81    @Override
82    public Resources getResources()
83    {
84        return mBase.getResources();
85    }
86
87    @Override
88    public PackageManager getPackageManager() {
89        return mBase.getPackageManager();
90    }
91
92    @Override
93    public ContentResolver getContentResolver() {
94        return mBase.getContentResolver();
95    }
96
97    @Override
98    public Looper getMainLooper() {
99        return mBase.getMainLooper();
100    }
101
102    @Override
103    public Context getApplicationContext() {
104        return mBase.getApplicationContext();
105    }
106
107    @Override
108    public void setTheme(int resid) {
109        mBase.setTheme(resid);
110    }
111
112    /** @hide */
113    @Override
114    public int getThemeResId() {
115        return mBase.getThemeResId();
116    }
117
118    @Override
119    public Resources.Theme getTheme() {
120        return mBase.getTheme();
121    }
122
123    @Override
124    public ClassLoader getClassLoader() {
125        return mBase.getClassLoader();
126    }
127
128    @Override
129    public String getPackageName() {
130        return mBase.getPackageName();
131    }
132
133    @Override
134    public ApplicationInfo getApplicationInfo() {
135        return mBase.getApplicationInfo();
136    }
137
138    @Override
139    public String getPackageResourcePath() {
140        return mBase.getPackageResourcePath();
141    }
142
143    @Override
144    public String getPackageCodePath() {
145        return mBase.getPackageCodePath();
146    }
147
148    /** @hide */
149    @Override
150    public File getSharedPrefsFile(String name) {
151        return mBase.getSharedPrefsFile(name);
152    }
153
154    @Override
155    public SharedPreferences getSharedPreferences(String name, int mode) {
156        return mBase.getSharedPreferences(name, mode);
157    }
158
159    @Override
160    public FileInputStream openFileInput(String name)
161        throws FileNotFoundException {
162        return mBase.openFileInput(name);
163    }
164
165    @Override
166    public FileOutputStream openFileOutput(String name, int mode)
167        throws FileNotFoundException {
168        return mBase.openFileOutput(name, mode);
169    }
170
171    @Override
172    public boolean deleteFile(String name) {
173        return mBase.deleteFile(name);
174    }
175
176    @Override
177    public File getFileStreamPath(String name) {
178        return mBase.getFileStreamPath(name);
179    }
180
181    @Override
182    public String[] fileList() {
183        return mBase.fileList();
184    }
185
186    @Override
187    public File getFilesDir() {
188        return mBase.getFilesDir();
189    }
190
191    @Override
192    public File getExternalFilesDir(String type) {
193        return mBase.getExternalFilesDir(type);
194    }
195
196    @Override
197    public File getObbDir() {
198        return mBase.getObbDir();
199    }
200
201    @Override
202    public File getCacheDir() {
203        return mBase.getCacheDir();
204    }
205
206    @Override
207    public File getExternalCacheDir() {
208        return mBase.getExternalCacheDir();
209    }
210
211    @Override
212    public File getDir(String name, int mode) {
213        return mBase.getDir(name, mode);
214    }
215
216    @Override
217    public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
218        return mBase.openOrCreateDatabase(name, mode, factory);
219    }
220
221    @Override
222    public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory,
223            DatabaseErrorHandler errorHandler) {
224        return mBase.openOrCreateDatabase(name, mode, factory, errorHandler);
225    }
226
227    @Override
228    public boolean deleteDatabase(String name) {
229        return mBase.deleteDatabase(name);
230    }
231
232    @Override
233    public File getDatabasePath(String name) {
234        return mBase.getDatabasePath(name);
235    }
236
237    @Override
238    public String[] databaseList() {
239        return mBase.databaseList();
240    }
241
242    @Override
243    public Drawable getWallpaper() {
244        return mBase.getWallpaper();
245    }
246
247    @Override
248    public Drawable peekWallpaper() {
249        return mBase.peekWallpaper();
250    }
251
252    @Override
253    public int getWallpaperDesiredMinimumWidth() {
254        return mBase.getWallpaperDesiredMinimumWidth();
255    }
256
257    @Override
258    public int getWallpaperDesiredMinimumHeight() {
259        return mBase.getWallpaperDesiredMinimumHeight();
260    }
261
262    @Override
263    public void setWallpaper(Bitmap bitmap) throws IOException {
264        mBase.setWallpaper(bitmap);
265    }
266
267    @Override
268    public void setWallpaper(InputStream data) throws IOException {
269        mBase.setWallpaper(data);
270    }
271
272    @Override
273    public void clearWallpaper() throws IOException {
274        mBase.clearWallpaper();
275    }
276
277    @Override
278    public void startActivity(Intent intent) {
279        mBase.startActivity(intent);
280    }
281
282    /** @hide */
283    @Override
284    public void startActivityAsUser(Intent intent, UserHandle user) {
285        mBase.startActivityAsUser(intent, user);
286    }
287
288    @Override
289    public void startActivity(Intent intent, Bundle options) {
290        mBase.startActivity(intent, options);
291    }
292
293    /** @hide */
294    @Override
295    public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
296        mBase.startActivityAsUser(intent, options, user);
297    }
298
299    @Override
300    public void startActivities(Intent[] intents) {
301        mBase.startActivities(intents);
302    }
303
304    @Override
305    public void startActivities(Intent[] intents, Bundle options) {
306        mBase.startActivities(intents, options);
307    }
308
309    @Override
310    public void startIntentSender(IntentSender intent,
311            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
312            throws IntentSender.SendIntentException {
313        mBase.startIntentSender(intent, fillInIntent, flagsMask,
314                flagsValues, extraFlags);
315    }
316
317    @Override
318    public void startIntentSender(IntentSender intent,
319            Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags,
320            Bundle options) throws IntentSender.SendIntentException {
321        mBase.startIntentSender(intent, fillInIntent, flagsMask,
322                flagsValues, extraFlags, options);
323    }
324
325    @Override
326    public void sendBroadcast(Intent intent) {
327        mBase.sendBroadcast(intent);
328    }
329
330    @Override
331    public void sendBroadcast(Intent intent, String receiverPermission) {
332        mBase.sendBroadcast(intent, receiverPermission);
333    }
334
335    @Override
336    public void sendOrderedBroadcast(Intent intent,
337            String receiverPermission) {
338        mBase.sendOrderedBroadcast(intent, receiverPermission);
339    }
340
341    @Override
342    public void sendOrderedBroadcast(
343        Intent intent, String receiverPermission, BroadcastReceiver resultReceiver,
344        Handler scheduler, int initialCode, String initialData,
345        Bundle initialExtras) {
346        mBase.sendOrderedBroadcast(intent, receiverPermission,
347                resultReceiver, scheduler, initialCode,
348                initialData, initialExtras);
349    }
350
351    @Override
352    public void sendBroadcastAsUser(Intent intent, UserHandle user) {
353        mBase.sendBroadcastAsUser(intent, user);
354    }
355
356    @Override
357    public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
358            BroadcastReceiver resultReceiver, Handler scheduler,
359            int initialCode, String initialData, Bundle initialExtras) {
360        mBase.sendOrderedBroadcastAsUser(intent, user, resultReceiver,
361                scheduler, initialCode, initialData, initialExtras);
362    }
363
364    @Override
365    public void sendStickyBroadcast(Intent intent) {
366        mBase.sendStickyBroadcast(intent);
367    }
368
369    @Override
370    public void sendStickyOrderedBroadcast(
371        Intent intent, BroadcastReceiver resultReceiver,
372        Handler scheduler, int initialCode, String initialData,
373        Bundle initialExtras) {
374        mBase.sendStickyOrderedBroadcast(intent,
375                resultReceiver, scheduler, initialCode,
376                initialData, initialExtras);
377    }
378
379    @Override
380    public void removeStickyBroadcast(Intent intent) {
381        mBase.removeStickyBroadcast(intent);
382    }
383
384    @Override
385    public Intent registerReceiver(
386        BroadcastReceiver receiver, IntentFilter filter) {
387        return mBase.registerReceiver(receiver, filter);
388    }
389
390    @Override
391    public Intent registerReceiver(
392        BroadcastReceiver receiver, IntentFilter filter,
393        String broadcastPermission, Handler scheduler) {
394        return mBase.registerReceiver(receiver, filter, broadcastPermission,
395                scheduler);
396    }
397
398    @Override
399    public void unregisterReceiver(BroadcastReceiver receiver) {
400        mBase.unregisterReceiver(receiver);
401    }
402
403    @Override
404    public ComponentName startService(Intent service) {
405        return mBase.startService(service);
406    }
407
408    @Override
409    public boolean stopService(Intent name) {
410        return mBase.stopService(name);
411    }
412
413    @Override
414    public boolean bindService(Intent service, ServiceConnection conn,
415            int flags) {
416        return mBase.bindService(service, conn, flags);
417    }
418
419    /** @hide */
420    @Override
421    public boolean bindService(Intent service, ServiceConnection conn, int flags, int userHandle) {
422        return mBase.bindService(service, conn, flags, userHandle);
423    }
424
425    @Override
426    public void unbindService(ServiceConnection conn) {
427        mBase.unbindService(conn);
428    }
429
430    @Override
431    public boolean startInstrumentation(ComponentName className,
432            String profileFile, Bundle arguments) {
433        return mBase.startInstrumentation(className, profileFile, arguments);
434    }
435
436    @Override
437    public Object getSystemService(String name) {
438        return mBase.getSystemService(name);
439    }
440
441    @Override
442    public int checkPermission(String permission, int pid, int uid) {
443        return mBase.checkPermission(permission, pid, uid);
444    }
445
446    @Override
447    public int checkCallingPermission(String permission) {
448        return mBase.checkCallingPermission(permission);
449    }
450
451    @Override
452    public int checkCallingOrSelfPermission(String permission) {
453        return mBase.checkCallingOrSelfPermission(permission);
454    }
455
456    @Override
457    public void enforcePermission(
458            String permission, int pid, int uid, String message) {
459        mBase.enforcePermission(permission, pid, uid, message);
460    }
461
462    @Override
463    public void enforceCallingPermission(String permission, String message) {
464        mBase.enforceCallingPermission(permission, message);
465    }
466
467    @Override
468    public void enforceCallingOrSelfPermission(
469            String permission, String message) {
470        mBase.enforceCallingOrSelfPermission(permission, message);
471    }
472
473    @Override
474    public void grantUriPermission(String toPackage, Uri uri, int modeFlags) {
475        mBase.grantUriPermission(toPackage, uri, modeFlags);
476    }
477
478    @Override
479    public void revokeUriPermission(Uri uri, int modeFlags) {
480        mBase.revokeUriPermission(uri, modeFlags);
481    }
482
483    @Override
484    public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) {
485        return mBase.checkUriPermission(uri, pid, uid, modeFlags);
486    }
487
488    @Override
489    public int checkCallingUriPermission(Uri uri, int modeFlags) {
490        return mBase.checkCallingUriPermission(uri, modeFlags);
491    }
492
493    @Override
494    public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) {
495        return mBase.checkCallingOrSelfUriPermission(uri, modeFlags);
496    }
497
498    @Override
499    public int checkUriPermission(Uri uri, String readPermission,
500            String writePermission, int pid, int uid, int modeFlags) {
501        return mBase.checkUriPermission(uri, readPermission, writePermission,
502                pid, uid, modeFlags);
503    }
504
505    @Override
506    public void enforceUriPermission(
507            Uri uri, int pid, int uid, int modeFlags, String message) {
508        mBase.enforceUriPermission(uri, pid, uid, modeFlags, message);
509    }
510
511    @Override
512    public void enforceCallingUriPermission(
513            Uri uri, int modeFlags, String message) {
514        mBase.enforceCallingUriPermission(uri, modeFlags, message);
515    }
516
517    @Override
518    public void enforceCallingOrSelfUriPermission(
519            Uri uri, int modeFlags, String message) {
520        mBase.enforceCallingOrSelfUriPermission(uri, modeFlags, message);
521    }
522
523    @Override
524    public void enforceUriPermission(
525            Uri uri, String readPermission, String writePermission,
526            int pid, int uid, int modeFlags, String message) {
527        mBase.enforceUriPermission(
528                uri, readPermission, writePermission, pid, uid, modeFlags,
529                message);
530    }
531
532    @Override
533    public Context createPackageContext(String packageName, int flags)
534        throws PackageManager.NameNotFoundException {
535        return mBase.createPackageContext(packageName, flags);
536    }
537
538    @Override
539    public Context createConfigurationContext(Configuration overrideConfiguration) {
540        return mBase.createConfigurationContext(overrideConfiguration);
541    }
542
543    @Override
544    public boolean isRestricted() {
545        return mBase.isRestricted();
546    }
547
548    /** @hide */
549    @Override
550    public CompatibilityInfoHolder getCompatibilityInfo() {
551        return mBase.getCompatibilityInfo();
552    }
553}
554