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