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