Robolectric.java revision 114296321cba71f8133713306049ce3b411e8563
1345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspackage com.xtremelabs.robolectric;
20b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
31fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.app.*;
41fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.appwidget.AppWidgetManager;
59893f7266e7dcc1332743887045bd69991441421Christian Williamsimport android.content.ContentValues;
61fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.Context;
71fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.ContextWrapper;
81fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.Intent;
9114296321cba71f8133713306049ce3b411e8563Gonçalo Silvaimport android.content.res.AssetManager;
101fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.res.Resources;
11b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesiimport android.database.sqlite.SQLiteCursor;
129893f7266e7dcc1332743887045bd69991441421Christian Williamsimport android.database.sqlite.SQLiteDatabase;
1328dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesiimport android.database.sqlite.SQLiteOpenHelper;
143a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesiimport android.database.sqlite.SQLiteQueryBuilder;
151fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Canvas;
161fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Paint;
171fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Path;
181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.drawable.BitmapDrawable;
191fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.drawable.Drawable;
2006abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richardimport android.location.Geocoder;
211fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.location.LocationManager;
2236a56b1b82e6409c81ccc87ab7148cef105b4517Michael Portuesiimport android.media.AudioManager;
237581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.ConnectivityManager;
247581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.NetworkInfo;
251fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.os.Handler;
261fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.os.Looper;
27e8637c922e4f8e681769d63689accb89e6108056Michael Portuesiimport android.view.Display;
28e7a41c9b39233781c97dd599ff61024f0510e308Christian Williamsimport android.view.LayoutInflater;
291fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.view.View;
301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.view.ViewGroup;
316cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultzimport android.webkit.WebView;
321fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.widget.*;
331fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.GeoPoint;
341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.ItemizedOverlay;
351fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.MapController;
361fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.MapView;
3733873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzimport com.xtremelabs.robolectric.shadows.*;
38e7a41c9b39233781c97dd599ff61024f0510e308Christian Williamsimport com.xtremelabs.robolectric.util.Implements;
3971d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williamsimport com.xtremelabs.robolectric.util.Scheduler;
40a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.view.TestSharedPreferences;
410b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
420b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.lang.reflect.Constructor;
430b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.lang.reflect.InvocationTargetException;
440b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.util.Arrays;
450b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.util.List;
460b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
47345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspublic class Robolectric {
488baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public static Application application;
4971d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static Scheduler backgroundScheduler;
5071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static Scheduler uiThreadScheduler;
518baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
520b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    public static <T> T newInstanceOf(Class<T> clazz) {
530b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        try {
540b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            Constructor<T> defaultConstructor = clazz.getDeclaredConstructor();
550b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            defaultConstructor.setAccessible(true);
560b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            return defaultConstructor.newInstance();
570b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InstantiationException e) {
580b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
590b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (IllegalAccessException e) {
600b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
610b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (NoSuchMethodException e) {
620b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
630b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InvocationTargetException e) {
640b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
650b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        }
660b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
670b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
68e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindShadowClass(Class<?> realClass, Class<?> shadowClass) {
69cee7ff89bfcb83d6cd65e6de9b7cafe2c1caf40aChristian Williams        ShadowWrangler.getInstance().bindShadowClass(realClass, shadowClass);
70e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
71e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
72e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindShadowClass(Class<?> shadowClass) {
73e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        Implements realClass = shadowClass.getAnnotation(Implements.class);
7409aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams        if (realClass == null) {
7509aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams            throw new IllegalArgumentException(shadowClass + " is not annotated with @Implements");
7609aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams        }
77673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz
78673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz        try {
79673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz            bindShadowClass(realClass.value(), shadowClass);
80673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz        } catch (TypeNotPresentException ignored) {
81673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz            //this allows users of the robolectric.jar file to use the non-Google APIs version of the api
82673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz        }
83e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
84e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
85e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindDefaultShadowClasses() {
86638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams        bindShadowClasses(getDefaultShadowClasses());
87638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams    }
88638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams
89638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams    public static void bindShadowClasses(List<Class<?>> shadowClasses) {
90638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams        for (Class<?> shadowClass : shadowClasses) {
91638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams            bindShadowClass(shadowClass);
92e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        }
93e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
94e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
95cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    /**
96cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * Invoke this utility method in tests to reveal which Android api classes and methods are being invoked
97cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * for which there are no shadows or shadow methods. This helps expose which methods are being invoked
98cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * either by a third party library or application code which need new shadow methods to be written. Generates
99cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * output for the current test only.
100cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     */
101cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    public static void logMissingInvokedShadowMethods() {
102cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz        ShadowWrangler.getInstance().logMissingInvokedShadowMethods();
103cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    }
104cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz
105867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz    /**
106867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * Calls {@code performClick()} on a {@code View} after ensuring that it and its ancestors are visible and that it
107867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * is enabled.
108867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     *
109867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * @param view the view to click on
110867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * @return true if {@code View.OnClickListener}s were found and fired, false otherwise.
111867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * @throws RuntimeException if the preconditions are not met.
112867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     */
113867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz    public static boolean clickOn(View view) {
114867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz        return shadowOf(view).checkedPerformClick();
115867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz    }
116867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz
117e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static List<Class<?>> getDefaultShadowClasses() {
1180b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        return Arrays.asList(
119c146ad8871a32bbf62aca259ede77d3f9cd07773Tyler Schultz                ShadowAbsoluteLayout.class,
120afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAbsSpinner.class,
1219893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowAbstractCursor.class,
122afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowActivity.class,
123afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAdapterView.class,
124afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAddress.class,
125afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAlertDialog.class,
126afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAlertDialog.ShadowBuilder.class,
127afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowApplication.class,
128afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAppWidgetManager.class,
129114296321cba71f8133713306049ce3b411e8563Gonçalo Silva                ShadowAssetManager.class,
13071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams                ShadowAsyncTask.class,
13136a56b1b82e6409c81ccc87ab7148cef105b4517Michael Portuesi                ShadowAudioManager.class,
132afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowBaseAdapter.class,
133afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowBitmapDrawable.class,
13475d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard                ShadowBundle.class,
135afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowCanvas.class,
136afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowCompoundButton.class,
137afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowComponentName.class,
1387581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse                ShadowConnectivityManager.class,
1399893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowContentValues.class,
140afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowContext.class,
141afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowContextWrapper.class,
1421dcccba609fb2036994803ca6d71f9c76e1fe8e9Chee Wong                ShadowContextThemeWrapper.class,
143d1eee6c4ec28a6c17455ce5c29efb833f30dd5d0Michael Portuesi                ShadowDisplay.class,
144afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowDrawable.class,
145afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowDialog.class,
146afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowEditText.class,
14706abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard                ShadowGeocoder.class,
148afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowGeoPoint.class,
149afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowHandler.class,
150afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowImageView.class,
151afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowIntent.class,
152afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowIntentFilter.class,
153afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowItemizedOverlay.class,
154afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLayoutInflater.class,
155afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLayoutParams.class,
156afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowListActivity.class,
157afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowListView.class,
158afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLocation.class,
159afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLocationManager.class,
160afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLooper.class,
161afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapController.class,
162afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapActivity.class,
163afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapView.class,
164afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMotionEvent.class,
1657581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse                ShadowNetworkInfo.class,
166afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowOverlayItem.class,
167afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPaint.class,
168afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPath.class,
169afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPendingIntent.class,
170afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPoint.class,
171e8637c922e4f8e681769d63689accb89e6108056Michael Portuesi                ShadowPreferenceManager.class,
172afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowRect.class,
173afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowRemoteViews.class,
174afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowResources.class,
175afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowService.class,
176afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.class,
177afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.ShadowSecure.class,
178afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.ShadowSystem.class,
179afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSpannableStringBuilder.class,
1809893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowSQLiteDatabase.class,
181b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi                ShadowSQLiteCursor.class,
18228dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi                ShadowSQLiteOpenHelper.class,
1833a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi                ShadowSQLiteQueryBuilder.class,
184afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTextUtils.class,
185afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTextView.class,
186afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowToast.class,
187afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTypedValue.class,
188afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowView.class,
189afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowViewGroup.class,
1909ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz                ShadowWebView.class,
191afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowWifiManager.class,
192afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowZoomButtonsController.class
193adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams        );
1940b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
19590008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher
196345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams    public static void resetStaticState() {
197e6dfaf271dbaf3ac1bb82d953669a56a02fc71d6Phil Goodwin & Tyler Schultz        ShadowWrangler.getInstance().silence();
198345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams        Robolectric.application = new Application();
19971d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        Robolectric.backgroundScheduler = new Scheduler();
20071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        Robolectric.uiThreadScheduler = new Scheduler();
20190008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher        TestSharedPreferences.reset();
202afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowToast.reset();
203afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowAlertDialog.reset();
204afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowDialog.reset();
205afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowLooper.resetAll();
20690008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher    }
2071fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2089122a05312e767618ba0545a951df9cab86c8716Christian Williams    public static <T> T directlyOn(T shadowedObject) {
2099122a05312e767618ba0545a951df9cab86c8716Christian Williams        return RobolectricInternals.directlyOn(shadowedObject);
2109122a05312e767618ba0545a951df9cab86c8716Christian Williams    }
2119122a05312e767618ba0545a951df9cab86c8716Christian Williams
212433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowDrawable shadowOf(Drawable instance) {
213433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowDrawable) shadowOf_(instance);
2141fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2151fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
216433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowToast shadowOf(Toast instance) {
217433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowToast) shadowOf_(instance);
2181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2191fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2207581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public static ShadowNetworkInfo shadowOf(NetworkInfo instance) {
2217581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse        return (ShadowNetworkInfo) shadowOf_(instance);
2227581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
2237581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
2247581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public static ShadowConnectivityManager shadowOf(ConnectivityManager instance) {
2257581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse        return (ShadowConnectivityManager) shadowOf_(instance);
2267581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
2277581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
228433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowBitmapDrawable shadowOf(BitmapDrawable instance) {
229433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowBitmapDrawable) shadowOf_(instance);
2301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2311fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
232433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowZoomButtonsController shadowOf(ZoomButtonsController instance) {
233433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowZoomButtonsController) shadowOf_(instance);
2341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2351fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
236433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowGeoPoint shadowOf(GeoPoint instance) {
237433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowGeoPoint) shadowOf_(instance);
2381fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2391fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
240433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowMapView shadowOf(MapView instance) {
241433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowMapView) shadowOf_(instance);
2421fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2431fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
244433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowMapController shadowOf(MapController instance) {
245433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowMapController) shadowOf_(instance);
2461fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2471fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
248433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowItemizedOverlay shadowOf(ItemizedOverlay instance) {
249433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowItemizedOverlay) shadowOf_(instance);
2501fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2511fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
252433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowListView shadowOf(ListView instance) {
253433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowListView) shadowOf_(instance);
2541fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2551fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
256433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowActivity shadowOf(Activity instance) {
257433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowActivity) shadowOf_(instance);
2581fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2591fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
260433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowContextWrapper shadowOf(ContextWrapper instance) {
261433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowContextWrapper) shadowOf_(instance);
2621fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2631fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
264433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowContextWrapper shadowOf(Context instance) {
265433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowContextWrapper) shadowOf_(instance);
2661fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2671fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
268433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowPaint shadowOf(Paint instance) {
269433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowPaint) shadowOf_(instance);
2701fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2711fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
272433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowPath shadowOf(Path instance) {
273433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowPath) shadowOf_(instance);
2741fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2751fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
276433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowListActivity shadowOf(ListActivity instance) {
277433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowListActivity) shadowOf_(instance);
2781fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2791fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
280433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowHandler shadowOf(Handler instance) {
281433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowHandler) shadowOf_(instance);
2821fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2831fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
284433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowIntent shadowOf(Intent instance) {
285433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowIntent) shadowOf_(instance);
2861fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2871fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
288433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowView shadowOf(View instance) {
289433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowView) shadowOf_(instance);
2901fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2911fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
292433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowViewGroup shadowOf(ViewGroup instance) {
293433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowViewGroup) shadowOf_(instance);
2941fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2951fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2966cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    public static ShadowWebView shadowOf(WebView instance) {
2976cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz        return (ShadowWebView) shadowOf_(instance);
2986cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    }
2996cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz
300433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAdapterView shadowOf(AdapterView instance) {
301433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAdapterView) shadowOf_(instance);
3021fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3031fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
304433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowTextView shadowOf(TextView instance) {
305433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowTextView) shadowOf_(instance);
3061fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3071fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
308433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowImageView shadowOf(ImageView instance) {
309433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowImageView) shadowOf_(instance);
3101fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3111fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
312433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowRemoteViews shadowOf(RemoteViews instance) {
313433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowRemoteViews) shadowOf_(instance);
3141fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3151fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
316433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowDialog shadowOf(Dialog instance) {
317433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowDialog) shadowOf_(instance);
3181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3191fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
320433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAlertDialog shadowOf(AlertDialog instance) {
321433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAlertDialog) shadowOf_(instance);
3221fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3231fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
324433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowLooper shadowOf(Looper instance) {
325433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowLooper) shadowOf_(instance);
3261fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3271fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
328433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowCanvas shadowOf(Canvas instance) {
329433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowCanvas) shadowOf_(instance);
3301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3311fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
332433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowLocationManager shadowOf(LocationManager instance) {
333433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowLocationManager) shadowOf_(instance);
3341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3351fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
336433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAppWidgetManager shadowOf(AppWidgetManager instance) {
337433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAppWidgetManager) shadowOf_(instance);
3381fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3391fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
340433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowResources shadowOf(Resources instance) {
341433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowResources) shadowOf_(instance);
3421fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3431fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
344e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static ShadowLayoutInflater shadowOf(LayoutInflater instance) {
34506abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard        return (ShadowLayoutInflater) shadowOf_(instance);
346e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
347adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams
348adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    public static ShadowDisplay shadowOf(Display instance) {
3494a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams        return (ShadowDisplay) shadowOf_(instance);
350adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    }
351adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams
352adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    public static ShadowAudioManager shadowOf(AudioManager instance) {
3534a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams        return (ShadowAudioManager) shadowOf_(instance);
3544a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams    }
355e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
35606abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard    public static ShadowGeocoder shadowOf(Geocoder instance) {
35706abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard        return (ShadowGeocoder) shadowOf_(instance);
358adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    }
359e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
3609893f7266e7dcc1332743887045bd69991441421Christian Williams    public static ShadowSQLiteDatabase shadowOf(SQLiteDatabase other) {
3619893f7266e7dcc1332743887045bd69991441421Christian Williams        return (ShadowSQLiteDatabase) Robolectric.shadowOf_(other);
3629893f7266e7dcc1332743887045bd69991441421Christian Williams    }
363b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
364b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi    public static ShadowSQLiteCursor shadowOf(SQLiteCursor other) {
365b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi        return (ShadowSQLiteCursor) Robolectric.shadowOf_(other);
366b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi    }
3679893f7266e7dcc1332743887045bd69991441421Christian Williams
36828dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi    public static ShadowSQLiteOpenHelper shadowOf(SQLiteOpenHelper other) {
36928dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi        return (ShadowSQLiteOpenHelper) Robolectric.shadowOf_(other);
37028dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi    }
37128dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi
3723a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi    public static ShadowSQLiteQueryBuilder shadowOf(SQLiteQueryBuilder other) {
3733a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi        return (ShadowSQLiteQueryBuilder) Robolectric.shadowOf_(other);
3743a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi    }
3753a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi
3769893f7266e7dcc1332743887045bd69991441421Christian Williams    public static ShadowContentValues shadowOf(ContentValues other) {
3779893f7266e7dcc1332743887045bd69991441421Christian Williams        return (ShadowContentValues) Robolectric.shadowOf_(other);
3789893f7266e7dcc1332743887045bd69991441421Christian Williams    }
379114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
380114296321cba71f8133713306049ce3b411e8563Gonçalo Silva	public static ShadowAssetManager shadowOf(AssetManager instance) {
381114296321cba71f8133713306049ce3b411e8563Gonçalo Silva		return (ShadowAssetManager) Robolectric.shadowOf_(instance);
382114296321cba71f8133713306049ce3b411e8563Gonçalo Silva	}
3839893f7266e7dcc1332743887045bd69991441421Christian Williams
3841fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    @SuppressWarnings({"unchecked"})
385433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static <P, R> P shadowOf_(R instance) {
386cee7ff89bfcb83d6cd65e6de9b7cafe2c1caf40aChristian Williams        return (P) ShadowWrangler.getInstance().shadowOf(instance);
3871fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
38871d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams
38971d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static void runBackgroundTasks() {
39071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        backgroundScheduler.tick(0);
39171d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    }
39271d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams
39371d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static void runUiThreadTasks() {
39471d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        uiThreadScheduler.tick(0);
39571d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    }
3960b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher}
397