blob: 25848918c4fa671667c64846b3e518430ba0cd12 [file] [log] [blame]
package org.robolectric.android.fakes;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import androidx.test.runner.MonitoringInstrumentation;
import org.robolectric.Robolectric;
import org.robolectric.android.controller.ActivityController;
public class RoboMonitoringInstrumentation extends MonitoringInstrumentation {
@Override
protected void specifyDexMakerCacheProperty() {
// ignore, unnecessary for robolectric
}
@Override
protected void installMultidex() {
// ignore, unnecessary for robolectric
}
@Override
public void setInTouchMode(boolean inTouch) {
// ignore
}
@Override
public void waitForIdleSync() {
// ignore
}
@Override
public Activity startActivitySync(final Intent intent) {
ActivityInfo ai = intent.resolveActivityInfo(getTargetContext().getPackageManager(), 0);
try {
Class<? extends Activity> activityClass = Class.forName(ai.name).asSubclass(Activity.class);
ActivityController<? extends Activity> controller = Robolectric.buildActivity(activityClass);
Activity activity = controller.get();
callActivityOnCreate(activity, null);
controller.postCreate(null);
callActivityOnStart(activity);
callActivityOnResume(activity);
controller.visible().windowFocusChanged(true);
return activity;
} catch (ClassNotFoundException e) {
throw new RuntimeException("Could not load activity " + ai.name, e);
}
}
@Override
public void runOnMainSync(Runnable runner) {
runner.run();
}
}