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