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