1 package com.xtremelabs.robolectric; 2 3 import java.lang.reflect.Field; 4 import java.lang.reflect.Modifier; 5 import java.util.Arrays; 6 import java.util.List; 7 8 import org.apache.http.Header; 9 import org.apache.http.HttpRequest; 10 import org.apache.http.HttpResponse; 11 import org.apache.http.impl.client.DefaultRequestDirector; 12 13 import android.accounts.AccountManager; 14 import android.app.*; 15 import android.appwidget.AppWidgetManager; 16 import android.bluetooth.BluetoothAdapter; 17 import android.bluetooth.BluetoothDevice; 18 import android.content.*; 19 import android.content.pm.ResolveInfo; 20 import android.content.pm.Signature; 21 import android.content.res.AssetManager; 22 import android.content.res.Configuration; 23 import android.content.res.Resources; 24 import android.content.res.Resources.Theme; 25 import android.database.CursorWrapper; 26 import android.database.sqlite.*; 27 import android.graphics.*; 28 import android.graphics.drawable.*; 29 import android.hardware.Camera; 30 import android.hardware.SensorManager; 31 import android.location.Address; 32 import android.location.Geocoder; 33 import android.location.LocationManager; 34 import android.media.AudioManager; 35 import android.media.MediaPlayer; 36 import android.media.MediaRecorder; 37 import android.net.ConnectivityManager; 38 import android.net.NetworkInfo; 39 import android.net.wifi.ScanResult; 40 import android.net.wifi.WifiConfiguration; 41 import android.net.wifi.WifiInfo; 42 import android.net.wifi.WifiManager; 43 import android.os.*; 44 import android.preference.*; 45 import android.support.v4.app.DialogFragment; 46 import android.support.v4.app.Fragment; 47 import android.support.v4.app.FragmentActivity; 48 import android.support.v4.app.FragmentPagerAdapter; 49 import android.support.v4.app.ListFragment; 50 import android.support.v4.content.CursorLoader; 51 import android.support.v4.view.PagerAdapter; 52 import android.support.v4.view.ViewPager; 53 import android.telephony.PhoneNumberUtils; 54 import android.telephony.SmsManager; 55 import android.telephony.TelephonyManager; 56 import android.text.ClipboardManager; 57 import android.text.TextPaint; 58 import android.text.format.DateFormat; 59 import android.text.method.PasswordTransformationMethod; 60 import android.util.SparseArray; 61 import android.util.SparseBooleanArray; 62 import android.util.SparseIntArray; 63 import android.view.*; 64 import android.view.animation.*; 65 import android.view.inputmethod.InputMethodManager; 66 import android.webkit.*; 67 import android.widget.*; 68 69 import com.xtremelabs.robolectric.bytecode.RobolectricInternals; 70 import com.xtremelabs.robolectric.bytecode.ShadowWrangler; 71 import com.xtremelabs.robolectric.shadows.*; 72 import com.xtremelabs.robolectric.shadows.ShadowResources.ShadowTheme; 73 import com.xtremelabs.robolectric.tester.org.apache.http.FakeHttpLayer; 74 import com.xtremelabs.robolectric.tester.org.apache.http.HttpRequestInfo; 75 import com.xtremelabs.robolectric.tester.org.apache.http.RequestMatcher; 76 import com.xtremelabs.robolectric.util.Scheduler; 77 78 public class Robolectric { 79 public static Application application; 80 newInstanceOf(Class<T> clazz)81 public static <T> T newInstanceOf(Class<T> clazz) { 82 return RobolectricInternals.newInstanceOf(clazz); 83 } 84 newInstanceOf(String className)85 public static Object newInstanceOf(String className) { 86 try { 87 Class<?> clazz = Class.forName(className); 88 if (clazz != null) { 89 return newInstanceOf(clazz); 90 } 91 } catch (ClassNotFoundException e) { 92 } 93 return null; 94 } 95 bindShadowClass(Class<?> shadowClass)96 public static void bindShadowClass(Class<?> shadowClass) { 97 RobolectricInternals.bindShadowClass(shadowClass); 98 } 99 bindDefaultShadowClasses()100 public static void bindDefaultShadowClasses() { 101 bindShadowClasses(getDefaultShadowClasses()); 102 } 103 bindShadowClasses(List<Class<?>> shadowClasses)104 public static void bindShadowClasses(List<Class<?>> shadowClasses) { 105 for (Class<?> shadowClass : shadowClasses) { 106 bindShadowClass(shadowClass); 107 } 108 } 109 110 /** 111 * Invoke this utility method in tests to reveal which Android api classes and methods are being invoked 112 * for which there are no shadows or shadow methods. This helps expose which methods are being invoked 113 * either by a third party library or application code which need new shadow methods to be written. Generates 114 * output for the current test only. 115 */ logMissingInvokedShadowMethods()116 public static void logMissingInvokedShadowMethods() { 117 ShadowWrangler.getInstance().logMissingInvokedShadowMethods(); 118 } 119 getDefaultShadowClasses()120 public static List<Class<?>> getDefaultShadowClasses() { 121 return Arrays.asList( 122 ShadowAbsListView.class, 123 ShadowAbsoluteLayout.class, 124 ShadowAbsSeekBar.class, 125 ShadowAbsSpinner.class, 126 ShadowAbstractCursor.class, 127 ShadowAccount.class, 128 ShadowAccountManager.class, 129 ShadowActivity.class, 130 ShadowActivityInfo.class, 131 ShadowActivityGroup.class, 132 ShadowActivityManager.class, 133 ShadowAdapterView.class, 134 ShadowAddress.class, 135 ShadowAlarmManager.class, 136 ShadowAlertDialog.class, 137 ShadowAlertDialog.ShadowBuilder.class, 138 ShadowAlphaAnimation.class, 139 ShadowAndroidHttpClient.class, 140 ShadowAnimation.class, 141 ShadowAnimationDrawable.class, 142 ShadowAnimationSet.class, 143 ShadowAnimationUtils.class, 144 ShadowApplication.class, 145 ShadowAppWidgetManager.class, 146 ShadowArrayAdapter.class, 147 ShadowAssetManager.class, 148 ShadowAsyncTask.class, 149 ShadowAudioManager.class, 150 ShadowAutoCompleteTextView.class, 151 ShadowBase64.class, 152 ShadowBaseAdapter.class, 153 ShadowBinder.class, 154 ShadowBitmap.class, 155 ShadowBitmapDrawable.class, 156 ShadowBitmapFactory.class, 157 ShadowBluetoothAdapter.class, 158 ShadowBluetoothDevice.class, 159 ShadowBundle.class, 160 ShadowButton.class, 161 ShadowCamera.class, 162 ShadowCameraParameters.class, 163 ShadowCameraSize.class, 164 ShadowCanvas.class, 165 ShadowCheckedTextView.class, 166 ShadowClipboardManager.class, 167 ShadowColor.class, 168 ShadowColorDrawable.class, 169 ShadowColorMatrix.class, 170 ShadowColorMatrixColorFilter.class, 171 ShadowColorStateList.class, 172 ShadowComponentName.class, 173 ShadowCompoundButton.class, 174 ShadowConfiguration.class, 175 ShadowConnectivityManager.class, 176 ShadowContentProvider.class, 177 ShadowContentProviderOperation.class, 178 ShadowContentProviderOperationBuilder.class, 179 ShadowContentProviderResult.class, 180 ShadowContentResolver.class, 181 ShadowContentUris.class, 182 ShadowContentValues.class, 183 ShadowContext.class, 184 ShadowContextWrapper.class, 185 ShadowContextThemeWrapper.class, 186 ShadowCookieManager.class, 187 ShadowCookieSyncManager.class, 188 ShadowCriteria.class, 189 ShadowCountDownTimer.class, 190 ShadowCursorAdapter.class, 191 ShadowCursorLoader.class, 192 ShadowCursorWrapper.class, 193 ShadowDatabaseUtils.class, 194 ShadowDateFormat.class, 195 ShadowDefaultRequestDirector.class, 196 ShadowDisplay.class, 197 ShadowDrawable.class, 198 ShadowDialog.class, 199 ShadowDialogFragment.class, 200 ShadowDialogPreference.class, 201 ShadowEditText.class, 202 ShadowEnvironment.class, 203 ShadowExpandableListView.class, 204 ShadowFilter.class, 205 ShadowFloatMath.class, 206 ShadowFragment.class, 207 ShadowFragmentActivity.class, 208 ShadowFragmentPagerAdapter.class, 209 ShadowFrameLayout.class, 210 ShadowGallery.class, 211 ShadowGeocoder.class, 212 ShadowGeoPoint.class, 213 ShadowGridView.class, 214 ShadowHandler.class, 215 ShadowHandlerThread.class, 216 ShadowHtml.class, 217 ShadowImageView.class, 218 ShadowInputMethodManager.class, 219 ShadowIntent.class, 220 ShadowIntentFilter.class, 221 ShadowIntentFilterAuthorityEntry.class, 222 ShadowItemizedOverlay.class, 223 ShadowJsPromptResult.class, 224 ShadowJsResult.class, 225 ShadowKeyEvent.class, 226 ShadowKeyguardManager.class, 227 ShadowKeyGuardLock.class, 228 ShadowLayerDrawable.class, 229 ShadowLayoutInflater.class, 230 ShadowLayoutParams.class, 231 ShadowLinearLayout.class, 232 ShadowLinkMovementMethod.class, 233 ShadowListActivity.class, 234 ShadowListFragment.class, 235 ShadowListPreference.class, 236 ShadowListView.class, 237 ShadowLocation.class, 238 ShadowLocationManager.class, 239 ShadowLog.class, 240 ShadowLooper.class, 241 ShadowMapController.class, 242 ShadowMapActivity.class, 243 ShadowMapView.class, 244 ShadowMarginLayoutParams.class, 245 ShadowMatrix.class, 246 ShadowMatrixCursor.class, 247 ShadowMediaPlayer.class, 248 ShadowMediaRecorder.class, 249 ShadowMediaStore.ShadowImages.ShadowMedia.class, 250 ShadowMenuInflater.class, 251 ShadowMessage.class, 252 ShadowMessenger.class, 253 ShadowMimeTypeMap.class, 254 ShadowMotionEvent.class, 255 ShadowNotification.class, 256 ShadowNdefMessage.class, 257 ShadowNdefRecord.class, 258 ShadowNfcAdapter.class, 259 ShadowNotificationManager.class, 260 ShadowNetworkInfo.class, 261 ShadowOverlayItem.class, 262 ShadowPagerAdapter.class, 263 ShadowPaint.class, 264 ShadowPair.class, 265 ShadowParcel.class, 266 ShadowPasswordTransformationMethod.class, 267 ShadowPath.class, 268 ShadowPatterns.class, 269 ShadowPendingIntent.class, 270 ShadowPeriodicSync.class, 271 ShadowPhoneNumberUtils.class, 272 ShadowPoint.class, 273 ShadowPointF.class, 274 ShadowPopupWindow.class, 275 ShadowPowerManager.class, 276 ShadowPowerManager.ShadowWakeLock.class, 277 ShadowPreference.class, 278 ShadowPreferenceActivity.class, 279 ShadowPreferenceCategory.class, 280 ShadowPreferenceGroup.class, 281 ShadowPreferenceManager.class, 282 ShadowPreferenceScreen.class, 283 ShadowProcess.class, 284 ShadowProgressBar.class, 285 ShadowProgressDialog.class, 286 ShadowRadioButton.class, 287 ShadowRadioGroup.class, 288 ShadowRatingBar.class, 289 ShadowRect.class, 290 ShadowResolveInfo.class, 291 ShadowRemoteCallbackList.class, 292 ShadowRemoteViews.class, 293 ShadowResultReceiver.class, 294 ShadowResourceCursorAdapter.class, 295 ShadowResources.class, 296 ShadowResources.ShadowTheme.class, 297 ShadowScanResult.class, 298 ShadowScrollView.class, 299 ShadowSeekBar.class, 300 ShadowSensorManager.class, 301 ShadowService.class, 302 ShadowSettings.class, 303 ShadowSettings.ShadowGlobal.class, 304 ShadowSettings.ShadowSecure.class, 305 ShadowSettings.ShadowSystem.class, 306 ShadowSignature.class, 307 ShadowSimpleCursorAdapter.class, 308 ShadowShapeDrawable.class, 309 ShadowSmsManager.class, 310 ShadowSpannableString.class, 311 ShadowSpannableStringBuilder.class, 312 ShadowSparseArray.class, 313 ShadowSparseBooleanArray.class, 314 ShadowSparseIntArray.class, 315 ShadowSpinner.class, 316 ShadowSSLCertificateSocketFactory.class, 317 ShadowSyncResult.class, 318 ShadowSyncResult.ShadowSyncStats.class, 319 ShadowSQLiteProgram.class, 320 ShadowSQLiteCloseable.class, 321 ShadowSQLiteDatabase.class, 322 ShadowSQLiteCursor.class, 323 ShadowSQLiteOpenHelper.class, 324 ShadowSQLiteStatement.class, 325 ShadowSQLiteQueryBuilder.class, 326 ShadowSslErrorHandler.class, 327 ShadowStateListDrawable.class, 328 ShadowStatFs.class, 329 ShadowSurfaceView.class, 330 ShadowTabActivity.class, 331 ShadowTabHost.class, 332 ShadowTabSpec.class, 333 ShadowTelephonyManager.class, 334 ShadowTextPaint.class, 335 ShadowTextUtils.class, 336 ShadowTextView.class, 337 ShadowTime.class, 338 ShadowToast.class, 339 ShadowTranslateAnimation.class, 340 ShadowTypedArray.class, 341 ShadowTypedValue.class, 342 ShadowUriMatcher.class, 343 ShadowURLSpan.class, 344 ShadowVibrator.class, 345 ShadowVideoView.class, 346 ShadowView.class, 347 ShadowViewAnimator.class, 348 ShadowViewConfiguration.class, 349 ShadowViewGroup.class, 350 ShadowViewFlipper.class, 351 ShadowViewMeasureSpec.class, 352 ShadowViewPager.class, 353 ShadowViewStub.class, 354 ShadowViewTreeObserver.class, 355 ShadowWebView.class, 356 ShadowWifiConfiguration.class, 357 ShadowWifiInfo.class, 358 ShadowWifiManager.class, 359 ShadowWifiManager.ShadowWifiLock.class, 360 ShadowWindow.class, 361 ShadowZoomButtonsController.class 362 ); 363 } 364 resetStaticState()365 public static void resetStaticState() { 366 ShadowWrangler.getInstance().silence(); 367 Robolectric.application = new Application(); 368 ShadowBinder.reset(); 369 ShadowBitmapFactory.reset(); 370 ShadowDrawable.reset(); 371 ShadowMediaStore.reset(); 372 ShadowLog.reset(); 373 ShadowContext.clearFilesAndCache(); 374 ShadowLooper.resetThreadLoopers(); 375 ShadowDialog.reset(); 376 ShadowContentResolver.reset(); 377 ShadowLocalBroadcastManager.reset(); 378 ShadowMimeTypeMap.reset(); 379 ShadowStatFs.reset(); 380 ShadowProcess.reset(); 381 ShadowAccount.reset(); 382 ShadowIntent.reset(); 383 ShadowSignature.reset(); 384 ShadowBundle.reset(); 385 ShadowPatterns.reset(); 386 } 387 directlyOn(T shadowedObject)388 public static <T> T directlyOn(T shadowedObject) { 389 return RobolectricInternals.directlyOn(shadowedObject); 390 } 391 shadowOf(AbsListView instance)392 public static ShadowAbsListView shadowOf(AbsListView instance) { 393 return (ShadowAbsListView) shadowOf_(instance); 394 } 395 shadowOf(AbsSeekBar instance)396 public static ShadowAbsSeekBar shadowOf(AbsSeekBar instance) { 397 return (ShadowAbsSeekBar) shadowOf_(instance); 398 } 399 shadowOf(AccountManager instance)400 public static ShadowAccountManager shadowOf(AccountManager instance) { 401 return (ShadowAccountManager) shadowOf_(instance); 402 } 403 shadowOf(Activity instance)404 public static ShadowActivity shadowOf(Activity instance) { 405 return (ShadowActivity) shadowOf_(instance); 406 } 407 shadowOf(ActivityGroup instance)408 public static ShadowActivityGroup shadowOf(ActivityGroup instance) { 409 return (ShadowActivityGroup) shadowOf_(instance); 410 } 411 shadowOf(ActivityManager instance)412 public static ShadowActivityManager shadowOf(ActivityManager instance) { 413 return (ShadowActivityManager) shadowOf_(instance); 414 } 415 shadowOf(AdapterView instance)416 public static ShadowAdapterView shadowOf(AdapterView instance) { 417 return (ShadowAdapterView) shadowOf_(instance); 418 } 419 shadowOf(Address instance)420 public static ShadowAddress shadowOf(Address instance) { 421 return (ShadowAddress) shadowOf_(instance); 422 } 423 shadowOf(AlarmManager instance)424 public static ShadowAlarmManager shadowOf(AlarmManager instance) { 425 return (ShadowAlarmManager) Robolectric.shadowOf_(instance); 426 } 427 shadowOf(AlertDialog instance)428 public static ShadowAlertDialog shadowOf(AlertDialog instance) { 429 return (ShadowAlertDialog) shadowOf_(instance); 430 } 431 shadowOf(AlphaAnimation instance)432 public static ShadowAlphaAnimation shadowOf(AlphaAnimation instance) { 433 return (ShadowAlphaAnimation) shadowOf_(instance); 434 } 435 shadowOf(Animation instance)436 public static ShadowAnimation shadowOf(Animation instance) { 437 return (ShadowAnimation) shadowOf_(instance); 438 } 439 shadowOf(AnimationDrawable instance)440 public static ShadowAnimationDrawable shadowOf(AnimationDrawable instance) { 441 return (ShadowAnimationDrawable) shadowOf_(instance); 442 } 443 shadowOf(AnimationSet instance)444 public static ShadowAnimationSet shadowOf(AnimationSet instance) { 445 return (ShadowAnimationSet) shadowOf_(instance); 446 } 447 shadowOf(AnimationUtils instance)448 public static ShadowAnimationUtils shadowOf(AnimationUtils instance) { 449 return (ShadowAnimationUtils) shadowOf_(instance); 450 } 451 shadowOf(Application instance)452 public static ShadowApplication shadowOf(Application instance) { 453 return (ShadowApplication) shadowOf_(instance); 454 } 455 shadowOf(AppWidgetManager instance)456 public static ShadowAppWidgetManager shadowOf(AppWidgetManager instance) { 457 return (ShadowAppWidgetManager) shadowOf_(instance); 458 } 459 shadowOf(ArrayAdapter instance)460 public static ShadowArrayAdapter shadowOf(ArrayAdapter instance) { 461 return (ShadowArrayAdapter) shadowOf_(instance); 462 } 463 shadowOf(AssetManager instance)464 public static ShadowAssetManager shadowOf(AssetManager instance) { 465 return (ShadowAssetManager) Robolectric.shadowOf_(instance); 466 } 467 468 @SuppressWarnings("rawtypes") shadowOf(AsyncTask instance)469 public static ShadowAsyncTask shadowOf(AsyncTask instance){ 470 return (ShadowAsyncTask) Robolectric.shadowOf_( instance ); 471 } 472 shadowOf(AudioManager instance)473 public static ShadowAudioManager shadowOf(AudioManager instance) { 474 return (ShadowAudioManager) shadowOf_(instance); 475 } 476 shadowOf(AutoCompleteTextView instance)477 public static ShadowAutoCompleteTextView shadowOf(AutoCompleteTextView instance) { 478 return (ShadowAutoCompleteTextView) shadowOf_(instance); 479 } 480 shadowOf(BaseAdapter other)481 public static ShadowBaseAdapter shadowOf(BaseAdapter other) { 482 return (ShadowBaseAdapter) Robolectric.shadowOf_(other); 483 } 484 shadowOf(Bitmap other)485 public static ShadowBitmap shadowOf(Bitmap other) { 486 return (ShadowBitmap) Robolectric.shadowOf_(other); 487 } 488 shadowOf(BitmapDrawable instance)489 public static ShadowBitmapDrawable shadowOf(BitmapDrawable instance) { 490 return (ShadowBitmapDrawable) shadowOf_(instance); 491 } 492 shadowOf(BluetoothAdapter other)493 public static ShadowBluetoothAdapter shadowOf(BluetoothAdapter other) { 494 return (ShadowBluetoothAdapter) Robolectric.shadowOf_(other); 495 } 496 shadowOf(BluetoothDevice other)497 public static ShadowBluetoothDevice shadowOf(BluetoothDevice other) { 498 return (ShadowBluetoothDevice) Robolectric.shadowOf_(other); 499 } 500 shadowOf(Bundle instance)501 public static ShadowBundle shadowOf(Bundle instance) { 502 return (ShadowBundle) shadowOf_(instance); 503 } 504 shadowOf(Camera instance)505 public static ShadowCamera shadowOf(Camera instance) { 506 return (ShadowCamera) shadowOf_(instance); 507 } 508 shadowOf(Camera.Parameters instance)509 public static ShadowCameraParameters shadowOf(Camera.Parameters instance) { 510 return (ShadowCameraParameters) shadowOf_(instance); 511 } 512 shadowOf(Camera.Size instance)513 public static ShadowCameraSize shadowOf(Camera.Size instance) { 514 return (ShadowCameraSize) shadowOf_(instance); 515 } 516 shadowOf(Canvas instance)517 public static ShadowCanvas shadowOf(Canvas instance) { 518 return (ShadowCanvas) shadowOf_(instance); 519 } 520 shadowOf(CheckedTextView instance)521 public static ShadowCheckedTextView shadowOf(CheckedTextView instance) { 522 return (ShadowCheckedTextView) shadowOf_(instance); 523 } 524 shadowOf(ClipboardManager instance)525 public static ShadowClipboardManager shadowOf(ClipboardManager instance) { 526 return (ShadowClipboardManager) shadowOf_(instance); 527 } 528 shadowOf(Color instance)529 public static ShadowColor shadowOf(Color instance) { 530 return (ShadowColor) shadowOf_(instance); 531 } 532 shadowOf(ColorDrawable instance)533 public static ShadowColorDrawable shadowOf(ColorDrawable instance) { 534 return (ShadowColorDrawable) shadowOf_(instance); 535 } 536 shadowOf(ColorMatrix instance)537 public static ShadowColorMatrix shadowOf(ColorMatrix instance) { 538 return (ShadowColorMatrix) shadowOf_(instance); 539 } 540 shadowOf(Configuration instance)541 public static ShadowConfiguration shadowOf(Configuration instance) { 542 return (ShadowConfiguration) Robolectric.shadowOf_(instance); 543 } 544 shadowOf(ConnectivityManager instance)545 public static ShadowConnectivityManager shadowOf(ConnectivityManager instance) { 546 return (ShadowConnectivityManager) shadowOf_(instance); 547 } 548 shadowOf(CookieManager instance)549 public static ShadowCookieManager shadowOf(CookieManager instance) { 550 return (ShadowCookieManager) shadowOf_(instance); 551 } 552 shadowOf(ContentResolver instance)553 public static ShadowContentResolver shadowOf(ContentResolver instance) { 554 return (ShadowContentResolver) shadowOf_(instance); 555 } 556 shadowOf(ContentProviderOperation instance)557 public static ShadowContentProviderOperation shadowOf(ContentProviderOperation instance) { 558 return (ShadowContentProviderOperation) shadowOf_(instance); 559 } 560 shadowOf(ContentProviderOperation.Builder instance)561 public static ShadowContentProviderOperationBuilder shadowOf(ContentProviderOperation.Builder instance) { 562 return (ShadowContentProviderOperationBuilder) shadowOf_(instance); 563 } 564 shadowOf(ContentProviderResult instance)565 public static ShadowContentProviderResult shadowOf(ContentProviderResult instance) { 566 return (ShadowContentProviderResult) shadowOf_(instance); 567 } 568 shadowOf(CookieSyncManager instance)569 public static ShadowCookieSyncManager shadowOf(CookieSyncManager instance) { 570 return (ShadowCookieSyncManager) shadowOf_(instance); 571 } 572 shadowOf(Context instance)573 public static ShadowContext shadowOf(Context instance) { 574 return (ShadowContext) shadowOf_(instance); 575 } 576 shadowOf(ContentValues other)577 public static ShadowContentValues shadowOf(ContentValues other) { 578 return (ShadowContentValues) Robolectric.shadowOf_(other); 579 } 580 shadowOf(ContextWrapper instance)581 public static ShadowContextWrapper shadowOf(ContextWrapper instance) { 582 return (ShadowContextWrapper) shadowOf_(instance); 583 } 584 shadowOf(CountDownTimer instance)585 public static ShadowCountDownTimer shadowOf(CountDownTimer instance) { 586 return (ShadowCountDownTimer) Robolectric.shadowOf_(instance); 587 } 588 shadowOf(CursorAdapter instance)589 public static ShadowCursorAdapter shadowOf(CursorAdapter instance) { 590 return (ShadowCursorAdapter) shadowOf_(instance); 591 } 592 shadowOf(CursorLoader instance)593 public static ShadowCursorLoader shadowOf(CursorLoader instance) { 594 return (ShadowCursorLoader) shadowOf_(instance); 595 } 596 shadowOf(CursorWrapper instance)597 public static ShadowCursorWrapper shadowOf(CursorWrapper instance) { 598 return (ShadowCursorWrapper) shadowOf_(instance); 599 } 600 shadowOf(DateFormat instance)601 public static ShadowDateFormat shadowOf(DateFormat instance) { 602 return (ShadowDateFormat) shadowOf_(instance); 603 } 604 shadowOf(DefaultRequestDirector instance)605 public static ShadowDefaultRequestDirector shadowOf(DefaultRequestDirector instance) { 606 return (ShadowDefaultRequestDirector) shadowOf_(instance); 607 } 608 shadowOf(Dialog instance)609 public static ShadowDialog shadowOf(Dialog instance) { 610 return (ShadowDialog) shadowOf_(instance); 611 } 612 shadowOf(DialogFragment instance)613 public static ShadowDialogFragment shadowOf(DialogFragment instance) { 614 return (ShadowDialogFragment) shadowOf_(instance); 615 } 616 shadowOf(DialogPreference instance)617 public static ShadowDialogPreference shadowOf(DialogPreference instance) { 618 return (ShadowDialogPreference) shadowOf_(instance); 619 } 620 shadowOf(Drawable instance)621 public static ShadowDrawable shadowOf(Drawable instance) { 622 return (ShadowDrawable) shadowOf_(instance); 623 } 624 shadowOf(Display instance)625 public static ShadowDisplay shadowOf(Display instance) { 626 return (ShadowDisplay) shadowOf_(instance); 627 } 628 shadowOf(ExpandableListView instance)629 public static ShadowExpandableListView shadowOf(ExpandableListView instance) { 630 return (ShadowExpandableListView) shadowOf_(instance); 631 } 632 shadowOf(Filter instance)633 public static ShadowFilter shadowOf(Filter instance) { 634 return (ShadowFilter) shadowOf_(instance); 635 } 636 shadowOf(Fragment instance)637 public static ShadowFragment shadowOf(Fragment instance) { 638 return (ShadowFragment) shadowOf_(instance); 639 } 640 shadowOf(FragmentActivity instance)641 public static ShadowFragmentActivity shadowOf(FragmentActivity instance) { 642 return (ShadowFragmentActivity) shadowOf_(instance); 643 } 644 shadowOf(FragmentPagerAdapter instance)645 public static ShadowFragmentPagerAdapter shadowOf(FragmentPagerAdapter instance) { 646 return (ShadowFragmentPagerAdapter) shadowOf_(instance); 647 } 648 shadowOf(FrameLayout instance)649 public static ShadowFrameLayout shadowOf(FrameLayout instance) { 650 return (ShadowFrameLayout) shadowOf_(instance); 651 } 652 shadowOf(Gallery instance)653 public static ShadowGallery shadowOf(Gallery instance) { 654 return (ShadowGallery) shadowOf_(instance); 655 } 656 shadowOf(Geocoder instance)657 public static ShadowGeocoder shadowOf(Geocoder instance) { 658 return (ShadowGeocoder) shadowOf_(instance); 659 } 660 shadowOf(GridView instance)661 public static ShadowGridView shadowOf(GridView instance) { 662 return (ShadowGridView) shadowOf_(instance); 663 } 664 shadowOf(Handler instance)665 public static ShadowHandler shadowOf(Handler instance) { 666 return (ShadowHandler) shadowOf_(instance); 667 } 668 shadowOf(HandlerThread instance)669 public static ShadowHandlerThread shadowOf(HandlerThread instance) { 670 return (ShadowHandlerThread) shadowOf_(instance); 671 } 672 shadowOf(ImageView instance)673 public static ShadowImageView shadowOf(ImageView instance) { 674 return (ShadowImageView) shadowOf_(instance); 675 } 676 shadowOf(InputMethodManager instance)677 public static ShadowInputMethodManager shadowOf(InputMethodManager instance) { 678 return (ShadowInputMethodManager) shadowOf_(instance); 679 } 680 shadowOf(Intent instance)681 public static ShadowIntent shadowOf(Intent instance) { 682 return (ShadowIntent) shadowOf_(instance); 683 } 684 shadowOf(JsPromptResult instance)685 public static ShadowJsPromptResult shadowOf(JsPromptResult instance) { 686 return (ShadowJsPromptResult) shadowOf_(instance); 687 } 688 shadowOf(JsResult instance)689 public static ShadowJsResult shadowOf(JsResult instance) { 690 return (ShadowJsResult) shadowOf_(instance); 691 } 692 shadowOf(KeyguardManager instance)693 public static ShadowKeyguardManager shadowOf(KeyguardManager instance) { 694 return (ShadowKeyguardManager) shadowOf_(instance); 695 } 696 shadowOf(KeyguardManager.KeyguardLock instance)697 public static ShadowKeyGuardLock shadowOf(KeyguardManager.KeyguardLock instance) { 698 return (ShadowKeyGuardLock) shadowOf_(instance); 699 } 700 shadowOf(LayerDrawable instance)701 public static ShadowLayerDrawable shadowOf(LayerDrawable instance) { 702 return (ShadowLayerDrawable) shadowOf_(instance); 703 } 704 shadowOf(LayoutInflater instance)705 public static ShadowLayoutInflater shadowOf(LayoutInflater instance) { 706 return (ShadowLayoutInflater) shadowOf_(instance); 707 } 708 shadowOf(ListActivity instance)709 public static ShadowListActivity shadowOf(ListActivity instance) { 710 return (ShadowListActivity) shadowOf_(instance); 711 } 712 shadowOf(ListFragment instance)713 public static ShadowListFragment shadowOf(ListFragment instance) { 714 return (ShadowListFragment) shadowOf_(instance); 715 } 716 shadowOf(ListPreference instance)717 public static ShadowListPreference shadowOf(ListPreference instance) { 718 return (ShadowListPreference) shadowOf_(instance); 719 } 720 shadowOf(ListView instance)721 public static ShadowListView shadowOf(ListView instance) { 722 return (ShadowListView) shadowOf_(instance); 723 } 724 shadowOf(LocationManager instance)725 public static ShadowLocationManager shadowOf(LocationManager instance) { 726 return (ShadowLocationManager) shadowOf_(instance); 727 } 728 shadowOf(Looper instance)729 public static ShadowLooper shadowOf(Looper instance) { 730 return (ShadowLooper) shadowOf_(instance); 731 } 732 shadowOf(Matrix other)733 public static ShadowMatrix shadowOf(Matrix other) { 734 return (ShadowMatrix) Robolectric.shadowOf_(other); 735 } 736 shadowOf(MediaPlayer instance)737 public static ShadowMediaPlayer shadowOf(MediaPlayer instance) { 738 return (ShadowMediaPlayer) shadowOf_(instance); 739 } 740 shadowOf(MediaRecorder instance)741 public static ShadowMediaRecorder shadowOf(MediaRecorder instance) { 742 return (ShadowMediaRecorder) shadowOf_(instance); 743 } 744 shadowOf(MenuInflater instance)745 public static ShadowMenuInflater shadowOf(MenuInflater instance) { 746 return (ShadowMenuInflater) shadowOf_(instance); 747 } 748 shadowOf(Message instance)749 public static ShadowMessage shadowOf(Message instance) { 750 return (ShadowMessage) shadowOf_(instance); 751 } 752 shadowOf(MimeTypeMap instance)753 public static ShadowMimeTypeMap shadowOf(MimeTypeMap instance) { 754 return (ShadowMimeTypeMap) shadowOf_(instance); 755 } 756 shadowOf(MotionEvent other)757 public static ShadowMotionEvent shadowOf(MotionEvent other) { 758 return (ShadowMotionEvent) Robolectric.shadowOf_(other); 759 } 760 shadowOf(NetworkInfo instance)761 public static ShadowNetworkInfo shadowOf(NetworkInfo instance) { 762 return (ShadowNetworkInfo) shadowOf_(instance); 763 } 764 shadowOf(Notification other)765 public static ShadowNotification shadowOf(Notification other) { 766 return (ShadowNotification) Robolectric.shadowOf_(other); 767 } 768 shadowOf(NotificationManager other)769 public static ShadowNotificationManager shadowOf(NotificationManager other) { 770 return (ShadowNotificationManager) Robolectric.shadowOf_(other); 771 } 772 shadowOf(PagerAdapter instance)773 public static ShadowPagerAdapter shadowOf(PagerAdapter instance) { 774 return (ShadowPagerAdapter) shadowOf_(instance); 775 } 776 shadowOf(Paint instance)777 public static ShadowPaint shadowOf(Paint instance) { 778 return (ShadowPaint) shadowOf_(instance); 779 } 780 shadowOf(Parcel instance)781 public static ShadowParcel shadowOf(Parcel instance) { 782 return (ShadowParcel) shadowOf_(instance); 783 } 784 shadowOf(PasswordTransformationMethod instance)785 public static ShadowPasswordTransformationMethod shadowOf(PasswordTransformationMethod instance) { 786 return (ShadowPasswordTransformationMethod) shadowOf_(instance); 787 } 788 shadowOf(Path instance)789 public static ShadowPath shadowOf(Path instance) { 790 return (ShadowPath) shadowOf_(instance); 791 } 792 shadowOf(PendingIntent instance)793 public static ShadowPendingIntent shadowOf(PendingIntent instance) { 794 return (ShadowPendingIntent) shadowOf_(instance); 795 } 796 shadowOf(PhoneNumberUtils instance)797 public static ShadowPhoneNumberUtils shadowOf(PhoneNumberUtils instance) { 798 return (ShadowPhoneNumberUtils) shadowOf_(instance); 799 } 800 shadowOf(PopupWindow instance)801 public static ShadowPopupWindow shadowOf(PopupWindow instance) { 802 return (ShadowPopupWindow) shadowOf_(instance); 803 } 804 shadowOf(PowerManager instance)805 public static ShadowPowerManager shadowOf(PowerManager instance) { 806 return (ShadowPowerManager) shadowOf_(instance); 807 } 808 shadowOf(Preference instance)809 public static ShadowPreference shadowOf(Preference instance) { 810 return (ShadowPreference) shadowOf_(instance); 811 } 812 shadowOf(PreferenceActivity instance)813 public static ShadowPreferenceActivity shadowOf(PreferenceActivity instance) { 814 return (ShadowPreferenceActivity) shadowOf_(instance); 815 } 816 shadowOf(PreferenceCategory instance)817 public static ShadowPreferenceCategory shadowOf(PreferenceCategory instance) { 818 return (ShadowPreferenceCategory) shadowOf_(instance); 819 } 820 shadowOf(PreferenceGroup instance)821 public static ShadowPreferenceGroup shadowOf(PreferenceGroup instance) { 822 return (ShadowPreferenceGroup) shadowOf_(instance); 823 } 824 shadowOf(PreferenceScreen instance)825 public static ShadowPreferenceScreen shadowOf(PreferenceScreen instance) { 826 return (ShadowPreferenceScreen) shadowOf_(instance); 827 } 828 shadowOf(ProgressBar instance)829 public static ShadowProgressBar shadowOf(ProgressBar instance) { 830 return (ShadowProgressBar) shadowOf_(instance); 831 } 832 shadowOf(ProgressDialog instance)833 public static ShadowProgressDialog shadowOf(ProgressDialog instance) { 834 return (ShadowProgressDialog) shadowOf_(instance); 835 } 836 shadowOf(Rect instance)837 public static ShadowRect shadowOf(Rect instance) { 838 return (ShadowRect) shadowOf_(instance); 839 } 840 shadowOf(RatingBar instance)841 public static ShadowRatingBar shadowOf(RatingBar instance) { 842 return (ShadowRatingBar) shadowOf_(instance); 843 } 844 shadowOf(RemoteViews instance)845 public static ShadowRemoteViews shadowOf(RemoteViews instance) { 846 return (ShadowRemoteViews) shadowOf_(instance); 847 } 848 shadowOf(ResolveInfo instance)849 public static ShadowResolveInfo shadowOf(ResolveInfo instance) { 850 return (ShadowResolveInfo) shadowOf_(instance); 851 } 852 shadowOf(ResourceCursorAdapter instance)853 public static ShadowResourceCursorAdapter shadowOf(ResourceCursorAdapter instance) { 854 return (ShadowResourceCursorAdapter) shadowOf_(instance); 855 } 856 shadowOf(Resources instance)857 public static ShadowResources shadowOf(Resources instance) { 858 return (ShadowResources) shadowOf_(instance); 859 } 860 shadowOf(ResultReceiver instance)861 public static ShadowResultReceiver shadowOf(ResultReceiver instance) { 862 return (ShadowResultReceiver) shadowOf_(instance); 863 } 864 shadowOf(ScanResult instance)865 public static ShadowScanResult shadowOf(ScanResult instance) { 866 return (ShadowScanResult) shadowOf_(instance); 867 } 868 shadowOf(ScrollView instance)869 public static ShadowScrollView shadowOf(ScrollView instance) { 870 return (ShadowScrollView) shadowOf_(instance); 871 } 872 shadowOf(SeekBar instance)873 public static ShadowSeekBar shadowOf(SeekBar instance) { 874 return (ShadowSeekBar) shadowOf_(instance); 875 } 876 shadowOf(SensorManager instance)877 public static ShadowSensorManager shadowOf(SensorManager instance) { 878 return (ShadowSensorManager) shadowOf_(instance); 879 } 880 shadowOf(Service instance)881 public static ShadowService shadowOf(Service instance) { 882 return (ShadowService) shadowOf_(instance); 883 } 884 shadowOf(ShapeDrawable instance)885 public static ShadowShapeDrawable shadowOf(ShapeDrawable instance) { 886 return (ShadowShapeDrawable) shadowOf_(instance); 887 } 888 shadowOf(Signature instance)889 public static ShadowSignature shadowOf(Signature instance) { 890 return (ShadowSignature) shadowOf_(instance); 891 } 892 shadowOf(SimpleCursorAdapter instance)893 public static ShadowSimpleCursorAdapter shadowOf(SimpleCursorAdapter instance) { 894 return (ShadowSimpleCursorAdapter) shadowOf_(instance); 895 } 896 shadowOf(SmsManager instance)897 public static ShadowSmsManager shadowOf(SmsManager instance) { 898 return (ShadowSmsManager) shadowOf_(instance); 899 } 900 shadowOf(SparseArray<E> other)901 public static <E> ShadowSparseArray<E> shadowOf(SparseArray<E> other) { 902 //noinspection unchecked 903 return (ShadowSparseArray<E>) Robolectric.shadowOf_(other); 904 } 905 shadowOf(SparseBooleanArray other)906 public static ShadowSparseBooleanArray shadowOf(SparseBooleanArray other) { 907 return (ShadowSparseBooleanArray) Robolectric.shadowOf_(other); 908 } 909 shadowOf(SparseIntArray other)910 public static ShadowSparseIntArray shadowOf(SparseIntArray other){ 911 return (ShadowSparseIntArray) Robolectric.shadowOf_( other ); 912 } 913 shadowOf(SQLiteCursor other)914 public static ShadowSQLiteCursor shadowOf(SQLiteCursor other) { 915 return (ShadowSQLiteCursor) Robolectric.shadowOf_(other); 916 } 917 shadowOf(SQLiteDatabase other)918 public static ShadowSQLiteDatabase shadowOf(SQLiteDatabase other) { 919 return (ShadowSQLiteDatabase) Robolectric.shadowOf_(other); 920 } 921 shadowOf(SQLiteOpenHelper other)922 public static ShadowSQLiteOpenHelper shadowOf(SQLiteOpenHelper other) { 923 return (ShadowSQLiteOpenHelper) Robolectric.shadowOf_(other); 924 } 925 shadowOf(SQLiteProgram other)926 public static ShadowSQLiteProgram shadowOf(SQLiteProgram other) { 927 return (ShadowSQLiteProgram) Robolectric.shadowOf_(other); 928 } 929 shadowOf(SQLiteQueryBuilder other)930 public static ShadowSQLiteQueryBuilder shadowOf(SQLiteQueryBuilder other) { 931 return (ShadowSQLiteQueryBuilder) Robolectric.shadowOf_(other); 932 } 933 shadowOf(SQLiteStatement other)934 public static ShadowSQLiteStatement shadowOf(SQLiteStatement other) { 935 return (ShadowSQLiteStatement) Robolectric.shadowOf_(other); 936 } 937 shadowOf(SslErrorHandler instance)938 public static ShadowSslErrorHandler shadowOf(SslErrorHandler instance) { 939 return (ShadowSslErrorHandler) shadowOf_(instance); 940 } 941 shadowOf(StateListDrawable instance)942 public static ShadowStateListDrawable shadowOf(StateListDrawable instance) { 943 return (ShadowStateListDrawable) shadowOf_(instance); 944 } 945 shadowOf(TabHost instance)946 public static ShadowTabHost shadowOf(TabHost instance) { 947 return (ShadowTabHost) shadowOf_(instance); 948 } 949 shadowOf(TabHost.TabSpec instance)950 public static ShadowTabSpec shadowOf(TabHost.TabSpec instance) { 951 return (ShadowTabSpec) shadowOf_(instance); 952 } 953 shadowOf(TelephonyManager instance)954 public static ShadowTelephonyManager shadowOf(TelephonyManager instance) { 955 return (ShadowTelephonyManager) shadowOf_(instance); 956 } 957 shadowOf(TextPaint instance)958 public static ShadowTextPaint shadowOf(TextPaint instance) { 959 return (ShadowTextPaint) shadowOf_(instance); 960 } 961 shadowOf(TextView instance)962 public static ShadowTextView shadowOf(TextView instance) { 963 return (ShadowTextView) shadowOf_(instance); 964 } 965 shadowOf(Toast instance)966 public static ShadowToast shadowOf(Toast instance) { 967 return (ShadowToast) shadowOf_(instance); 968 } 969 shadowOf(TranslateAnimation instance)970 public static ShadowTranslateAnimation shadowOf(TranslateAnimation instance) { 971 return (ShadowTranslateAnimation) shadowOf_(instance); 972 } 973 shadowOf(UriMatcher instance)974 public static ShadowUriMatcher shadowOf(UriMatcher instance) { 975 return (ShadowUriMatcher) shadowOf_(instance); 976 } 977 shadowOf(View instance)978 public static ShadowView shadowOf(View instance) { 979 return (ShadowView) shadowOf_(instance); 980 } 981 shadowOf(ViewAnimator instance)982 public static ShadowViewAnimator shadowOf(ViewAnimator instance) { 983 return (ShadowViewAnimator) shadowOf_(instance); 984 } 985 shadowOf(ViewConfiguration instance)986 public static ShadowViewConfiguration shadowOf(ViewConfiguration instance) { 987 return (ShadowViewConfiguration) shadowOf_(instance); 988 } 989 shadowOf(ViewFlipper instance)990 public static ShadowViewFlipper shadowOf(ViewFlipper instance) { 991 return (ShadowViewFlipper) shadowOf_(instance); 992 } 993 shadowOf(ViewPager instance)994 public static ShadowViewPager shadowOf(ViewPager instance) { 995 return (ShadowViewPager) shadowOf_(instance); 996 } 997 shadowOf(ViewTreeObserver instance)998 public static ShadowViewTreeObserver shadowOf(ViewTreeObserver instance) { 999 return (ShadowViewTreeObserver) shadowOf_(instance); 1000 } 1001 shadowOf(ViewGroup instance)1002 public static ShadowViewGroup shadowOf(ViewGroup instance) { 1003 return (ShadowViewGroup) shadowOf_(instance); 1004 } 1005 shadowOf(Vibrator instance)1006 public static ShadowVibrator shadowOf(Vibrator instance) { 1007 return (ShadowVibrator) shadowOf_(instance); 1008 } 1009 shadowOf(VideoView instance)1010 public static ShadowVideoView shadowOf(VideoView instance) { 1011 return (ShadowVideoView) shadowOf_(instance); 1012 } 1013 shadowOf(WebView instance)1014 public static ShadowWebView shadowOf(WebView instance) { 1015 return (ShadowWebView) shadowOf_(instance); 1016 } 1017 shadowOf(WifiConfiguration instance)1018 public static ShadowWifiConfiguration shadowOf(WifiConfiguration instance) { 1019 return (ShadowWifiConfiguration) shadowOf_(instance); 1020 } 1021 shadowOf(WifiInfo instance)1022 public static ShadowWifiInfo shadowOf(WifiInfo instance) { 1023 return (ShadowWifiInfo) shadowOf_(instance); 1024 } 1025 shadowOf(WifiManager instance)1026 public static ShadowWifiManager shadowOf(WifiManager instance) { 1027 return (ShadowWifiManager) shadowOf_(instance); 1028 } 1029 shadowOf(ZoomButtonsController instance)1030 public static ShadowZoomButtonsController shadowOf(ZoomButtonsController instance) { 1031 return (ShadowZoomButtonsController) shadowOf_(instance); 1032 } 1033 shadowOf(Theme instance)1034 public static ShadowTheme shadowOf(Theme instance) { 1035 return (ShadowTheme) shadowOf_(instance); 1036 } 1037 1038 @SuppressWarnings({"unchecked"}) shadowOf_(R instance)1039 public static <P, R> P shadowOf_(R instance) { 1040 return (P) ShadowWrangler.getInstance().shadowOf(instance); 1041 } 1042 1043 /** 1044 * Runs any background tasks previously queued by {@link android.os.AsyncTask#execute(Object[])}. 1045 * <p/> 1046 * <p/> 1047 * Note: calling this method does not pause or un-pause the scheduler. 1048 */ runBackgroundTasks()1049 public static void runBackgroundTasks() { 1050 getBackgroundScheduler().advanceBy(0); 1051 } 1052 1053 /** 1054 * Runs any immediately runnable tasks previously queued on the UI thread, 1055 * e.g. by {@link Activity#runOnUiThread(Runnable)} or {@link android.os.AsyncTask#onPostExecute(Object)}. 1056 * <p/> 1057 * <p/> 1058 * Note: calling this method does not pause or un-pause the scheduler. 1059 */ runUiThreadTasks()1060 public static void runUiThreadTasks() { 1061 getUiThreadScheduler().advanceBy(0); 1062 } 1063 runUiThreadTasksIncludingDelayedTasks()1064 public static void runUiThreadTasksIncludingDelayedTasks() { 1065 getUiThreadScheduler().advanceToLastPostedRunnable(); 1066 } 1067 1068 /** 1069 * Sets up an HTTP response to be returned by calls to Apache's {@code HttpClient} implementers. 1070 * 1071 * @param statusCode the status code of the response 1072 * @param responseBody the body of the response 1073 * @param headers optional headers for the request 1074 */ addPendingHttpResponse(int statusCode, String responseBody, Header... headers)1075 public static void addPendingHttpResponse(int statusCode, String responseBody, Header... headers) { 1076 getFakeHttpLayer().addPendingHttpResponse(statusCode, responseBody, headers); 1077 } 1078 1079 /** 1080 * Sets up an HTTP response to be returned by calls to Apache's {@code HttpClient} implementers. 1081 * 1082 * @param statusCode the status code of the response 1083 * @param responseBody the body of the response 1084 * @param contentType the contentType of the response 1085 * @deprecated use {@link #addPendingHttpResponse(int, String, Header...)} instead 1086 */ 1087 @Deprecated addPendingHttpResponseWithContentType(int statusCode, String responseBody, Header contentType)1088 public static void addPendingHttpResponseWithContentType(int statusCode, String responseBody, Header contentType) { 1089 getFakeHttpLayer().addPendingHttpResponse(statusCode, responseBody, contentType); 1090 } 1091 1092 /** 1093 * Sets up an HTTP response to be returned by calls to Apache's {@code HttpClient} implementers. 1094 * 1095 * @param httpResponse the response 1096 */ addPendingHttpResponse(HttpResponse httpResponse)1097 public static void addPendingHttpResponse(HttpResponse httpResponse) { 1098 getFakeHttpLayer().addPendingHttpResponse(httpResponse); 1099 } 1100 1101 /** 1102 * Sets up an HTTP response to be returned by calls to Apache's {@code HttpClient} implementers. 1103 * 1104 * @param httpResponseGenerator an HttpResponseGenerator that will provide responses 1105 */ addPendingHttpResponse(HttpResponseGenerator httpResponseGenerator)1106 public static void addPendingHttpResponse(HttpResponseGenerator httpResponseGenerator) { 1107 getFakeHttpLayer().addPendingHttpResponse(httpResponseGenerator); 1108 } 1109 1110 /** 1111 * Accessor to obtain HTTP requests made during the current test in the order in which they were made. 1112 * 1113 * @param index index of the request to retrieve. 1114 * @return the requested request. 1115 */ getSentHttpRequest(int index)1116 public static HttpRequest getSentHttpRequest(int index) { 1117 return ShadowDefaultRequestDirector.getSentHttpRequest(index); 1118 } 1119 getLatestSentHttpRequest()1120 public static HttpRequest getLatestSentHttpRequest() { 1121 return ShadowDefaultRequestDirector.getLatestSentHttpRequest(); 1122 } 1123 1124 /** 1125 * Accessor to find out if HTTP requests were made during the current test. 1126 * 1127 * @return whether a request was made. 1128 */ httpRequestWasMade()1129 public static boolean httpRequestWasMade() { 1130 return getShadowApplication().getFakeHttpLayer().hasRequestInfos(); 1131 } 1132 httpRequestWasMade(String uri)1133 public static boolean httpRequestWasMade(String uri) { 1134 return getShadowApplication().getFakeHttpLayer().hasRequestMatchingRule(new FakeHttpLayer.UriRequestMatcher(uri)); 1135 } 1136 1137 /** 1138 * Accessor to obtain metadata for an HTTP request made during the current test in the order in which they were made. 1139 * 1140 * @param index index of the request to retrieve. 1141 * @return the requested request metadata. 1142 */ getSentHttpRequestInfo(int index)1143 public static HttpRequestInfo getSentHttpRequestInfo(int index) { 1144 return ShadowDefaultRequestDirector.getSentHttpRequestInfo(index); 1145 } 1146 1147 /** 1148 * Adds an HTTP response rule. The response will be returned when the rule is matched. 1149 * 1150 * @param method method to match. 1151 * @param uri uri to match. 1152 * @param response response to return when a match is found. 1153 */ addHttpResponseRule(String method, String uri, HttpResponse response)1154 public static void addHttpResponseRule(String method, String uri, HttpResponse response) { 1155 getFakeHttpLayer().addHttpResponseRule(method, uri, response); 1156 } 1157 1158 /** 1159 * Adds an HTTP response rule with a default method of GET. The response will be returned when the rule is matched. 1160 * 1161 * @param uri uri to match. 1162 * @param response response to return when a match is found. 1163 */ addHttpResponseRule(String uri, HttpResponse response)1164 public static void addHttpResponseRule(String uri, HttpResponse response) { 1165 getFakeHttpLayer().addHttpResponseRule(uri, response); 1166 } 1167 1168 /** 1169 * Adds an HTTP response rule. The response will be returned when the rule is matched. 1170 * 1171 * @param uri uri to match. 1172 * @param response response to return when a match is found. 1173 */ addHttpResponseRule(String uri, String response)1174 public static void addHttpResponseRule(String uri, String response) { 1175 getFakeHttpLayer().addHttpResponseRule(uri, response); 1176 } 1177 1178 /** 1179 * Adds an HTTP response rule. The response will be returned when the rule is matched. 1180 * 1181 * @param requestMatcher custom {@code RequestMatcher}. 1182 * @param response response to return when a match is found. 1183 */ addHttpResponseRule(RequestMatcher requestMatcher, HttpResponse response)1184 public static void addHttpResponseRule(RequestMatcher requestMatcher, HttpResponse response) { 1185 getFakeHttpLayer().addHttpResponseRule(requestMatcher, response); 1186 } 1187 1188 /** 1189 * Adds an HTTP response rule. For each time the rule is matched, responses will be shifted 1190 * off the list and returned. When all responses have been given and the rule is matched again, 1191 * an exception will be thrown. 1192 * 1193 * @param requestMatcher custom {@code RequestMatcher}. 1194 * @param responses responses to return in order when a match is found. 1195 */ addHttpResponseRule(RequestMatcher requestMatcher, List<? extends HttpResponse> responses)1196 public static void addHttpResponseRule(RequestMatcher requestMatcher, List<? extends HttpResponse> responses) { 1197 getFakeHttpLayer().addHttpResponseRule(requestMatcher, responses); 1198 } 1199 getFakeHttpLayer()1200 public static FakeHttpLayer getFakeHttpLayer() { 1201 return getShadowApplication().getFakeHttpLayer(); 1202 } 1203 setDefaultHttpResponse(int statusCode, String responseBody)1204 public static void setDefaultHttpResponse(int statusCode, String responseBody) { 1205 getFakeHttpLayer().setDefaultHttpResponse(statusCode, responseBody); 1206 } 1207 setDefaultHttpResponse(HttpResponse defaultHttpResponse)1208 public static void setDefaultHttpResponse(HttpResponse defaultHttpResponse) { 1209 getFakeHttpLayer().setDefaultHttpResponse(defaultHttpResponse); 1210 } 1211 clearHttpResponseRules()1212 public static void clearHttpResponseRules() { 1213 getFakeHttpLayer().clearHttpResponseRules(); 1214 } 1215 clearPendingHttpResponses()1216 public static void clearPendingHttpResponses() { 1217 getFakeHttpLayer().clearPendingHttpResponses(); 1218 } 1219 pauseLooper(Looper looper)1220 public static void pauseLooper(Looper looper) { 1221 ShadowLooper.pauseLooper(looper); 1222 } 1223 unPauseLooper(Looper looper)1224 public static void unPauseLooper(Looper looper) { 1225 ShadowLooper.unPauseLooper(looper); 1226 } 1227 pauseMainLooper()1228 public static void pauseMainLooper() { 1229 ShadowLooper.pauseMainLooper(); 1230 } 1231 unPauseMainLooper()1232 public static void unPauseMainLooper() { 1233 ShadowLooper.unPauseMainLooper(); 1234 } 1235 idleMainLooper(long interval)1236 public static void idleMainLooper(long interval) { 1237 ShadowLooper.idleMainLooper(interval); 1238 } 1239 getUiThreadScheduler()1240 public static Scheduler getUiThreadScheduler() { 1241 return shadowOf(Looper.getMainLooper()).getScheduler(); 1242 } 1243 getBackgroundScheduler()1244 public static Scheduler getBackgroundScheduler() { 1245 return getShadowApplication().getBackgroundScheduler(); 1246 } 1247 getShadowApplication()1248 public static ShadowApplication getShadowApplication() { 1249 return shadowOf(Robolectric.application); 1250 } 1251 setDisplayMetricsDensity(float densityMultiplier)1252 public static void setDisplayMetricsDensity(float densityMultiplier) { 1253 shadowOf(getShadowApplication().getResources()).setDensity(densityMultiplier); 1254 } 1255 setDefaultDisplay(Display display)1256 public static void setDefaultDisplay(Display display) { 1257 shadowOf(getShadowApplication().getResources()).setDisplay(display); 1258 } 1259 1260 /** 1261 * Calls {@code performClick()} on a {@code View} after ensuring that it and its ancestors are visible and that it 1262 * is enabled. 1263 * 1264 * @param view the view to click on 1265 * @return true if {@code View.OnClickListener}s were found and fired, false otherwise. 1266 * @throws RuntimeException if the preconditions are not met. 1267 */ clickOn(View view)1268 public static boolean clickOn(View view) { 1269 return shadowOf(view).checkedPerformClick(); 1270 } 1271 visualize(View view)1272 public static String visualize(View view) { 1273 Canvas canvas = new Canvas(); 1274 view.draw(canvas); 1275 return shadowOf(canvas).getDescription(); 1276 } 1277 visualize(Canvas canvas)1278 public static String visualize(Canvas canvas) { 1279 return shadowOf(canvas).getDescription(); 1280 } 1281 visualize(Bitmap bitmap)1282 public static String visualize(Bitmap bitmap) { 1283 return shadowOf(bitmap).getDescription(); 1284 } 1285 1286 /** 1287 * Reflection helper methods. 1288 */ 1289 public static class Reflection { newInstanceOf(Class<T> clazz)1290 public static <T> T newInstanceOf(Class<T> clazz) { 1291 return Robolectric.newInstanceOf(clazz); 1292 } 1293 newInstanceOf(String className)1294 public static Object newInstanceOf(String className) { 1295 return Robolectric.newInstanceOf(className); 1296 } 1297 setFinalStaticField(Class classWhichContainsField, String fieldName, Object newValue)1298 public static void setFinalStaticField(Class classWhichContainsField, String fieldName, Object newValue) { 1299 try { 1300 Field field = classWhichContainsField.getDeclaredField(fieldName); 1301 field.setAccessible(true); 1302 1303 Field modifiersField = Field.class.getDeclaredField("modifiers"); 1304 modifiersField.setAccessible(true); 1305 modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); 1306 1307 field.set(null, newValue); 1308 } catch (NoSuchFieldException e) { 1309 throw new RuntimeException(e); 1310 } catch (IllegalAccessException e) { 1311 throw new RuntimeException(e); 1312 } 1313 } 1314 } 1315 1316 } 1317