diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java index 67e21b10c800125e5aa25596a36b4ab805505ad6..3cfef972adb3b40ba69409f58e3dcaa048ede527 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityEntityProvider.java @@ -282,7 +282,12 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat return; } - parent.requestSendAccessibilityEvent(mKeyboardView, event); + if (!parent.requestSendAccessibilityEvent(mKeyboardView, event)) { + // TODO: Remove this line after the top-level view for the IME + // window is fixed to be non-null and requestSendAccessibilityEvent + // can return true. + mAccessibilityUtils.requestSendAccessibilityEvent(event); + } } /** diff --git a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java index 2ea7d83e4f0b1fce56aebb1e58b8507c7c766da1..616b1c6d71c648eae699621357b7a98af0e41edd 100644 --- a/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java +++ b/java/src/com/android/inputmethod/accessibility/AccessibilityUtils.java @@ -174,4 +174,16 @@ public class AccessibilityUtils { speak(text); } } + + /** + * Sends the specified {@link AccessibilityEvent} if accessibility is + * enabled. No operation if accessibility is disabled. + * + * @param event The event to send. + */ + public void requestSendAccessibilityEvent(AccessibilityEvent event) { + if (mAccessibilityManager.isEnabled()) { + mAccessibilityManager.sendAccessibilityEvent(event); + } + } }