Merge "Implement text entry key API for accessibility services in AOSP Keyboard"
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
index f7a1163..5c03d26 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java
@@ -243,7 +243,6 @@
         // Make sure we're not getting an EXIT event because the user slid
         // off the keyboard area, then force a key press.
         if (key != null) {
-            performClickOn(key);
             onHoverExitFrom(key);
         }
         setLastHoverKey(null);
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
index a3511c6..7266aa8 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
@@ -236,6 +236,7 @@
         // Obtain and initialize an AccessibilityNodeInfo with information about the virtual view.
         final AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
         info.setPackageName(mKeyboardView.getContext().getPackageName());
+        info.setTextEntryKey(true);
         info.setClassName(key.getClass().getName());
         info.setContentDescription(keyDescription);
         info.setBoundsInParent(boundsInParent);
@@ -244,13 +245,9 @@
         info.setSource(mKeyboardView, virtualViewId);
         info.setEnabled(key.isEnabled());
         info.setVisibleToUser(true);
-        // Don't add ACTION_CLICK and ACTION_LONG_CLOCK actions while hovering on the key.
-        // See {@link #onHoverEnterTo(Key)} and {@link #onHoverExitFrom(Key)}.
-        if (virtualViewId != mHoveringNodeId) {
-            info.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
-            if (key.isLongPressEnabled()) {
-                info.addAction(AccessibilityNodeInfoCompat.ACTION_LONG_CLICK);
-            }
+        info.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
+        if (key.isLongPressEnabled()) {
+            info.addAction(AccessibilityNodeInfoCompat.ACTION_LONG_CLICK);
         }
 
         if (mAccessibilityFocusedView == virtualViewId) {
diff --git a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
index edda32d..3234993 100644
--- a/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
+++ b/java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java
@@ -62,13 +62,10 @@
     // The rectangle region to ignore hover events.
     private final Rect mBoundsToIgnoreHoverEvent = new Rect();
 
-    private final AccessibilityLongPressTimer mAccessibilityLongPressTimer;
 
     public MainKeyboardAccessibilityDelegate(final MainKeyboardView mainKeyboardView,
             final KeyDetector keyDetector) {
         super(mainKeyboardView, keyDetector);
-        mAccessibilityLongPressTimer = new AccessibilityLongPressTimer(
-                this /* callback */, mainKeyboardView.getContext());
     }
 
     /**
@@ -233,7 +230,6 @@
             Log.d(TAG, "onHoverEnterTo: key=" + key
                     + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
         }
-        mAccessibilityLongPressTimer.cancelLongPress();
         if (mBoundsToIgnoreHoverEvent.contains(x, y)) {
             return;
         }
@@ -241,9 +237,6 @@
         // Further hover events should be handled.
         mBoundsToIgnoreHoverEvent.setEmpty();
         super.onHoverEnterTo(key);
-        if (key.isLongPressEnabled()) {
-            mAccessibilityLongPressTimer.startLongPress(key);
-        }
     }
 
     @Override
@@ -254,7 +247,6 @@
             Log.d(TAG, "onHoverExitFrom: key=" + key
                     + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
         }
-        mAccessibilityLongPressTimer.cancelLongPress();
         super.onHoverExitFrom(key);
     }