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