1 package org.robolectric.shadows; 2 3 import android.app.Activity; 4 import android.app.ActivityThread; 5 import android.app.Application; 6 import android.app.Dialog; 7 import android.app.Instrumentation; 8 import android.content.Context; 9 import android.content.Intent; 10 import android.content.pm.ActivityInfo; 11 import android.content.res.Configuration; 12 import android.os.Build; 13 import android.os.Build.VERSION_CODES; 14 import android.os.Bundle; 15 import android.os.IBinder; 16 import android.view.View; 17 import android.view.Window; 18 import org.robolectric.RuntimeEnvironment; 19 import org.robolectric.shadow.api.Shadow; 20 import org.robolectric.util.reflector.Accessor; 21 import org.robolectric.util.reflector.ForType; 22 import org.robolectric.util.reflector.WithType; 23 24 /** Accessor interface for {@link Activity}'s internals. */ 25 @ForType(Activity.class) 26 public interface _Activity_ { 27 28 @Accessor("mToken") getToken()29 IBinder getToken(); 30 31 // <= LOLLIPOP: attach( Context context, ActivityThread activityThread, Instrumentation instrumentation, IBinder token, int ident, Application application, Intent intent, ActivityInfo activityInfo, CharSequence title, Activity parent, String id, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances, Configuration configuration, @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor)32 void attach( 33 Context context, 34 ActivityThread activityThread, 35 Instrumentation instrumentation, 36 IBinder token, 37 int ident, 38 Application application, 39 Intent intent, 40 ActivityInfo activityInfo, 41 CharSequence title, 42 Activity parent, 43 String id, 44 @WithType("android.app.Activity$NonConfigurationInstances") 45 Object lastNonConfigurationInstances, 46 Configuration configuration, 47 @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor); 48 49 // <= M attach( Context context, ActivityThread activityThread, Instrumentation instrumentation, IBinder token, int ident, Application application, Intent intent, ActivityInfo activityInfo, CharSequence title, Activity parent, String id, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances, Configuration configuration, String referer, @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor)50 void attach( 51 Context context, 52 ActivityThread activityThread, 53 Instrumentation instrumentation, 54 IBinder token, 55 int ident, 56 Application application, 57 Intent intent, 58 ActivityInfo activityInfo, 59 CharSequence title, 60 Activity parent, 61 String id, 62 @WithType("android.app.Activity$NonConfigurationInstances") 63 Object lastNonConfigurationInstances, 64 Configuration configuration, 65 String referer, 66 @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor); 67 68 // <= N_MR1 attach( Context context, ActivityThread activityThread, Instrumentation instrumentation, IBinder token, int ident, Application application, Intent intent, ActivityInfo activityInfo, CharSequence title, Activity parent, String id, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances, Configuration configuration, String referer, @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, Window window)69 void attach( 70 Context context, 71 ActivityThread activityThread, 72 Instrumentation instrumentation, 73 IBinder token, 74 int ident, 75 Application application, 76 Intent intent, 77 ActivityInfo activityInfo, 78 CharSequence title, 79 Activity parent, 80 String id, 81 @WithType("android.app.Activity$NonConfigurationInstances") 82 Object lastNonConfigurationInstances, 83 Configuration configuration, 84 String referer, 85 @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, 86 Window window); 87 88 // <= P attach( Context context, ActivityThread activityThread, Instrumentation instrumentation, IBinder token, int ident, Application application, Intent intent, ActivityInfo activityInfo, CharSequence title, Activity parent, String id, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances, Configuration configuration, String referer, @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, Window window, @WithType("android.view.ViewRootImpl$ActivityConfigCallback") Object activityConfigCallback)89 void attach( 90 Context context, 91 ActivityThread activityThread, 92 Instrumentation instrumentation, 93 IBinder token, 94 int ident, 95 Application application, 96 Intent intent, 97 ActivityInfo activityInfo, 98 CharSequence title, 99 Activity parent, 100 String id, 101 @WithType("android.app.Activity$NonConfigurationInstances") 102 Object lastNonConfigurationInstances, 103 Configuration configuration, 104 String referer, 105 @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, 106 Window window, 107 @WithType("android.view.ViewRootImpl$ActivityConfigCallback") Object activityConfigCallback); 108 109 // <= R attach( Context context, ActivityThread activityThread, Instrumentation instrumentation, IBinder token, int ident, Application application, Intent intent, ActivityInfo activityInfo, CharSequence title, Activity parent, String id, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances, Configuration configuration, String referer, @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, Window window, @WithType("android.view.ViewRootImpl$ActivityConfigCallback") Object activityConfigCallback, IBinder assistToken)110 void attach( 111 Context context, 112 ActivityThread activityThread, 113 Instrumentation instrumentation, 114 IBinder token, 115 int ident, 116 Application application, 117 Intent intent, 118 ActivityInfo activityInfo, 119 CharSequence title, 120 Activity parent, 121 String id, 122 @WithType("android.app.Activity$NonConfigurationInstances") 123 Object lastNonConfigurationInstances, 124 Configuration configuration, 125 String referer, 126 @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, 127 Window window, 128 @WithType("android.view.ViewRootImpl$ActivityConfigCallback") Object activityConfigCallback, 129 IBinder assistToken); 130 131 // >= S attach( Context context, ActivityThread activityThread, Instrumentation instrumentation, IBinder token, int ident, Application application, Intent intent, ActivityInfo activityInfo, CharSequence title, Activity parent, String id, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances, Configuration configuration, String referer, @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, Window window, @WithType("android.view.ViewRootImpl$ActivityConfigCallback") Object activityConfigCallback, IBinder assistToken, IBinder shareableActivityToken)132 void attach( 133 Context context, 134 ActivityThread activityThread, 135 Instrumentation instrumentation, 136 IBinder token, 137 int ident, 138 Application application, 139 Intent intent, 140 ActivityInfo activityInfo, 141 CharSequence title, 142 Activity parent, 143 String id, 144 @WithType("android.app.Activity$NonConfigurationInstances") 145 Object lastNonConfigurationInstances, 146 Configuration configuration, 147 String referer, 148 @WithType("com.android.internal.app.IVoiceInteractor") Object iVoiceInteractor, 149 Window window, 150 @WithType("android.view.ViewRootImpl$ActivityConfigCallback") Object activityConfigCallback, 151 IBinder assistToken, 152 IBinder shareableActivityToken); 153 callAttach( Activity realActivity, Context baseContext, ActivityThread activityThread, Instrumentation instrumentation, Application application, Intent intent, ActivityInfo activityInfo, IBinder token, CharSequence activityTitle, @WithType("android.app.Activity$NonConfigurationInstances") Object lastNonConfigurationInstances)154 default void callAttach( 155 Activity realActivity, 156 Context baseContext, 157 ActivityThread activityThread, 158 Instrumentation instrumentation, 159 Application application, 160 Intent intent, 161 ActivityInfo activityInfo, 162 IBinder token, 163 CharSequence activityTitle, 164 @WithType("android.app.Activity$NonConfigurationInstances") 165 Object lastNonConfigurationInstances) { 166 Configuration config = new Configuration(application.getResources().getConfiguration()); 167 int apiLevel = RuntimeEnvironment.getApiLevel(); 168 if (apiLevel == Build.VERSION_CODES.LOLLIPOP) { 169 attach( 170 baseContext, 171 activityThread, 172 instrumentation, 173 token, 174 0, 175 application, 176 intent, 177 activityInfo, 178 activityTitle, 179 null, 180 null, 181 lastNonConfigurationInstances, 182 config, 183 null); 184 } else if (apiLevel <= Build.VERSION_CODES.M) { 185 attach( 186 baseContext, 187 activityThread, 188 instrumentation, 189 token, 190 0, 191 application, 192 intent, 193 activityInfo, 194 activityTitle, 195 null, 196 null, 197 lastNonConfigurationInstances, 198 config, 199 "referrer", 200 null); 201 } else if (apiLevel <= Build.VERSION_CODES.N_MR1) { 202 attach( 203 baseContext, 204 activityThread, 205 instrumentation, 206 token, 207 0, 208 application, 209 intent, 210 activityInfo, 211 activityTitle, 212 null, 213 null, 214 lastNonConfigurationInstances, 215 config, 216 "referrer", 217 null, 218 null); 219 } else if (apiLevel <= Build.VERSION_CODES.P) { 220 attach( 221 baseContext, 222 activityThread, 223 instrumentation, 224 token, 225 0, 226 application, 227 intent, 228 activityInfo, 229 activityTitle, 230 null, 231 null, 232 lastNonConfigurationInstances, 233 config, 234 "referrer", 235 null, 236 null, 237 null); 238 } else if (apiLevel <= VERSION_CODES.R) { 239 attach( 240 baseContext, 241 activityThread, 242 instrumentation, 243 token, 244 0, 245 application, 246 intent, 247 activityInfo, 248 activityTitle, 249 null, 250 null, 251 lastNonConfigurationInstances, 252 config, 253 "referrer", 254 null, 255 null, 256 null, 257 null); 258 } else if (apiLevel > Build.VERSION_CODES.R) { 259 attach( 260 baseContext, 261 activityThread, 262 instrumentation, 263 token, 264 0, 265 application, 266 intent, 267 activityInfo, 268 activityTitle, 269 null, 270 null, 271 lastNonConfigurationInstances, 272 config, 273 "referrer", 274 null, 275 null, 276 null, 277 null, 278 null); 279 } 280 Shadow.<ShadowActivityThread>extract(activityThread) 281 .registerActivityLaunch(intent, activityInfo, realActivity, token); 282 } 283 performCreate(Bundle icicle)284 void performCreate(Bundle icicle); 285 performDestroy()286 void performDestroy(); 287 performPause()288 void performPause(); 289 performRestart()290 void performRestart(); 291 performRestart(boolean start, String reason)292 void performRestart(boolean start, String reason); 293 performRestart(boolean start)294 void performRestart(boolean start); 295 performRestoreInstanceState(Bundle savedInstanceState)296 void performRestoreInstanceState(Bundle savedInstanceState); 297 performResume()298 void performResume(); 299 performResume(boolean followedByPause, String reason)300 void performResume(boolean followedByPause, String reason); 301 performTopResumedActivityChanged(boolean isTopResumedActivity, String reason)302 void performTopResumedActivityChanged(boolean isTopResumedActivity, String reason); 303 performSaveInstanceState(Bundle outState)304 void performSaveInstanceState(Bundle outState); 305 performStart()306 void performStart(); 307 performStart(String reason)308 void performStart(String reason); 309 performStop()310 void performStop(); 311 performStop(boolean preserveWindow)312 void performStop(boolean preserveWindow); 313 performStop(boolean preserveWindow, String reason)314 void performStop(boolean preserveWindow, String reason); 315 onPostCreate(Bundle savedInstanceState)316 void onPostCreate(Bundle savedInstanceState); 317 onPostResume()318 void onPostResume(); 319 makeVisible()320 void makeVisible(); 321 onNewIntent(Intent intent)322 void onNewIntent(Intent intent); 323 onActivityResult(int requestCode, int resultCode, Intent data)324 void onActivityResult(int requestCode, int resultCode, Intent data); 325 dispatchActivityResult(String who, int requestCode, int resultCode, Intent data)326 void dispatchActivityResult(String who, int requestCode, int resultCode, Intent data); 327 dispatchActivityResult( String who, int requestCode, int resultCode, Intent data, String type)328 void dispatchActivityResult( 329 String who, int requestCode, int resultCode, Intent data, String type); 330 onCreateDialog(int id)331 Dialog onCreateDialog(int id); 332 onPrepareDialog(int id, Dialog dialog, Bundle args)333 void onPrepareDialog(int id, Dialog dialog, Bundle args); 334 onPrepareDialog(int id, Dialog dialog)335 void onPrepareDialog(int id, Dialog dialog); 336 retainNonConfigurationInstances()337 Object retainNonConfigurationInstances(); 338 339 @Accessor("mApplication") setApplication(Application application)340 void setApplication(Application application); 341 342 @Accessor("mDecor") setDecor(View decorView)343 void setDecor(View decorView); 344 345 @Accessor("mFinished") setFinished(boolean finished)346 void setFinished(boolean finished); 347 348 @Accessor("mLastNonConfigurationInstances") setLastNonConfigurationInstances(Object nonConfigInstance)349 void setLastNonConfigurationInstances(Object nonConfigInstance); 350 setVoiceInteractor( @ithType"com.android.internal.app.IVoiceInteractor") Object voiceInteractor)351 void setVoiceInteractor( 352 @WithType("com.android.internal.app.IVoiceInteractor") Object voiceInteractor); 353 354 @Accessor("mWindowAdded") getWindowAdded()355 boolean getWindowAdded(); 356 357 @Accessor("mWindow") setWindow(Window window)358 void setWindow(Window window); 359 360 @Accessor("mChangingConfigurations") setChangingConfigurations(boolean value)361 void setChangingConfigurations(boolean value); 362 363 @Accessor("mConfigChangeFlags") setConfigChangeFlags(int value)364 void setConfigChangeFlags(int value); 365 366 @Accessor("mInstrumentation") getInstrumentation()367 Instrumentation getInstrumentation(); 368 } 369