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