package org.robolectric.shadows;
import android.app.ISearchManager;
import android.content.Context;
import android.os.Binder;
import android.os.IBinder;
import android.os.IInterface;
import android.os.RemoteException;
import android.os.ServiceManager;
import java.util.HashMap;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import java.util.Map;
import org.robolectric.util.ReflectionHelpers;
@Implements(value = ServiceManager.class, isInAndroidSdk = false)
public class ShadowServiceManager {
private static Map<String, IBinder> SERVICES = new HashMap<String, IBinder>() {{
put(Context.SEARCH_SERVICE, createBinder(ISearchManager.class, "android.app.ISearchManager"));
put(Context.UI_MODE_SERVICE, createBinder(ISearchManager.class, "android.app.IUiModeManager"));
}};
@Implementation
public static IBinder getService(String name) {
return SERVICES.get(name);
}
private static Binder createBinder(Class<? extends IInterface> clazz, String descriptor) {
Binder binder = new Binder();
binder.attachInterface(ReflectionHelpers.createNullProxy(clazz), descriptor);
return binder;
}
@Implementation
public static void addService(String name, IBinder service) {
}
@Implementation
public static IBinder checkService(String name) {
return null;
}
@Implementation
public static String[] listServices() throws RemoteException {
return null;
}
@Implementation
public static void initServiceCache(Map<String, IBinder> cache) {
}
}