Home | History | Annotate | Download | only in content
      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.annotation.SystemApi;
     20 import android.annotation.TestApi;
     21 import android.annotation.UnsupportedAppUsage;
     22 import android.app.IApplicationThread;
     23 import android.app.IServiceConnection;
     24 import android.content.pm.ApplicationInfo;
     25 import android.content.pm.PackageManager;
     26 import android.content.res.AssetManager;
     27 import android.content.res.Configuration;
     28 import android.content.res.Resources;
     29 import android.database.DatabaseErrorHandler;
     30 import android.database.sqlite.SQLiteDatabase;
     31 import android.database.sqlite.SQLiteDatabase.CursorFactory;
     32 import android.graphics.Bitmap;
     33 import android.graphics.drawable.Drawable;
     34 import android.net.Uri;
     35 import android.os.Bundle;
     36 import android.os.Handler;
     37 import android.os.IBinder;
     38 import android.os.Looper;
     39 import android.os.UserHandle;
     40 import android.view.Display;
     41 import android.view.DisplayAdjustments;
     42 import android.view.autofill.AutofillManager.AutofillClient;
     43 
     44 import java.io.File;
     45 import java.io.FileInputStream;
     46 import java.io.FileNotFoundException;
     47 import java.io.FileOutputStream;
     48 import java.io.IOException;
     49 import java.io.InputStream;
     50 import java.util.concurrent.Executor;
     51 
     52 /**
     53  * Proxying implementation of Context that simply delegates all of its calls to
     54  * another Context.  Can be subclassed to modify behavior without changing
     55  * the original Context.
     56  */
     57 public class ContextWrapper extends Context {
     58     @UnsupportedAppUsage
     59     Context mBase;
     60 
     61     public ContextWrapper(Context base) {
     62         mBase = base;
     63     }
     64 
     65     /**
     66      * Set the base context for this ContextWrapper.  All calls will then be
     67      * delegated to the base context.  Throws
     68      * IllegalStateException if a base context has already been set.
     69      *
     70      * @param base The new base context for this wrapper.
     71      */
     72     protected void attachBaseContext(Context base) {
     73         if (mBase != null) {
     74             throw new IllegalStateException("Base context already set");
     75         }
     76         mBase = base;
     77     }
     78 
     79     /**
     80      * @return the base context as set by the constructor or setBaseContext
     81      */
     82     public Context getBaseContext() {
     83         return mBase;
     84     }
     85 
     86     @Override
     87     public AssetManager getAssets() {
     88         return mBase.getAssets();
     89     }
     90 
     91     @Override
     92     public Resources getResources() {
     93         return mBase.getResources();
     94     }
     95 
     96     @Override
     97     public PackageManager getPackageManager() {
     98         return mBase.getPackageManager();
     99     }
    100 
    101     @Override
    102     public ContentResolver getContentResolver() {
    103         return mBase.getContentResolver();
    104     }
    105 
    106     @Override
    107     public Looper getMainLooper() {
    108         return mBase.getMainLooper();
    109     }
    110 
    111     @Override
    112     public Executor getMainExecutor() {
    113         return mBase.getMainExecutor();
    114     }
    115 
    116     @Override
    117     public Context getApplicationContext() {
    118         return mBase.getApplicationContext();
    119     }
    120 
    121     @Override
    122     public void setTheme(int resid) {
    123         mBase.setTheme(resid);
    124     }
    125 
    126     /** @hide */
    127     @Override
    128     @UnsupportedAppUsage
    129     public int getThemeResId() {
    130         return mBase.getThemeResId();
    131     }
    132 
    133     @Override
    134     public Resources.Theme getTheme() {
    135         return mBase.getTheme();
    136     }
    137 
    138     @Override
    139     public ClassLoader getClassLoader() {
    140         return mBase.getClassLoader();
    141     }
    142 
    143     @Override
    144     public String getPackageName() {
    145         return mBase.getPackageName();
    146     }
    147 
    148     /** @hide */
    149     @Override
    150     @UnsupportedAppUsage
    151     public String getBasePackageName() {
    152         return mBase.getBasePackageName();
    153     }
    154 
    155     /** @hide */
    156     @Override
    157     public String getOpPackageName() {
    158         return mBase.getOpPackageName();
    159     }
    160 
    161     @Override
    162     public ApplicationInfo getApplicationInfo() {
    163         return mBase.getApplicationInfo();
    164     }
    165 
    166     @Override
    167     public String getPackageResourcePath() {
    168         return mBase.getPackageResourcePath();
    169     }
    170 
    171     @Override
    172     public String getPackageCodePath() {
    173         return mBase.getPackageCodePath();
    174     }
    175 
    176     @Override
    177     public SharedPreferences getSharedPreferences(String name, int mode) {
    178         return mBase.getSharedPreferences(name, mode);
    179     }
    180 
    181     /** @removed */
    182     @Override
    183     public SharedPreferences getSharedPreferences(File file, int mode) {
    184         return mBase.getSharedPreferences(file, mode);
    185     }
    186 
    187     /** @hide */
    188     @Override
    189     public void reloadSharedPreferences() {
    190         mBase.reloadSharedPreferences();
    191     }
    192 
    193     @Override
    194     public boolean moveSharedPreferencesFrom(Context sourceContext, String name) {
    195         return mBase.moveSharedPreferencesFrom(sourceContext, name);
    196     }
    197 
    198     @Override
    199     public boolean deleteSharedPreferences(String name) {
    200         return mBase.deleteSharedPreferences(name);
    201     }
    202 
    203     @Override
    204     public FileInputStream openFileInput(String name)
    205         throws FileNotFoundException {
    206         return mBase.openFileInput(name);
    207     }
    208 
    209     @Override
    210     public FileOutputStream openFileOutput(String name, int mode)
    211         throws FileNotFoundException {
    212         return mBase.openFileOutput(name, mode);
    213     }
    214 
    215     @Override
    216     public boolean deleteFile(String name) {
    217         return mBase.deleteFile(name);
    218     }
    219 
    220     @Override
    221     public File getFileStreamPath(String name) {
    222         return mBase.getFileStreamPath(name);
    223     }
    224 
    225     /** @removed */
    226     @Override
    227     public File getSharedPreferencesPath(String name) {
    228         return mBase.getSharedPreferencesPath(name);
    229     }
    230 
    231     @Override
    232     public String[] fileList() {
    233         return mBase.fileList();
    234     }
    235 
    236     @Override
    237     public File getDataDir() {
    238         return mBase.getDataDir();
    239     }
    240 
    241     @Override
    242     public File getFilesDir() {
    243         return mBase.getFilesDir();
    244     }
    245 
    246     @Override
    247     public File getNoBackupFilesDir() {
    248         return mBase.getNoBackupFilesDir();
    249     }
    250 
    251     @Override
    252     public File getExternalFilesDir(String type) {
    253         return mBase.getExternalFilesDir(type);
    254     }
    255 
    256     @Override
    257     public File[] getExternalFilesDirs(String type) {
    258         return mBase.getExternalFilesDirs(type);
    259     }
    260 
    261     @Override
    262     public File getObbDir() {
    263         return mBase.getObbDir();
    264     }
    265 
    266     @Override
    267     public File[] getObbDirs() {
    268         return mBase.getObbDirs();
    269     }
    270 
    271     @Override
    272     public File getCacheDir() {
    273         return mBase.getCacheDir();
    274     }
    275 
    276     @Override
    277     public File getCodeCacheDir() {
    278         return mBase.getCodeCacheDir();
    279     }
    280 
    281     @Override
    282     public File getExternalCacheDir() {
    283         return mBase.getExternalCacheDir();
    284     }
    285 
    286     @Override
    287     public File[] getExternalCacheDirs() {
    288         return mBase.getExternalCacheDirs();
    289     }
    290 
    291     @Override
    292     public File[] getExternalMediaDirs() {
    293         return mBase.getExternalMediaDirs();
    294     }
    295 
    296     @Override
    297     public File getDir(String name, int mode) {
    298         return mBase.getDir(name, mode);
    299     }
    300 
    301 
    302     /** @hide **/
    303     @Override
    304     public File getPreloadsFileCache() {
    305         return mBase.getPreloadsFileCache();
    306     }
    307 
    308     @Override
    309     public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory) {
    310         return mBase.openOrCreateDatabase(name, mode, factory);
    311     }
    312 
    313     @Override
    314     public SQLiteDatabase openOrCreateDatabase(String name, int mode, CursorFactory factory,
    315             DatabaseErrorHandler errorHandler) {
    316         return mBase.openOrCreateDatabase(name, mode, factory, errorHandler);
    317     }
    318 
    319     @Override
    320     public boolean moveDatabaseFrom(Context sourceContext, String name) {
    321         return mBase.moveDatabaseFrom(sourceContext, name);
    322     }
    323 
    324     @Override
    325     public boolean deleteDatabase(String name) {
    326         return mBase.deleteDatabase(name);
    327     }
    328 
    329     @Override
    330     public File getDatabasePath(String name) {
    331         return mBase.getDatabasePath(name);
    332     }
    333 
    334     @Override
    335     public String[] databaseList() {
    336         return mBase.databaseList();
    337     }
    338 
    339     @Override
    340     @Deprecated
    341     public Drawable getWallpaper() {
    342         return mBase.getWallpaper();
    343     }
    344 
    345     @Override
    346     @Deprecated
    347     public Drawable peekWallpaper() {
    348         return mBase.peekWallpaper();
    349     }
    350 
    351     @Override
    352     @Deprecated
    353     public int getWallpaperDesiredMinimumWidth() {
    354         return mBase.getWallpaperDesiredMinimumWidth();
    355     }
    356 
    357     @Override
    358     @Deprecated
    359     public int getWallpaperDesiredMinimumHeight() {
    360         return mBase.getWallpaperDesiredMinimumHeight();
    361     }
    362 
    363     @Override
    364     @Deprecated
    365     public void setWallpaper(Bitmap bitmap) throws IOException {
    366         mBase.setWallpaper(bitmap);
    367     }
    368 
    369     @Override
    370     @Deprecated
    371     public void setWallpaper(InputStream data) throws IOException {
    372         mBase.setWallpaper(data);
    373     }
    374 
    375     @Override
    376     @Deprecated
    377     public void clearWallpaper() throws IOException {
    378         mBase.clearWallpaper();
    379     }
    380 
    381     @Override
    382     public void startActivity(Intent intent) {
    383         mBase.startActivity(intent);
    384     }
    385 
    386     /** @hide */
    387     @Override
    388     public void startActivityAsUser(Intent intent, UserHandle user) {
    389         mBase.startActivityAsUser(intent, user);
    390     }
    391 
    392     /** @hide **/
    393     public void startActivityForResult(
    394             String who, Intent intent, int requestCode, Bundle options) {
    395         mBase.startActivityForResult(who, intent, requestCode, options);
    396     }
    397 
    398     /** @hide **/
    399     public boolean canStartActivityForResult() {
    400         return mBase.canStartActivityForResult();
    401     }
    402 
    403     @Override
    404     public void startActivity(Intent intent, Bundle options) {
    405         mBase.startActivity(intent, options);
    406     }
    407 
    408     /** @hide */
    409     @Override
    410     public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
    411         mBase.startActivityAsUser(intent, options, user);
    412     }
    413 
    414     @Override
    415     public void startActivities(Intent[] intents) {
    416         mBase.startActivities(intents);
    417     }
    418 
    419     @Override
    420     public void startActivities(Intent[] intents, Bundle options) {
    421         mBase.startActivities(intents, options);
    422     }
    423 
    424     /** @hide */
    425     @Override
    426     public int startActivitiesAsUser(Intent[] intents, Bundle options, UserHandle userHandle) {
    427         return mBase.startActivitiesAsUser(intents, options, userHandle);
    428     }
    429 
    430     @Override
    431     public void startIntentSender(IntentSender intent,
    432             Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
    433             throws IntentSender.SendIntentException {
    434         mBase.startIntentSender(intent, fillInIntent, flagsMask,
    435                 flagsValues, extraFlags);
    436     }
    437 
    438     @Override
    439     public void startIntentSender(IntentSender intent,
    440             Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags,
    441             Bundle options) throws IntentSender.SendIntentException {
    442         mBase.startIntentSender(intent, fillInIntent, flagsMask,
    443                 flagsValues, extraFlags, options);
    444     }
    445 
    446     @Override
    447     public void sendBroadcast(Intent intent) {
    448         mBase.sendBroadcast(intent);
    449     }
    450 
    451     @Override
    452     public void sendBroadcast(Intent intent, String receiverPermission) {
    453         mBase.sendBroadcast(intent, receiverPermission);
    454     }
    455 
    456     /** @hide */
    457     @Override
    458     public void sendBroadcastMultiplePermissions(Intent intent, String[] receiverPermissions) {
    459         mBase.sendBroadcastMultiplePermissions(intent, receiverPermissions);
    460     }
    461 
    462     /** @hide */
    463     @Override
    464     public void sendBroadcastAsUserMultiplePermissions(Intent intent, UserHandle user,
    465             String[] receiverPermissions) {
    466         mBase.sendBroadcastAsUserMultiplePermissions(intent, user, receiverPermissions);
    467     }
    468 
    469     /** @hide */
    470     @SystemApi
    471     @Override
    472     public void sendBroadcast(Intent intent, String receiverPermission, Bundle options) {
    473         mBase.sendBroadcast(intent, receiverPermission, options);
    474     }
    475 
    476     /** @hide */
    477     @Override
    478     public void sendBroadcast(Intent intent, String receiverPermission, int appOp) {
    479         mBase.sendBroadcast(intent, receiverPermission, appOp);
    480     }
    481 
    482     @Override
    483     public void sendOrderedBroadcast(Intent intent,
    484             String receiverPermission) {
    485         mBase.sendOrderedBroadcast(intent, receiverPermission);
    486     }
    487 
    488     @Override
    489     public void sendOrderedBroadcast(
    490         Intent intent, String receiverPermission, BroadcastReceiver resultReceiver,
    491         Handler scheduler, int initialCode, String initialData,
    492         Bundle initialExtras) {
    493         mBase.sendOrderedBroadcast(intent, receiverPermission,
    494                 resultReceiver, scheduler, initialCode,
    495                 initialData, initialExtras);
    496     }
    497 
    498     /** @hide */
    499     @SystemApi
    500     @Override
    501     public void sendOrderedBroadcast(
    502             Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver,
    503             Handler scheduler, int initialCode, String initialData,
    504             Bundle initialExtras) {
    505         mBase.sendOrderedBroadcast(intent, receiverPermission,
    506                 options, resultReceiver, scheduler, initialCode,
    507                 initialData, initialExtras);
    508     }
    509 
    510     /** @hide */
    511     @Override
    512     public void sendOrderedBroadcast(
    513         Intent intent, String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
    514         Handler scheduler, int initialCode, String initialData,
    515         Bundle initialExtras) {
    516         mBase.sendOrderedBroadcast(intent, receiverPermission, appOp,
    517                 resultReceiver, scheduler, initialCode,
    518                 initialData, initialExtras);
    519     }
    520 
    521     @Override
    522     public void sendBroadcastAsUser(Intent intent, UserHandle user) {
    523         mBase.sendBroadcastAsUser(intent, user);
    524     }
    525 
    526     @Override
    527     public void sendBroadcastAsUser(Intent intent, UserHandle user,
    528             String receiverPermission) {
    529         mBase.sendBroadcastAsUser(intent, user, receiverPermission);
    530     }
    531 
    532     /** @hide */
    533     @Override
    534     public void sendBroadcastAsUser(Intent intent, UserHandle user,
    535             String receiverPermission, Bundle options) {
    536         mBase.sendBroadcastAsUser(intent, user, receiverPermission, options);
    537     }
    538 
    539     /** @hide */
    540     @Override
    541     public void sendBroadcastAsUser(Intent intent, UserHandle user,
    542             String receiverPermission, int appOp) {
    543         mBase.sendBroadcastAsUser(intent, user, receiverPermission, appOp);
    544     }
    545 
    546     @Override
    547     public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
    548             String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler,
    549             int initialCode, String initialData, Bundle initialExtras) {
    550         mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, resultReceiver,
    551                 scheduler, initialCode, initialData, initialExtras);
    552     }
    553 
    554     /** @hide */
    555     @Override
    556     public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
    557             String receiverPermission, int appOp, BroadcastReceiver resultReceiver,
    558             Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
    559         mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, resultReceiver,
    560                 scheduler, initialCode, initialData, initialExtras);
    561     }
    562 
    563     /** @hide */
    564     @Override
    565     public void sendOrderedBroadcastAsUser(Intent intent, UserHandle user,
    566             String receiverPermission, int appOp, Bundle options, BroadcastReceiver resultReceiver,
    567             Handler scheduler, int initialCode, String initialData, Bundle initialExtras) {
    568         mBase.sendOrderedBroadcastAsUser(intent, user, receiverPermission, appOp, options,
    569                 resultReceiver, scheduler, initialCode, initialData, initialExtras);
    570     }
    571 
    572     @Override
    573     @Deprecated
    574     public void sendStickyBroadcast(Intent intent) {
    575         mBase.sendStickyBroadcast(intent);
    576     }
    577 
    578     @Override
    579     @Deprecated
    580     public void sendStickyOrderedBroadcast(
    581         Intent intent, BroadcastReceiver resultReceiver,
    582         Handler scheduler, int initialCode, String initialData,
    583         Bundle initialExtras) {
    584         mBase.sendStickyOrderedBroadcast(intent,
    585                 resultReceiver, scheduler, initialCode,
    586                 initialData, initialExtras);
    587     }
    588 
    589     @Override
    590     @Deprecated
    591     public void removeStickyBroadcast(Intent intent) {
    592         mBase.removeStickyBroadcast(intent);
    593     }
    594 
    595     @Override
    596     @Deprecated
    597     public void sendStickyBroadcastAsUser(Intent intent, UserHandle user) {
    598         mBase.sendStickyBroadcastAsUser(intent, user);
    599     }
    600 
    601     /** @hide */
    602     @Override
    603     @Deprecated
    604     public void sendStickyBroadcastAsUser(Intent intent, UserHandle user, Bundle options) {
    605         mBase.sendStickyBroadcastAsUser(intent, user, options);
    606     }
    607 
    608     @Override
    609     @Deprecated
    610     public void sendStickyOrderedBroadcastAsUser(Intent intent,
    611             UserHandle user, BroadcastReceiver resultReceiver,
    612             Handler scheduler, int initialCode, String initialData,
    613             Bundle initialExtras) {
    614         mBase.sendStickyOrderedBroadcastAsUser(intent, user, resultReceiver,
    615                 scheduler, initialCode, initialData, initialExtras);
    616     }
    617 
    618     @Override
    619     @Deprecated
    620     public void removeStickyBroadcastAsUser(Intent intent, UserHandle user) {
    621         mBase.removeStickyBroadcastAsUser(intent, user);
    622     }
    623 
    624     @Override
    625     public Intent registerReceiver(
    626         BroadcastReceiver receiver, IntentFilter filter) {
    627         return mBase.registerReceiver(receiver, filter);
    628     }
    629 
    630     @Override
    631     public Intent registerReceiver(
    632         BroadcastReceiver receiver, IntentFilter filter, int flags) {
    633         return mBase.registerReceiver(receiver, filter, flags);
    634     }
    635 
    636     @Override
    637     public Intent registerReceiver(
    638         BroadcastReceiver receiver, IntentFilter filter,
    639         String broadcastPermission, Handler scheduler) {
    640         return mBase.registerReceiver(receiver, filter, broadcastPermission,
    641                 scheduler);
    642     }
    643 
    644     @Override
    645     public Intent registerReceiver(
    646         BroadcastReceiver receiver, IntentFilter filter,
    647         String broadcastPermission, Handler scheduler, int flags) {
    648         return mBase.registerReceiver(receiver, filter, broadcastPermission,
    649                 scheduler, flags);
    650     }
    651 
    652     /** @hide */
    653     @Override
    654     @UnsupportedAppUsage
    655     public Intent registerReceiverAsUser(
    656         BroadcastReceiver receiver, UserHandle user, IntentFilter filter,
    657         String broadcastPermission, Handler scheduler) {
    658         return mBase.registerReceiverAsUser(receiver, user, filter, broadcastPermission,
    659                 scheduler);
    660     }
    661 
    662     @Override
    663     public void unregisterReceiver(BroadcastReceiver receiver) {
    664         mBase.unregisterReceiver(receiver);
    665     }
    666 
    667     @Override
    668     public ComponentName startService(Intent service) {
    669         return mBase.startService(service);
    670     }
    671 
    672     @Override
    673     public ComponentName startForegroundService(Intent service) {
    674         return mBase.startForegroundService(service);
    675     }
    676 
    677     @Override
    678     public boolean stopService(Intent name) {
    679         return mBase.stopService(name);
    680     }
    681 
    682     /** @hide */
    683     @Override
    684     @UnsupportedAppUsage
    685     public ComponentName startServiceAsUser(Intent service, UserHandle user) {
    686         return mBase.startServiceAsUser(service, user);
    687     }
    688 
    689     /** @hide */
    690     @Override
    691     @UnsupportedAppUsage
    692     public ComponentName startForegroundServiceAsUser(Intent service, UserHandle user) {
    693         return mBase.startForegroundServiceAsUser(service, user);
    694     }
    695 
    696     /** @hide */
    697     @Override
    698     public boolean stopServiceAsUser(Intent name, UserHandle user) {
    699         return mBase.stopServiceAsUser(name, user);
    700     }
    701 
    702     @Override
    703     public boolean bindService(Intent service, ServiceConnection conn,
    704             int flags) {
    705         return mBase.bindService(service, conn, flags);
    706     }
    707 
    708     @Override
    709     public boolean bindService(Intent service, int flags, Executor executor,
    710             ServiceConnection conn) {
    711         return mBase.bindService(service, flags, executor, conn);
    712     }
    713 
    714     @Override
    715     public boolean bindIsolatedService(Intent service, int flags, String instanceName,
    716             Executor executor, ServiceConnection conn) {
    717         return mBase.bindIsolatedService(service, flags, instanceName, executor, conn);
    718     }
    719 
    720     /** @hide */
    721     @Override
    722     public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
    723             UserHandle user) {
    724         return mBase.bindServiceAsUser(service, conn, flags, user);
    725     }
    726 
    727     /** @hide */
    728     @Override
    729     public boolean bindServiceAsUser(Intent service, ServiceConnection conn, int flags,
    730             Handler handler, UserHandle user) {
    731         return mBase.bindServiceAsUser(service, conn, flags, handler, user);
    732     }
    733 
    734     @Override
    735     public void updateServiceGroup(ServiceConnection conn, int group, int importance) {
    736         mBase.updateServiceGroup(conn, group, importance);
    737     }
    738 
    739     @Override
    740     public void unbindService(ServiceConnection conn) {
    741         mBase.unbindService(conn);
    742     }
    743 
    744     @Override
    745     public boolean startInstrumentation(ComponentName className,
    746             String profileFile, Bundle arguments) {
    747         return mBase.startInstrumentation(className, profileFile, arguments);
    748     }
    749 
    750     @Override
    751     public Object getSystemService(String name) {
    752         return mBase.getSystemService(name);
    753     }
    754 
    755     @Override
    756     public String getSystemServiceName(Class<?> serviceClass) {
    757         return mBase.getSystemServiceName(serviceClass);
    758     }
    759 
    760     @Override
    761     public int checkPermission(String permission, int pid, int uid) {
    762         return mBase.checkPermission(permission, pid, uid);
    763     }
    764 
    765     /** @hide */
    766     @Override
    767     public int checkPermission(String permission, int pid, int uid, IBinder callerToken) {
    768         return mBase.checkPermission(permission, pid, uid, callerToken);
    769     }
    770 
    771     @Override
    772     public int checkCallingPermission(String permission) {
    773         return mBase.checkCallingPermission(permission);
    774     }
    775 
    776     @Override
    777     public int checkCallingOrSelfPermission(String permission) {
    778         return mBase.checkCallingOrSelfPermission(permission);
    779     }
    780 
    781     @Override
    782     public int checkSelfPermission(String permission) {
    783        return mBase.checkSelfPermission(permission);
    784     }
    785 
    786     @Override
    787     public void enforcePermission(
    788             String permission, int pid, int uid, String message) {
    789         mBase.enforcePermission(permission, pid, uid, message);
    790     }
    791 
    792     @Override
    793     public void enforceCallingPermission(String permission, String message) {
    794         mBase.enforceCallingPermission(permission, message);
    795     }
    796 
    797     @Override
    798     public void enforceCallingOrSelfPermission(
    799             String permission, String message) {
    800         mBase.enforceCallingOrSelfPermission(permission, message);
    801     }
    802 
    803     @Override
    804     public void grantUriPermission(String toPackage, Uri uri, int modeFlags) {
    805         mBase.grantUriPermission(toPackage, uri, modeFlags);
    806     }
    807 
    808     @Override
    809     public void revokeUriPermission(Uri uri, int modeFlags) {
    810         mBase.revokeUriPermission(uri, modeFlags);
    811     }
    812 
    813     @Override
    814     public void revokeUriPermission(String targetPackage, Uri uri, int modeFlags) {
    815         mBase.revokeUriPermission(targetPackage, uri, modeFlags);
    816     }
    817 
    818     @Override
    819     public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags) {
    820         return mBase.checkUriPermission(uri, pid, uid, modeFlags);
    821     }
    822 
    823     /** @hide */
    824     @Override
    825     public int checkUriPermission(Uri uri, int pid, int uid, int modeFlags, IBinder callerToken) {
    826         return mBase.checkUriPermission(uri, pid, uid, modeFlags, callerToken);
    827     }
    828 
    829     @Override
    830     public int checkCallingUriPermission(Uri uri, int modeFlags) {
    831         return mBase.checkCallingUriPermission(uri, modeFlags);
    832     }
    833 
    834     @Override
    835     public int checkCallingOrSelfUriPermission(Uri uri, int modeFlags) {
    836         return mBase.checkCallingOrSelfUriPermission(uri, modeFlags);
    837     }
    838 
    839     @Override
    840     public int checkUriPermission(Uri uri, String readPermission,
    841             String writePermission, int pid, int uid, int modeFlags) {
    842         return mBase.checkUriPermission(uri, readPermission, writePermission,
    843                 pid, uid, modeFlags);
    844     }
    845 
    846     @Override
    847     public void enforceUriPermission(
    848             Uri uri, int pid, int uid, int modeFlags, String message) {
    849         mBase.enforceUriPermission(uri, pid, uid, modeFlags, message);
    850     }
    851 
    852     @Override
    853     public void enforceCallingUriPermission(
    854             Uri uri, int modeFlags, String message) {
    855         mBase.enforceCallingUriPermission(uri, modeFlags, message);
    856     }
    857 
    858     @Override
    859     public void enforceCallingOrSelfUriPermission(
    860             Uri uri, int modeFlags, String message) {
    861         mBase.enforceCallingOrSelfUriPermission(uri, modeFlags, message);
    862     }
    863 
    864     @Override
    865     public void enforceUriPermission(
    866             Uri uri, String readPermission, String writePermission,
    867             int pid, int uid, int modeFlags, String message) {
    868         mBase.enforceUriPermission(
    869                 uri, readPermission, writePermission, pid, uid, modeFlags,
    870                 message);
    871     }
    872 
    873     @Override
    874     public Context createPackageContext(String packageName, int flags)
    875         throws PackageManager.NameNotFoundException {
    876         return mBase.createPackageContext(packageName, flags);
    877     }
    878 
    879     /** @hide */
    880     @Override
    881     public Context createPackageContextAsUser(String packageName, int flags, UserHandle user)
    882             throws PackageManager.NameNotFoundException {
    883         return mBase.createPackageContextAsUser(packageName, flags, user);
    884     }
    885 
    886     /** @hide */
    887     @Override
    888     @UnsupportedAppUsage
    889     public Context createApplicationContext(ApplicationInfo application,
    890             int flags) throws PackageManager.NameNotFoundException {
    891         return mBase.createApplicationContext(application, flags);
    892     }
    893 
    894     /** @hide */
    895     @Override
    896     public Context createContextForSplit(String splitName)
    897             throws PackageManager.NameNotFoundException {
    898         return mBase.createContextForSplit(splitName);
    899     }
    900 
    901     /** @hide */
    902     @Override
    903     public int getUserId() {
    904         return mBase.getUserId();
    905     }
    906 
    907     @Override
    908     public Context createConfigurationContext(Configuration overrideConfiguration) {
    909         return mBase.createConfigurationContext(overrideConfiguration);
    910     }
    911 
    912     @Override
    913     public Context createDisplayContext(Display display) {
    914         return mBase.createDisplayContext(display);
    915     }
    916 
    917     @Override
    918     public boolean isRestricted() {
    919         return mBase.isRestricted();
    920     }
    921 
    922     /** @hide */
    923     @Override
    924     public DisplayAdjustments getDisplayAdjustments(int displayId) {
    925         return mBase.getDisplayAdjustments(displayId);
    926     }
    927 
    928     /** @hide */
    929     @TestApi
    930     @Override
    931     public Display getDisplay() {
    932         return mBase.getDisplay();
    933     }
    934 
    935     /**
    936      * @hide
    937      */
    938     @Override
    939     public int getDisplayId() {
    940         return mBase.getDisplayId();
    941     }
    942 
    943     /**
    944      * @hide
    945      */
    946     @Override
    947     public void updateDisplay(int displayId) {
    948         mBase.updateDisplay(displayId);
    949     }
    950 
    951     @Override
    952     public Context createDeviceProtectedStorageContext() {
    953         return mBase.createDeviceProtectedStorageContext();
    954     }
    955 
    956     /** {@hide} */
    957     @SystemApi
    958     @Override
    959     public Context createCredentialProtectedStorageContext() {
    960         return mBase.createCredentialProtectedStorageContext();
    961     }
    962 
    963     @Override
    964     public boolean isDeviceProtectedStorage() {
    965         return mBase.isDeviceProtectedStorage();
    966     }
    967 
    968     /** {@hide} */
    969     @SystemApi
    970     @Override
    971     public boolean isCredentialProtectedStorage() {
    972         return mBase.isCredentialProtectedStorage();
    973     }
    974 
    975     /** {@hide} */
    976     @Override
    977     public boolean canLoadUnsafeResources() {
    978         return mBase.canLoadUnsafeResources();
    979     }
    980 
    981     /**
    982      * @hide
    983      */
    984     @Override
    985     public IBinder getActivityToken() {
    986         return mBase.getActivityToken();
    987     }
    988 
    989     /**
    990      * @hide
    991      */
    992     @Override
    993     public IServiceConnection getServiceDispatcher(ServiceConnection conn, Handler handler,
    994             int flags) {
    995         return mBase.getServiceDispatcher(conn, handler, flags);
    996     }
    997 
    998     /**
    999      * @hide
   1000      */
   1001     @Override
   1002     public IApplicationThread getIApplicationThread() {
   1003         return mBase.getIApplicationThread();
   1004     }
   1005 
   1006     /**
   1007      * @hide
   1008      */
   1009     @Override
   1010     public Handler getMainThreadHandler() {
   1011         return mBase.getMainThreadHandler();
   1012     }
   1013 
   1014     /**
   1015      * @hide
   1016      */
   1017     @Override
   1018     public int getNextAutofillId() {
   1019         return mBase.getNextAutofillId();
   1020     }
   1021 
   1022     /**
   1023      * @hide
   1024      */
   1025     @Override
   1026     public AutofillClient getAutofillClient() {
   1027         return mBase.getAutofillClient();
   1028     }
   1029 
   1030     /**
   1031      * @hide
   1032      */
   1033     @Override
   1034     public void setAutofillClient(AutofillClient client) {
   1035         mBase.setAutofillClient(client);
   1036     }
   1037 
   1038     /** @hide */
   1039     @Override
   1040     public AutofillOptions getAutofillOptions() {
   1041         return mBase == null ? null : mBase.getAutofillOptions();
   1042     }
   1043 
   1044     /** @hide */
   1045     @Override
   1046     public void setAutofillOptions(AutofillOptions options) {
   1047         if (mBase != null) {
   1048             mBase.setAutofillOptions(options);
   1049         }
   1050     }
   1051 
   1052     /**
   1053      * @hide
   1054      */
   1055     @Override
   1056     public ContentCaptureOptions getContentCaptureOptions() {
   1057         return mBase == null ? null : mBase.getContentCaptureOptions();
   1058     }
   1059 
   1060     /**
   1061      * @hide
   1062      */
   1063     @TestApi
   1064     @Override
   1065     public void setContentCaptureOptions(ContentCaptureOptions options) {
   1066         if (mBase != null) {
   1067             mBase.setContentCaptureOptions(options);
   1068         }
   1069     }
   1070 }
   1071