diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java index 94e2c0ee3e66a..c3b17dbcce1ae 100644 --- a/core/java/android/view/accessibility/AccessibilityManager.java +++ b/core/java/android/view/accessibility/AccessibilityManager.java @@ -79,42 +79,15 @@ public final class AccessibilityManager { /** @hide */ public static final int STATE_FLAG_HIGH_TEXT_CONTRAST_ENABLED = 0x00000004; - /** @hide */ - public static final int INVERSION_DISABLED = -1; - - /** @hide */ - public static final int INVERSION_STANDARD = 0; - - /** @hide */ - public static final int INVERSION_HUE_ONLY = 1; - - /** @hide */ - public static final int INVERSION_VALUE_ONLY = 2; - /** @hide */ public static final int DALTONIZER_DISABLED = -1; /** @hide */ public static final int DALTONIZER_SIMULATE_MONOCHROMACY = 0; - /** @hide */ - public static final int DALTONIZER_SIMULATE_PROTANOMALY = 1; - - /** @hide */ - public static final int DALTONIZER_SIMULATE_DEUTERANOMALY = 2; - - /** @hide */ - public static final int DALTONIZER_SIMULATE_TRITANOMALY = 3; - - /** @hide */ - public static final int DALTONIZER_CORRECT_PROTANOMALY = 11; - /** @hide */ public static final int DALTONIZER_CORRECT_DEUTERANOMALY = 12; - /** @hide */ - public static final int DALTONIZER_CORRECT_TRITANOMALY = 13; - static final Object sInstanceSync = new Object(); private static AccessibilityManager sInstance; @@ -134,16 +107,13 @@ public final class AccessibilityManager { boolean mIsHighTextContrastEnabled; private final CopyOnWriteArrayList - mAccessibilityStateChangeListeners = new CopyOnWriteArrayList< - AccessibilityStateChangeListener>(); + mAccessibilityStateChangeListeners = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList - mTouchExplorationStateChangeListeners = new CopyOnWriteArrayList< - TouchExplorationStateChangeListener>(); + mTouchExplorationStateChangeListeners = new CopyOnWriteArrayList<>(); private final CopyOnWriteArrayList - mHighTextContrastStateChangeListeners = new CopyOnWriteArrayList< - HighTextContrastChangeListener>(); + mHighTextContrastStateChangeListeners = new CopyOnWriteArrayList<>(); /** * Listener for the system accessibility state. To listen for changes to the @@ -197,9 +167,13 @@ public final class AccessibilityManager { private final IAccessibilityManagerClient.Stub mClient = new IAccessibilityManagerClient.Stub() { public void setState(int state) { - synchronized (mLock) { - setStateLocked(state); - } + // We do not want to change this immediately as the applicatoin may + // have already checked that accessibility is on and fired an event, + // that is now propagating up the view tree, Hence, if accessibility + // is now off an exception will be thrown. We want to have the exception + // enforcement to guard against apps that fire unnecessary accessibility + // events when accessibility is off. + mHandler.obtainMessage(MyHandler.MSG_SET_STATE, state, 0).sendToTarget(); } }; @@ -393,7 +367,7 @@ public final class AccessibilityManager { @Deprecated public List getAccessibilityServiceList() { List infos = getInstalledAccessibilityServiceList(); - List services = new ArrayList(); + List services = new ArrayList<>(); final int infoCount = infos.size(); for (int i = 0; i < infoCount; i++) { AccessibilityServiceInfo info = infos.get(i); @@ -446,6 +420,7 @@ public final class AccessibilityManager { * @see AccessibilityServiceInfo#FEEDBACK_HAPTIC * @see AccessibilityServiceInfo#FEEDBACK_SPOKEN * @see AccessibilityServiceInfo#FEEDBACK_VISUAL + * @see AccessibilityServiceInfo#FEEDBACK_BRAILLE */ public List getEnabledAccessibilityServiceList( int feedbackTypeFlags) { @@ -705,6 +680,7 @@ public final class AccessibilityManager { public static final int MSG_NOTIFY_ACCESSIBILITY_STATE_CHANGED = 1; public static final int MSG_NOTIFY_EXPLORATION_STATE_CHANGED = 2; public static final int MSG_NOTIFY_HIGH_TEXT_CONTRAST_STATE_CHANGED = 3; + public static final int MSG_SET_STATE = 4; public MyHandler(Looper looper) { super(looper, null, false); @@ -724,6 +700,14 @@ public final class AccessibilityManager { case MSG_NOTIFY_HIGH_TEXT_CONTRAST_STATE_CHANGED: { handleNotifyHighTextContrastStateChanged(); } break; + + case MSG_SET_STATE: { + // See comment at mClient + final int state = message.arg1; + synchronized (mLock) { + setStateLocked(state); + } + } break; } } }