Robolectric.java revision 7581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1
1345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspackage com.xtremelabs.robolectric;
20b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
37581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport java.lang.reflect.Constructor;
47581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport java.lang.reflect.InvocationTargetException;
57581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport java.util.Arrays;
67581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport java.util.List;
77581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
87581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.app.Activity;
97581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.app.AlertDialog;
107581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.app.Application;
117581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.app.Dialog;
127581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.app.ListActivity;
131fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.appwidget.AppWidgetManager;
149893f7266e7dcc1332743887045bd69991441421Christian Williamsimport android.content.ContentValues;
151fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.Context;
161fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.ContextWrapper;
171fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.Intent;
181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.res.Resources;
199893f7266e7dcc1332743887045bd69991441421Christian Williamsimport android.database.sqlite.SQLiteDatabase;
201fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Canvas;
211fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Paint;
221fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Path;
231fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.drawable.BitmapDrawable;
241fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.drawable.Drawable;
2506abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richardimport android.location.Geocoder;
261fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.location.LocationManager;
2736a56b1b82e6409c81ccc87ab7148cef105b4517Michael Portuesiimport android.media.AudioManager;
287581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.ConnectivityManager;
297581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.NetworkInfo;
301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.os.Handler;
311fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.os.Looper;
32e8637c922e4f8e681769d63689accb89e6108056Michael Portuesiimport android.view.Display;
33e7a41c9b39233781c97dd599ff61024f0510e308Christian Williamsimport android.view.LayoutInflater;
341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.view.View;
351fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.view.ViewGroup;
367581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.AdapterView;
377581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.ImageView;
387581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.ListView;
397581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.RemoteViews;
407581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.TextView;
417581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.Toast;
427581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.widget.ZoomButtonsController;
437581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
441fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.GeoPoint;
451fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.ItemizedOverlay;
461fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.MapController;
471fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.MapView;
487581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAbsSpinner;
497581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAbstractCursor;
507581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowActivity;
517581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAdapterView;
527581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAddress;
537581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAlertDialog;
547581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAppWidgetManager;
557581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowApplication;
567581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowAudioManager;
577581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowBaseAdapter;
587581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowBitmapDrawable;
597581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowBundle;
607581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowCanvas;
617581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowComponentName;
627581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowCompoundButton;
637581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowConnectivityManager;
647581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowContentValues;
657581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowContext;
667581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowContextThemeWrapper;
677581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowContextWrapper;
687581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowDialog;
697581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowDisplay;
707581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowDrawable;
717581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowEditText;
727581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowGeoPoint;
737581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowGeocoder;
747581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowHandler;
757581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowImageView;
767581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowIntent;
777581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowIntentFilter;
787581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowItemizedOverlay;
797581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowLayoutInflater;
807581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowLayoutParams;
817581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowListActivity;
827581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowListView;
837581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowLocation;
847581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowLocationManager;
857581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowLooper;
867581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowMapActivity;
877581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowMapController;
887581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowMapView;
897581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowMotionEvent;
907581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowNetworkInfo;
917581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowOverlayItem;
927581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowPaint;
937581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowPath;
947581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowPendingIntent;
957581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowPoint;
967581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowPreferenceManager;
977581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowRect;
987581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowRemoteViews;
997581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowResources;
1007581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowSQLiteDatabase;
1017581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowService;
1027581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowSettings;
1037581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowSpannableStringBuilder;
1047581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowTextUtils;
1057581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowTextView;
1067581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowToast;
1077581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowTypedValue;
1087581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowView;
1097581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowViewGroup;
1107581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowWifiManager;
1117581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport com.xtremelabs.robolectric.shadows.ShadowZoomButtonsController;
112e7a41c9b39233781c97dd599ff61024f0510e308Christian Williamsimport com.xtremelabs.robolectric.util.Implements;
113a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.view.TestSharedPreferences;
1140b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
115345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspublic class Robolectric {
1168baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public static Application application;
1178baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
1180b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    public static <T> T newInstanceOf(Class<T> clazz) {
1190b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        try {
1200b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            Constructor<T> defaultConstructor = clazz.getDeclaredConstructor();
1210b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            defaultConstructor.setAccessible(true);
1220b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            return defaultConstructor.newInstance();
1230b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InstantiationException e) {
1240b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
1250b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (IllegalAccessException e) {
1260b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
1270b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (NoSuchMethodException e) {
1280b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
1290b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InvocationTargetException e) {
1300b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
1310b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        }
1320b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
1330b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
134e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindShadowClass(Class<?> realClass, Class<?> shadowClass) {
135cee7ff89bfcb83d6cd65e6de9b7cafe2c1caf40aChristian Williams        ShadowWrangler.getInstance().bindShadowClass(realClass, shadowClass);
136e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
137e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
138e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindShadowClass(Class<?> shadowClass) {
139e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        Implements realClass = shadowClass.getAnnotation(Implements.class);
14009aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams        if (realClass == null) {
14109aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams            throw new IllegalArgumentException(shadowClass + " is not annotated with @Implements");
14209aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams        }
143e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        bindShadowClass(realClass.value(), shadowClass);
144e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
145e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
146e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindDefaultShadowClasses() {
147638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams        bindShadowClasses(getDefaultShadowClasses());
148638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams    }
149638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams
150638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams    public static void bindShadowClasses(List<Class<?>> shadowClasses) {
151638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams        for (Class<?> shadowClass : shadowClasses) {
152638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams            bindShadowClass(shadowClass);
153e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        }
154e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
155e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
156cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    /**
157cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * Invoke this utility method in tests to reveal which Android api classes and methods are being invoked
158cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * for which there are no shadows or shadow methods. This helps expose which methods are being invoked
159cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * either by a third party library or application code which need new shadow methods to be written. Generates
160cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * output for the current test only.
161cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     */
162cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    public static void logMissingInvokedShadowMethods() {
163cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz        ShadowWrangler.getInstance().logMissingInvokedShadowMethods();
164cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    }
165cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz
166e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static List<Class<?>> getDefaultShadowClasses() {
1670b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        return Arrays.asList(
168afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAbsSpinner.class,
1699893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowAbstractCursor.class,
170afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowActivity.class,
171afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAdapterView.class,
172afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAddress.class,
173afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAlertDialog.class,
174afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAlertDialog.ShadowBuilder.class,
175afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowApplication.class,
176afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAppWidgetManager.class,
17736a56b1b82e6409c81ccc87ab7148cef105b4517Michael Portuesi                ShadowAudioManager.class,
178afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowBaseAdapter.class,
179afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowBitmapDrawable.class,
18075d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard                ShadowBundle.class,
181afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowCanvas.class,
182afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowCompoundButton.class,
183afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowComponentName.class,
1847581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse                ShadowConnectivityManager.class,
1859893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowContentValues.class,
186afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowContext.class,
187afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowContextWrapper.class,
1881dcccba609fb2036994803ca6d71f9c76e1fe8e9Chee Wong                ShadowContextThemeWrapper.class,
189d1eee6c4ec28a6c17455ce5c29efb833f30dd5d0Michael Portuesi                ShadowDisplay.class,
190afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowDrawable.class,
191afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowDialog.class,
192afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowEditText.class,
19306abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard                ShadowGeocoder.class,
194afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowGeoPoint.class,
195afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowHandler.class,
196afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowImageView.class,
197afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowIntent.class,
198afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowIntentFilter.class,
199afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowItemizedOverlay.class,
200afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLayoutInflater.class,
201afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLayoutParams.class,
202afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowListActivity.class,
203afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowListView.class,
204afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLocation.class,
205afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLocationManager.class,
206afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLooper.class,
207afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapController.class,
208afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapActivity.class,
209afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapView.class,
210afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMotionEvent.class,
2117581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse                ShadowNetworkInfo.class,
212afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowOverlayItem.class,
213afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPaint.class,
214afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPath.class,
215afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPendingIntent.class,
216afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPoint.class,
217e8637c922e4f8e681769d63689accb89e6108056Michael Portuesi                ShadowPreferenceManager.class,
218afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowRect.class,
219afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowRemoteViews.class,
220afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowResources.class,
221afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowService.class,
222afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.class,
223afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.ShadowSecure.class,
224afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.ShadowSystem.class,
225afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSpannableStringBuilder.class,
2269893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowSQLiteDatabase.class,
227afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTextUtils.class,
228afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTextView.class,
229afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowToast.class,
230afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTypedValue.class,
231afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowView.class,
232afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowViewGroup.class,
233afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowWifiManager.class,
234afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowZoomButtonsController.class
235adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams        );
2360b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
23790008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher
238345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams    public static void resetStaticState() {
239e6dfaf271dbaf3ac1bb82d953669a56a02fc71d6Phil Goodwin & Tyler Schultz        ShadowWrangler.getInstance().silence();
240345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams        Robolectric.application = new Application();
24190008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher        TestSharedPreferences.reset();
242afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowToast.reset();
243afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowAlertDialog.reset();
244afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowDialog.reset();
245afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowLooper.resetAll();
24690008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher    }
2471fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2489122a05312e767618ba0545a951df9cab86c8716Christian Williams    public static <T> T directlyOn(T shadowedObject) {
2499122a05312e767618ba0545a951df9cab86c8716Christian Williams        return RobolectricInternals.directlyOn(shadowedObject);
2509122a05312e767618ba0545a951df9cab86c8716Christian Williams    }
2519122a05312e767618ba0545a951df9cab86c8716Christian Williams
252433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowDrawable shadowOf(Drawable instance) {
253433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowDrawable) shadowOf_(instance);
2541fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2551fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
256433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowToast shadowOf(Toast instance) {
257433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowToast) shadowOf_(instance);
2581fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2591fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2607581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public static ShadowNetworkInfo shadowOf(NetworkInfo instance) {
2617581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse        return (ShadowNetworkInfo) shadowOf_(instance);
2627581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
2637581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
2647581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public static ShadowConnectivityManager shadowOf(ConnectivityManager instance) {
2657581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse        return (ShadowConnectivityManager) shadowOf_(instance);
2667581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
2677581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
268433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowBitmapDrawable shadowOf(BitmapDrawable instance) {
269433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowBitmapDrawable) shadowOf_(instance);
2701fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2711fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
272433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowZoomButtonsController shadowOf(ZoomButtonsController instance) {
273433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowZoomButtonsController) shadowOf_(instance);
2741fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2751fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
276433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowGeoPoint shadowOf(GeoPoint instance) {
277433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowGeoPoint) shadowOf_(instance);
2781fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2791fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
280433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowMapView shadowOf(MapView instance) {
281433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowMapView) shadowOf_(instance);
2821fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2831fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
284433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowMapController shadowOf(MapController instance) {
285433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowMapController) shadowOf_(instance);
2861fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2871fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
288433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowItemizedOverlay shadowOf(ItemizedOverlay instance) {
289433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowItemizedOverlay) shadowOf_(instance);
2901fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2911fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
292433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowListView shadowOf(ListView instance) {
293433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowListView) shadowOf_(instance);
2941fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2951fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
296433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowActivity shadowOf(Activity instance) {
297433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowActivity) shadowOf_(instance);
2981fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2991fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
300433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowContextWrapper shadowOf(ContextWrapper instance) {
301433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowContextWrapper) shadowOf_(instance);
3021fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3031fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
304433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowContextWrapper shadowOf(Context instance) {
305433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowContextWrapper) shadowOf_(instance);
3061fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3071fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
308433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowPaint shadowOf(Paint instance) {
309433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowPaint) shadowOf_(instance);
3101fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3111fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
312433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowPath shadowOf(Path instance) {
313433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowPath) shadowOf_(instance);
3141fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3151fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
316433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowListActivity shadowOf(ListActivity instance) {
317433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowListActivity) shadowOf_(instance);
3181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3191fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
320433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowHandler shadowOf(Handler instance) {
321433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowHandler) shadowOf_(instance);
3221fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3231fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
324433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowIntent shadowOf(Intent instance) {
325433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowIntent) shadowOf_(instance);
3261fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3271fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
328433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowView shadowOf(View instance) {
329433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowView) shadowOf_(instance);
3301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3311fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
332433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowViewGroup shadowOf(ViewGroup instance) {
333433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowViewGroup) shadowOf_(instance);
3341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3351fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
336433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAdapterView shadowOf(AdapterView instance) {
337433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAdapterView) shadowOf_(instance);
3381fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3391fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
340433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowTextView shadowOf(TextView instance) {
341433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowTextView) shadowOf_(instance);
3421fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3431fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
344433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowImageView shadowOf(ImageView instance) {
345433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowImageView) shadowOf_(instance);
3461fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3471fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
348433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowRemoteViews shadowOf(RemoteViews instance) {
349433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowRemoteViews) shadowOf_(instance);
3501fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3511fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
352433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowDialog shadowOf(Dialog instance) {
353433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowDialog) shadowOf_(instance);
3541fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3551fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
356433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAlertDialog shadowOf(AlertDialog instance) {
357433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAlertDialog) shadowOf_(instance);
3581fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3591fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
360433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowLooper shadowOf(Looper instance) {
361433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowLooper) shadowOf_(instance);
3621fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3631fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
364433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowCanvas shadowOf(Canvas instance) {
365433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowCanvas) shadowOf_(instance);
3661fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3671fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
368433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowLocationManager shadowOf(LocationManager instance) {
369433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowLocationManager) shadowOf_(instance);
3701fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3711fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
372433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAppWidgetManager shadowOf(AppWidgetManager instance) {
373433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAppWidgetManager) shadowOf_(instance);
3741fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3751fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
376433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowResources shadowOf(Resources instance) {
377433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowResources) shadowOf_(instance);
3781fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3791fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
380e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static ShadowLayoutInflater shadowOf(LayoutInflater instance) {
38106abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard        return (ShadowLayoutInflater) shadowOf_(instance);
382e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
383adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams
384adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    public static ShadowDisplay shadowOf(Display instance) {
3854a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams        return (ShadowDisplay) shadowOf_(instance);
386adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    }
387adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams
388adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    public static ShadowAudioManager shadowOf(AudioManager instance) {
3894a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams        return (ShadowAudioManager) shadowOf_(instance);
3904a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams    }
391e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
39206abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard    public static ShadowGeocoder shadowOf(Geocoder instance) {
39306abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard        return (ShadowGeocoder) shadowOf_(instance);
394adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    }
395e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
3969893f7266e7dcc1332743887045bd69991441421Christian Williams    public static ShadowSQLiteDatabase shadowOf(SQLiteDatabase other) {
3979893f7266e7dcc1332743887045bd69991441421Christian Williams        return (ShadowSQLiteDatabase) Robolectric.shadowOf_(other);
3989893f7266e7dcc1332743887045bd69991441421Christian Williams    }
3999893f7266e7dcc1332743887045bd69991441421Christian Williams
4009893f7266e7dcc1332743887045bd69991441421Christian Williams    public static ShadowContentValues shadowOf(ContentValues other) {
4019893f7266e7dcc1332743887045bd69991441421Christian Williams        return (ShadowContentValues) Robolectric.shadowOf_(other);
4029893f7266e7dcc1332743887045bd69991441421Christian Williams    }
4039893f7266e7dcc1332743887045bd69991441421Christian Williams
4041fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    @SuppressWarnings({"unchecked"})
405433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static <P, R> P shadowOf_(R instance) {
406cee7ff89bfcb83d6cd65e6de9b7cafe2c1caf40aChristian Williams        return (P) ShadowWrangler.getInstance().shadowOf(instance);
4071fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
4080b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher}
409