package org.robolectric.shadows;
import android.app.Activity;
import android.app.Application;
import android.content.res.Configuration;
import android.os.Looper;
import org.robolectric.Shadows;
import org.robolectric.ShadowsAdapter;
import org.robolectric.manifest.AndroidManifest;
import org.robolectric.util.Scheduler;
import static org.robolectric.Shadows.shadowOf;
/**
* Interface between the Robolectric runtime and the shadows-core module.
*/
public class CoreShadowsAdapter implements ShadowsAdapter {
@Override
public Scheduler getBackgroundScheduler() {
return ShadowApplication.getInstance().getBackgroundThreadScheduler();
}
@Override
public ShadowActivityAdapter getShadowActivityAdapter(Activity component) {
final ShadowActivity shadow = Shadows.shadowOf(component);
return new ShadowActivityAdapter() {
public void setThemeFromManifest() {
shadow.setThemeFromManifest();
}
};
}
@Override
public ShadowLooperAdapter getMainLooper() {
final ShadowLooper shadow = Shadows.shadowOf(Looper.getMainLooper());
return new ShadowLooperAdapter() {
public void runPaused(Runnable runnable) {
shadow.runPaused(runnable);
}
};
}
@Override
public String getShadowActivityThreadClassName() {
return ShadowActivityThread.CLASS_NAME;
}
@Override
public ShadowApplicationAdapter getApplicationAdapter(final Activity component) {
return new ShadowApplicationAdapter() {
public AndroidManifest getAppManifest() {
return ShadowApplication.getInstance().getAppManifest();
}
};
}
@Override
public void setupLogging() {
ShadowLog.setupLogging();
}
@Override
public String getShadowContextImplClassName() {
return ShadowContextImpl.CLASS_NAME;
}
@Override
public void bind(Application application, AndroidManifest appManifest) {
shadowOf(application).bind(appManifest);
}
}