Robolectric.java revision 31af8607e2c7da6ba8708f57c4b67b6b4aaad921
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;
91fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.content.res.Resources;
10b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesiimport android.database.sqlite.SQLiteCursor;
119893f7266e7dcc1332743887045bd69991441421Christian Williamsimport android.database.sqlite.SQLiteDatabase;
1228dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesiimport android.database.sqlite.SQLiteOpenHelper;
133a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesiimport android.database.sqlite.SQLiteQueryBuilder;
141fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Canvas;
151fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Paint;
161fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.Path;
171fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.drawable.BitmapDrawable;
181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.graphics.drawable.Drawable;
1931af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesiimport android.hardware.Camera;
2006abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richardimport android.location.Geocoder;
211fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.location.LocationManager;
2236a56b1b82e6409c81ccc87ab7148cef105b4517Michael Portuesiimport android.media.AudioManager;
2331af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesiimport android.media.MediaRecorder;
247581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.ConnectivityManager;
257581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarseimport android.net.NetworkInfo;
261fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.os.Handler;
271fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.os.Looper;
28e8637c922e4f8e681769d63689accb89e6108056Michael Portuesiimport android.view.Display;
29e7a41c9b39233781c97dd599ff61024f0510e308Christian Williamsimport android.view.LayoutInflater;
301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.view.View;
311fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.view.ViewGroup;
326cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultzimport android.webkit.WebView;
331fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport android.widget.*;
341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.GeoPoint;
351fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.ItemizedOverlay;
361fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.MapController;
371fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williamsimport com.google.android.maps.MapView;
3833873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzimport com.xtremelabs.robolectric.shadows.*;
39e7a41c9b39233781c97dd599ff61024f0510e308Christian Williamsimport com.xtremelabs.robolectric.util.Implements;
4071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williamsimport com.xtremelabs.robolectric.util.Scheduler;
41a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzimport com.xtremelabs.robolectric.view.TestSharedPreferences;
420b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
430b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.lang.reflect.Constructor;
440b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.lang.reflect.InvocationTargetException;
450b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.util.Arrays;
460b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisherimport java.util.List;
470b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
48345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williamspublic class Robolectric {
498baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard    public static Application application;
5071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static Scheduler backgroundScheduler;
5171d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static Scheduler uiThreadScheduler;
528baea4cbf332f0e0acf559dfab4aa59dd7c71003Christian Williams & Ryan Richard
530b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    public static <T> T newInstanceOf(Class<T> clazz) {
540b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        try {
550b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            Constructor<T> defaultConstructor = clazz.getDeclaredConstructor();
560b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            defaultConstructor.setAccessible(true);
570b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            return defaultConstructor.newInstance();
580b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InstantiationException e) {
590b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
600b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (IllegalAccessException e) {
610b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
620b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (NoSuchMethodException e) {
630b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
640b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        } catch (InvocationTargetException e) {
650b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher            throw new RuntimeException(e);
660b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        }
670b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
680b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher
69e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindShadowClass(Class<?> realClass, Class<?> shadowClass) {
70cee7ff89bfcb83d6cd65e6de9b7cafe2c1caf40aChristian Williams        ShadowWrangler.getInstance().bindShadowClass(realClass, shadowClass);
71e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
72e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
73e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindShadowClass(Class<?> shadowClass) {
74e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        Implements realClass = shadowClass.getAnnotation(Implements.class);
7509aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams        if (realClass == null) {
7609aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams            throw new IllegalArgumentException(shadowClass + " is not annotated with @Implements");
7709aec959127fa05c4328b2a7a74d8d36db42e302Christian Williams        }
78673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz
79673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz        try {
80673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz            bindShadowClass(realClass.value(), shadowClass);
81673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz        } catch (TypeNotPresentException ignored) {
82673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz            //this allows users of the robolectric.jar file to use the non-Google APIs version of the api
83673ea0cf2535a9d4cedac53f1a34cef0510707f9Phil Goodwin & Tyler Schultz        }
84e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
85e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
86e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static void bindDefaultShadowClasses() {
87638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams        bindShadowClasses(getDefaultShadowClasses());
88638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams    }
89638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams
90638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams    public static void bindShadowClasses(List<Class<?>> shadowClasses) {
91638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams        for (Class<?> shadowClass : shadowClasses) {
92638a930898ff7ff4d62b8a3028439142af65e4b4Christian Williams            bindShadowClass(shadowClass);
93e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams        }
94e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
95e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
96cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    /**
97cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * Invoke this utility method in tests to reveal which Android api classes and methods are being invoked
98cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * for which there are no shadows or shadow methods. This helps expose which methods are being invoked
99cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * either by a third party library or application code which need new shadow methods to be written. Generates
100cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     * output for the current test only.
101cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz     */
102cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    public static void logMissingInvokedShadowMethods() {
103cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz        ShadowWrangler.getInstance().logMissingInvokedShadowMethods();
104cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz    }
105cedd6ea60db4bf5744077021f20092005bb3d461Tyler Schultz
106867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz    /**
107867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * Calls {@code performClick()} on a {@code View} after ensuring that it and its ancestors are visible and that it
108867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * is enabled.
109867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     *
110867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * @param view the view to click on
111867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * @return true if {@code View.OnClickListener}s were found and fired, false otherwise.
112867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     * @throws RuntimeException if the preconditions are not met.
113867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz     */
114867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz    public static boolean clickOn(View view) {
115867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz        return shadowOf(view).checkedPerformClick();
116867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz    }
117867bc14e9ed74617c4d2770d122231c29e4a02e3Phil Goodwin & Tyler Schultz
118e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static List<Class<?>> getDefaultShadowClasses() {
1190b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher        return Arrays.asList(
120c146ad8871a32bbf62aca259ede77d3f9cd07773Tyler Schultz                ShadowAbsoluteLayout.class,
121afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAbsSpinner.class,
1229893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowAbstractCursor.class,
123afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowActivity.class,
124afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAdapterView.class,
125afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAddress.class,
126afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAlertDialog.class,
127afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAlertDialog.ShadowBuilder.class,
128afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowApplication.class,
129afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowAppWidgetManager.class,
13071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams                ShadowAsyncTask.class,
13136a56b1b82e6409c81ccc87ab7148cef105b4517Michael Portuesi                ShadowAudioManager.class,
132afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowBaseAdapter.class,
133afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowBitmapDrawable.class,
13475d564ab2b02cbe8a0d8cb33779530f72ea813abChristian Williams & Ryan Richard                ShadowBundle.class,
13531af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi                ShadowCamera.class,
13631af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi                ShadowCameraParameters.class,
137afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowCanvas.class,
138afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowCompoundButton.class,
139afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowComponentName.class,
1407581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse                ShadowConnectivityManager.class,
1419893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowContentValues.class,
142afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowContext.class,
143afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowContextWrapper.class,
1441dcccba609fb2036994803ca6d71f9c76e1fe8e9Chee Wong                ShadowContextThemeWrapper.class,
145d1eee6c4ec28a6c17455ce5c29efb833f30dd5d0Michael Portuesi                ShadowDisplay.class,
146afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowDrawable.class,
147afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowDialog.class,
148afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowEditText.class,
14906abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard                ShadowGeocoder.class,
150afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowGeoPoint.class,
151afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowHandler.class,
152afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowImageView.class,
153afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowIntent.class,
154afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowIntentFilter.class,
155afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowItemizedOverlay.class,
156afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLayoutInflater.class,
157afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLayoutParams.class,
158afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowListActivity.class,
159afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowListView.class,
160afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLocation.class,
161afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLocationManager.class,
162afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowLooper.class,
163afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapController.class,
164afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapActivity.class,
165afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMapView.class,
16631af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi                ShadowMediaRecorder.class,
167afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowMotionEvent.class,
1687581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse                ShadowNetworkInfo.class,
169afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowOverlayItem.class,
170afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPaint.class,
171afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPath.class,
172afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPendingIntent.class,
173afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowPoint.class,
174e8637c922e4f8e681769d63689accb89e6108056Michael Portuesi                ShadowPreferenceManager.class,
175afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowRect.class,
176afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowRemoteViews.class,
177afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowResources.class,
178afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowService.class,
179afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.class,
180afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.ShadowSecure.class,
181afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSettings.ShadowSystem.class,
182afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowSpannableStringBuilder.class,
1839893f7266e7dcc1332743887045bd69991441421Christian Williams                ShadowSQLiteDatabase.class,
184b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi                ShadowSQLiteCursor.class,
18528dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi                ShadowSQLiteOpenHelper.class,
1863a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi                ShadowSQLiteQueryBuilder.class,
187afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTextUtils.class,
188afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTextView.class,
189afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowToast.class,
190afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowTypedValue.class,
191afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowView.class,
192afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowViewGroup.class,
1939ef88bf39bff29cb39dee4d84542c8f5a6178748Tyler Schultz                ShadowWebView.class,
194afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowWifiManager.class,
195afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams                ShadowZoomButtonsController.class
196adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams        );
1970b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher    }
19890008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher
199345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams    public static void resetStaticState() {
200e6dfaf271dbaf3ac1bb82d953669a56a02fc71d6Phil Goodwin & Tyler Schultz        ShadowWrangler.getInstance().silence();
201345fb6b77303f0d3c98cf748fefa0136183bdc79Christian Williams        Robolectric.application = new Application();
20271d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        Robolectric.backgroundScheduler = new Scheduler();
20371d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        Robolectric.uiThreadScheduler = new Scheduler();
20490008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher        TestSharedPreferences.reset();
205afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowToast.reset();
206afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowAlertDialog.reset();
207afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowDialog.reset();
208afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        ShadowLooper.resetAll();
20990008046fcb6aac20be2df7a0aa07129f6f0d62bIan Fisher    }
2101fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2119122a05312e767618ba0545a951df9cab86c8716Christian Williams    public static <T> T directlyOn(T shadowedObject) {
2129122a05312e767618ba0545a951df9cab86c8716Christian Williams        return RobolectricInternals.directlyOn(shadowedObject);
2139122a05312e767618ba0545a951df9cab86c8716Christian Williams    }
2149122a05312e767618ba0545a951df9cab86c8716Christian Williams
215433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowDrawable shadowOf(Drawable instance) {
216433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowDrawable) shadowOf_(instance);
2171fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
219433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowToast shadowOf(Toast instance) {
220433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowToast) shadowOf_(instance);
2211fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2221fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2237581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public static ShadowNetworkInfo shadowOf(NetworkInfo instance) {
2247581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse        return (ShadowNetworkInfo) shadowOf_(instance);
2257581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
2267581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
2277581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    public static ShadowConnectivityManager shadowOf(ConnectivityManager instance) {
2287581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse        return (ShadowConnectivityManager) shadowOf_(instance);
2297581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse    }
2307581f8ab1d3fb2950ae13fc09a9b1862d1ec3af1Macarse
231433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowBitmapDrawable shadowOf(BitmapDrawable instance) {
232433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowBitmapDrawable) shadowOf_(instance);
2331fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
235433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowZoomButtonsController shadowOf(ZoomButtonsController instance) {
236433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowZoomButtonsController) shadowOf_(instance);
2371fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2381fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
239433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowGeoPoint shadowOf(GeoPoint instance) {
240433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowGeoPoint) shadowOf_(instance);
2411fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2421fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
243433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowMapView shadowOf(MapView instance) {
244433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowMapView) shadowOf_(instance);
2451fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2461fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
247433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowMapController shadowOf(MapController instance) {
248433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowMapController) shadowOf_(instance);
2491fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2501fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
251433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowItemizedOverlay shadowOf(ItemizedOverlay instance) {
252433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowItemizedOverlay) shadowOf_(instance);
2531fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2541fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
255433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowListView shadowOf(ListView instance) {
256433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowListView) shadowOf_(instance);
2571fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2581fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
259433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowActivity shadowOf(Activity instance) {
260433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowActivity) shadowOf_(instance);
2611fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2621fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
263433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowContextWrapper shadowOf(ContextWrapper instance) {
264433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowContextWrapper) shadowOf_(instance);
2651fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2661fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
267433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowContextWrapper shadowOf(Context instance) {
268433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowContextWrapper) shadowOf_(instance);
2691fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2701fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
271433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowPaint shadowOf(Paint instance) {
272433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowPaint) shadowOf_(instance);
2731fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2741fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
275433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowPath shadowOf(Path instance) {
276433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowPath) shadowOf_(instance);
2771fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2781fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
279433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowListActivity shadowOf(ListActivity instance) {
280433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowListActivity) shadowOf_(instance);
2811fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2821fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
283433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowHandler shadowOf(Handler instance) {
284433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowHandler) shadowOf_(instance);
2851fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2861fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
287433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowIntent shadowOf(Intent instance) {
288433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowIntent) shadowOf_(instance);
2891fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2901fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
291433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowView shadowOf(View instance) {
292433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowView) shadowOf_(instance);
2931fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2941fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
295433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowViewGroup shadowOf(ViewGroup instance) {
296433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowViewGroup) shadowOf_(instance);
2971fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
2981fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
2996cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    public static ShadowWebView shadowOf(WebView instance) {
3006cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz        return (ShadowWebView) shadowOf_(instance);
3016cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz    }
3026cf9d6f657e61d727afc221dd157ae6ca41714baTyler Schultz
303433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAdapterView shadowOf(AdapterView instance) {
304433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAdapterView) shadowOf_(instance);
3051fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3061fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
307433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowTextView shadowOf(TextView instance) {
308433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowTextView) shadowOf_(instance);
3091fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3101fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
311433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowImageView shadowOf(ImageView instance) {
312433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowImageView) shadowOf_(instance);
3131fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3141fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
315433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowRemoteViews shadowOf(RemoteViews instance) {
316433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowRemoteViews) shadowOf_(instance);
3171fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3181fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
319433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowDialog shadowOf(Dialog instance) {
320433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowDialog) shadowOf_(instance);
3211fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3221fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
323433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAlertDialog shadowOf(AlertDialog instance) {
324433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAlertDialog) shadowOf_(instance);
3251fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3261fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
327433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowLooper shadowOf(Looper instance) {
328433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowLooper) shadowOf_(instance);
3291fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3301fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
331433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowCanvas shadowOf(Canvas instance) {
332433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowCanvas) shadowOf_(instance);
3331fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3341fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
335433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowLocationManager shadowOf(LocationManager instance) {
336433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowLocationManager) shadowOf_(instance);
3371fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3381fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
339433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowAppWidgetManager shadowOf(AppWidgetManager instance) {
340433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowAppWidgetManager) shadowOf_(instance);
3411fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3421fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
343433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static ShadowResources shadowOf(Resources instance) {
344433b46be67768332f764eab6879e0649993d79e3Christian Williams        return (ShadowResources) shadowOf_(instance);
3451fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
3461fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams
347e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    public static ShadowLayoutInflater shadowOf(LayoutInflater instance) {
34806abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard        return (ShadowLayoutInflater) shadowOf_(instance);
349e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams    }
350adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams
351adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    public static ShadowDisplay shadowOf(Display instance) {
3524a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams        return (ShadowDisplay) shadowOf_(instance);
353adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    }
354adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams
355adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    public static ShadowAudioManager shadowOf(AudioManager instance) {
3564a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams        return (ShadowAudioManager) shadowOf_(instance);
3574a9aa604410e3c8f91158a4caa5700f45a22eb47Christian Williams    }
358e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
35906abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard    public static ShadowGeocoder shadowOf(Geocoder instance) {
36006abdc35948a13a609c6e6c972d6fa19603b7fe9Joe Moore & Ryan Richard        return (ShadowGeocoder) shadowOf_(instance);
361adfaceabbda4c8c51f24a0def8926075bd7306adChristian Williams    }
362e7a41c9b39233781c97dd599ff61024f0510e308Christian Williams
3639893f7266e7dcc1332743887045bd69991441421Christian Williams    public static ShadowSQLiteDatabase shadowOf(SQLiteDatabase other) {
3649893f7266e7dcc1332743887045bd69991441421Christian Williams        return (ShadowSQLiteDatabase) Robolectric.shadowOf_(other);
3659893f7266e7dcc1332743887045bd69991441421Christian Williams    }
366b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi
367b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi    public static ShadowSQLiteCursor shadowOf(SQLiteCursor other) {
368b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi        return (ShadowSQLiteCursor) Robolectric.shadowOf_(other);
369b574da97569d2d098d0aaebbb947bffa8514a4f7Michael Portuesi    }
3709893f7266e7dcc1332743887045bd69991441421Christian Williams
37128dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi    public static ShadowSQLiteOpenHelper shadowOf(SQLiteOpenHelper other) {
37228dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi        return (ShadowSQLiteOpenHelper) Robolectric.shadowOf_(other);
37328dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi    }
37428dd1fc86f58b35b79e2fedc13f5b26f600a9a6aMichael Portuesi
3753a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi    public static ShadowSQLiteQueryBuilder shadowOf(SQLiteQueryBuilder other) {
3763a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi        return (ShadowSQLiteQueryBuilder) Robolectric.shadowOf_(other);
3773a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi    }
3783a99d4817b65b7eb0a9f44486072dbf43fdb2144Michael Portuesi
3799893f7266e7dcc1332743887045bd69991441421Christian Williams    public static ShadowContentValues shadowOf(ContentValues other) {
3809893f7266e7dcc1332743887045bd69991441421Christian Williams        return (ShadowContentValues) Robolectric.shadowOf_(other);
3819893f7266e7dcc1332743887045bd69991441421Christian Williams    }
38231af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi
38331af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi    public static ShadowCamera shadowOf(Camera instance) {
38431af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi        return (ShadowCamera) shadowOf_(instance);
38531af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi    }
38631af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi
38731af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi    public static ShadowCameraParameters shadowOf(Camera.Parameters instance) {
38831af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi        return (ShadowCameraParameters) shadowOf_(instance);
38931af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi    }
3909893f7266e7dcc1332743887045bd69991441421Christian Williams
39131af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi    public static ShadowMediaRecorder shadowOf(MediaRecorder instance) {
39231af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi        return (ShadowMediaRecorder) shadowOf_(instance);
39331af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi    }
39431af8607e2c7da6ba8708f57c4b67b6b4aaad921Michael Portuesi
3951fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    @SuppressWarnings({"unchecked"})
396433b46be67768332f764eab6879e0649993d79e3Christian Williams    public static <P, R> P shadowOf_(R instance) {
397cee7ff89bfcb83d6cd65e6de9b7cafe2c1caf40aChristian Williams        return (P) ShadowWrangler.getInstance().shadowOf(instance);
3981fbcf7680e415c7b15a08376835385a9226e8d2bChristian Williams    }
39971d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams
40071d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static void runBackgroundTasks() {
40171d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        backgroundScheduler.tick(0);
40271d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    }
40371d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams
40471d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    public static void runUiThreadTasks() {
40571d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams        uiThreadScheduler.tick(0);
40671d7c3bcf0400e4b81109dd785187e1a93da3cabChristian Williams    }
4070b378afcde0200166e546c46a7642015accfce49Christian Williams & Ian Fisher}
408