When Accessibility is on, intercept touch events during dispatch.

This allows Accessibility code to safely inject events into
onTouchEvent() without accidentally intercepting them.

Bug: 7137557
Change-Id: Ie4fa8e3be5b1bb84f57c6254feab1129cb89998f
diff --git a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
index 77940c0..01220a5 100644
--- a/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
+++ b/java/src/com/android/inputmethod/accessibility/AccessibleKeyboardViewProxy.java
@@ -105,15 +105,15 @@
     }
 
     /**
-     * Receives motion events when touch exploration is turned on in SDK
-     * versions ICS and higher.
+     * Intercepts touch events before dispatch when touch exploration is turned
+     * on in ICS and higher.
      *
-     * @param event The motion event.
+     * @param event The motion event being dispatched.
      * @return {@code true} if the event is handled
      */
-    public boolean onTouchEvent(MotionEvent event) {
+    public boolean dispatchTouchEvent(MotionEvent event) {
         // To avoid accidental key presses during touch exploration, always drop
-        // non-hover touch events.
+        // touch events generated by the user.
         return false;
     }
 
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index f6b66a7..4ed0f58 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -661,13 +661,18 @@
     }
 
     @Override
+    public boolean dispatchTouchEvent(MotionEvent event) {
+        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
+            return AccessibleKeyboardViewProxy.getInstance().dispatchTouchEvent(event);
+        }
+        return super.dispatchTouchEvent(event);
+    }
+
+    @Override
     public boolean onTouchEvent(final MotionEvent me) {
         if (getKeyboard() == null) {
             return false;
         }
-        if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
-            return AccessibleKeyboardViewProxy.getInstance().onTouchEvent(me);
-        }
         return mTouchScreenRegulator.onTouchEvent(me);
     }