aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2014-06-19 13:38:15 -0700
committerTadashi G. Takaoka <takaoka@google.com>2014-06-20 14:32:16 -0700
commitd801b6ee668f6ed4ef1926fd2cdb928fd36ace3a (patch)
tree63958c388a262343af79ab13f083af0f7813876b
parentd2e566f9991e2a3540935a7e38d01dd4f65fd42b (diff)
downloadlatinime-d801b6ee668f6ed4ef1926fd2cdb928fd36ace3a.tar.gz
latinime-d801b6ee668f6ed4ef1926fd2cdb928fd36ace3a.tar.xz
latinime-d801b6ee668f6ed4ef1926fd2cdb928fd36ace3a.zip
Populate accessibility root node info of keyboard
Partially reverting Ie033d21ef8 to populate root node info. This CL also fixes the bounds in screen of virtual node info. Bug: 15746768 Bug: 15582251 Change-Id: I3a82f904270adf138036ef462fd70b349a3cd33e
-rw-r--r--java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java20
-rw-r--r--java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java7
2 files changed, 23 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
index cb13483f2..dd8b0c3ea 100644
--- a/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
+++ b/java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java
@@ -76,7 +76,6 @@ final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderC
mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance();
mAccessibilityUtils = AccessibilityUtils.getInstance();
mKeyboardView = keyboardView;
- updateParentLocation();
// Since this class is constructed lazily, we might not get a subsequent
// call to setKeyboard() and therefore need to call it now.
@@ -169,10 +168,23 @@ final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderC
}
if (virtualViewId == View.NO_ID) {
// We are requested to create an AccessibilityNodeInfo describing
- // this View. Returning an empty info is sufficient for a keyboard.
+ // this View, i.e. the root of the virtual sub-tree.
final AccessibilityNodeInfoCompat rootInfo =
AccessibilityNodeInfoCompat.obtain(mKeyboardView);
ViewCompat.onInitializeAccessibilityNodeInfo(mKeyboardView, rootInfo);
+ updateParentLocation();
+
+ // Add the virtual children of the root View.
+ final List<Key> sortedKeys = mKeyboard.getSortedKeys();
+ final int size = sortedKeys.size();
+ for (int index = 0; index < size; index++) {
+ final Key key = sortedKeys.get(index);
+ if (key.isSpacer()) {
+ continue;
+ }
+ // Use an index of the sorted keys list as a virtual view id.
+ rootInfo.addChild(mKeyboardView, index);
+ }
return rootInfo;
}
@@ -200,9 +212,9 @@ final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderC
info.setBoundsInScreen(boundsInScreen);
info.setParent(mKeyboardView);
info.setSource(mKeyboardView, virtualViewId);
- info.setBoundsInScreen(boundsInScreen);
- info.setEnabled(true);
+ info.setEnabled(key.isEnabled());
info.setVisibleToUser(true);
+ // TODO: Add ACTION_CLICK and ACTION_LONG_CLICK.
if (mAccessibilityFocusedView == virtualViewId) {
info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
diff --git a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
index a34dbef4b..8010a3e7e 100644
--- a/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/emoji/EmojiPageKeyboardView.java
@@ -21,6 +21,7 @@ import android.os.Handler;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
+import android.view.accessibility.AccessibilityEvent;
import com.android.inputmethod.accessibility.AccessibilityUtils;
import com.android.inputmethod.accessibility.KeyboardAccessibilityDelegate;
@@ -106,6 +107,12 @@ final class EmojiPageKeyboardView extends KeyboardView implements
}
}
+ @Override
+ public boolean dispatchPopulateAccessibilityEvent(final AccessibilityEvent event) {
+ // Don't populate accessibility event with all Emoji keys.
+ return true;
+ }
+
/**
* {@inheritDoc}
*/