Fix key info reported by keyboard accessibility node provider.

Bug: 6704529
Change-Id: I519881a96767a8858c11da7c0abac3e276a45cf5
main
alanv 2012-08-29 13:07:37 -07:00
parent dd7f79097a
commit 26b424b644
4 changed files with 23 additions and 8 deletions

View File

@ -195,8 +195,7 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat
info.setSource(mKeyboardView, virtualViewId); info.setSource(mKeyboardView, virtualViewId);
info.setBoundsInScreen(boundsInScreen); info.setBoundsInScreen(boundsInScreen);
info.setEnabled(true); info.setEnabled(true);
info.setClickable(true); info.setVisibleToUser(true);
info.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
if (mAccessibilityFocusedView == virtualViewId) { if (mAccessibilityFocusedView == virtualViewId) {
info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS);
@ -225,6 +224,9 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat
mKeyboardView.onTouchEvent(downEvent); mKeyboardView.onTouchEvent(downEvent);
mKeyboardView.onTouchEvent(upEvent); mKeyboardView.onTouchEvent(upEvent);
downEvent.recycle();
upEvent.recycle();
} }
@Override @Override
@ -251,9 +253,6 @@ public class AccessibilityEntityProvider extends AccessibilityNodeProviderCompat
final int virtualViewId = generateVirtualViewIdForKey(key); final int virtualViewId = generateVirtualViewIdForKey(key);
switch (action) { switch (action) {
case AccessibilityNodeInfoCompat.ACTION_CLICK:
simulateKeyPress(key);
return true;
case AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS: case AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS:
if (mAccessibilityFocusedView == virtualViewId) { if (mAccessibilityFocusedView == virtualViewId) {
return false; return false;

View File

@ -105,8 +105,21 @@ public class AccessibleKeyboardViewProxy extends AccessibilityDelegateCompat {
} }
/** /**
* Receives hover events when accessibility is turned on in SDK versions ICS * Receives motion events when touch exploration is turned on in SDK
* and higher. * versions ICS and higher.
*
* @param event The motion event.
* @return {@code true} if the event is handled
*/
public boolean onTouchEvent(MotionEvent event) {
// To avoid accidental key presses during touch exploration, always drop
// non-hover touch events.
return false;
}
/**
* Receives hover events when touch exploration is turned on in SDK versions
* ICS and higher.
* *
* @param event The hover event. * @param event The hover event.
* @return {@code true} if the event is handled * @return {@code true} if the event is handled

View File

@ -672,6 +672,9 @@ public class MainKeyboardView extends KeyboardView implements PointerTracker.Key
if (getKeyboard() == null) { if (getKeyboard() == null) {
return false; return false;
} }
if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) {
return AccessibleKeyboardViewProxy.getInstance().onTouchEvent(me);
}
return mTouchScreenRegulator.onTouchEvent(me); return mTouchScreenRegulator.onTouchEvent(me);
} }

View File

@ -667,7 +667,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
// Forward this event to the accessibility utilities, if enabled. // Forward this event to the accessibility utilities, if enabled.
final AccessibilityUtils accessUtils = AccessibilityUtils.getInstance(); final AccessibilityUtils accessUtils = AccessibilityUtils.getInstance();
if (accessUtils.isTouchExplorationEnabled()) { if (accessUtils.isTouchExplorationEnabled()) {
accessUtils.onStartInputViewInternal(inputView, editorInfo, restarting); accessUtils.onStartInputViewInternal(mainKeyboardView, editorInfo, restarting);
} }
if (!restarting) { if (!restarting) {