org.robolectric.shadows.ShadowAccessibilityManager Maven / Gradle / Ivy
package org.robolectric.shadows;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.content.Context;
import android.content.pm.ServiceInfo;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.accessibility.AccessibilityManager;
import android.view.accessibility.IAccessibilityManager;
import com.android.server.accessibility.AccessibilityManagerService;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.HiddenApi;
import org.robolectric.util.ReflectionHelpers;
import org.robolectric.internal.Shadow;
import org.robolectric.util.ReflectionHelpers.ClassParameter;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.List;
/**
* Shadow for {@link android.view.accessibility.AccessibilityManager}.
*/
@Implements(AccessibilityManager.class)
public class ShadowAccessibilityManager {
private boolean enabled;
private List installedAccessibilityServiceList;
private List enabledAccessibilityServiceList;
private List accessibilityServiceList;
private boolean touchExplorationEnabled;
@HiddenApi @Implementation
public static AccessibilityManager getInstance(Context context) throws Exception {
AccessibilityManager accessibilityManager = Shadow.newInstance(AccessibilityManager.class, new Class[] {Context.class, IAccessibilityManager.class, int.class}, new Object[] {context, new AccessibilityManagerService(context), 0});
ReflectionHelpers.setField(accessibilityManager, "mHandler", new MyHandler(context.getMainLooper(), accessibilityManager));
return accessibilityManager;
}
@Implementation
public boolean addAccessibilityStateChangeListener(AccessibilityManager.AccessibilityStateChangeListener listener) {
return true;
}
@Implementation
public boolean removeAccessibilityStateChangeListener(AccessibilityManager.AccessibilityStateChangeListener listener) {
return true;
}
@Implementation
public List getAccessibilityServiceList () {
return accessibilityServiceList;
}
public void setAccessibilityServiceList(List accessibilityServiceList) {
this.accessibilityServiceList = accessibilityServiceList;
}
@Implementation
public List getEnabledAccessibilityServiceList (int feedbackTypeFlags) {
return enabledAccessibilityServiceList;
}
public void setEnabledAccessibilityServiceList(List enabledAccessibilityServiceList) {
this.enabledAccessibilityServiceList = enabledAccessibilityServiceList;
}
@Implementation
public List getInstalledAccessibilityServiceList () {
return installedAccessibilityServiceList;
}
public void setInstalledAccessibilityServiceList(List installedAccessibilityServiceList) {
this.installedAccessibilityServiceList = installedAccessibilityServiceList;
}
@Implementation
public boolean isEnabled () {
return enabled;
}
public void setEnabled(boolean enabled) {
this.enabled = enabled;
}
@Implementation
public boolean isTouchExplorationEnabled () {
return touchExplorationEnabled;
}
public void setTouchExplorationEnabled(boolean touchExplorationEnabled) {
this.touchExplorationEnabled = touchExplorationEnabled;
}
static class MyHandler extends Handler {
private static final int DO_SET_STATE = 10;
private final AccessibilityManager accessibilityManager;
MyHandler(Looper mainLooper, AccessibilityManager accessibilityManager) {
super(mainLooper);
this.accessibilityManager = accessibilityManager;
}
@Override
public void handleMessage(Message message) {
switch (message.what) {
case DO_SET_STATE:
ReflectionHelpers.callInstanceMethod(accessibilityManager, "setState", ClassParameter.from(int.class, message.arg1));
return;
default:
Log.w("AccessibilityManager", "Unknown message type: " + message.what);
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy