Merge "Implement text entry key API for accessibility services in AOSP Keyboard"

main
Ryan Lin 2019-12-04 08:41:04 +00:00 committed by Gerrit Code Review
commit c3eafcb756
3 changed files with 4 additions and 16 deletions

View File

@ -243,7 +243,6 @@ public class KeyboardAccessibilityDelegate<KV extends KeyboardView>
// Make sure we're not getting an EXIT event because the user slid // Make sure we're not getting an EXIT event because the user slid
// off the keyboard area, then force a key press. // off the keyboard area, then force a key press.
if (key != null) { if (key != null) {
performClickOn(key);
onHoverExitFrom(key); onHoverExitFrom(key);
} }
setLastHoverKey(null); setLastHoverKey(null);

View File

@ -236,6 +236,7 @@ final class KeyboardAccessibilityNodeProvider<KV extends KeyboardView>
// Obtain and initialize an AccessibilityNodeInfo with information about the virtual view. // Obtain and initialize an AccessibilityNodeInfo with information about the virtual view.
final AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain(); final AccessibilityNodeInfoCompat info = AccessibilityNodeInfoCompat.obtain();
info.setPackageName(mKeyboardView.getContext().getPackageName()); info.setPackageName(mKeyboardView.getContext().getPackageName());
info.setTextEntryKey(true);
info.setClassName(key.getClass().getName()); info.setClassName(key.getClass().getName());
info.setContentDescription(keyDescription); info.setContentDescription(keyDescription);
info.setBoundsInParent(boundsInParent); info.setBoundsInParent(boundsInParent);
@ -244,14 +245,10 @@ final class KeyboardAccessibilityNodeProvider<KV extends KeyboardView>
info.setSource(mKeyboardView, virtualViewId); info.setSource(mKeyboardView, virtualViewId);
info.setEnabled(key.isEnabled()); info.setEnabled(key.isEnabled());
info.setVisibleToUser(true); 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); info.addAction(AccessibilityNodeInfoCompat.ACTION_CLICK);
if (key.isLongPressEnabled()) { if (key.isLongPressEnabled()) {
info.addAction(AccessibilityNodeInfoCompat.ACTION_LONG_CLICK); info.addAction(AccessibilityNodeInfoCompat.ACTION_LONG_CLICK);
} }
}
if (mAccessibilityFocusedView == virtualViewId) { if (mAccessibilityFocusedView == virtualViewId) {
info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS); info.addAction(AccessibilityNodeInfoCompat.ACTION_CLEAR_ACCESSIBILITY_FOCUS);

View File

@ -62,13 +62,10 @@ public final class MainKeyboardAccessibilityDelegate
// The rectangle region to ignore hover events. // The rectangle region to ignore hover events.
private final Rect mBoundsToIgnoreHoverEvent = new Rect(); private final Rect mBoundsToIgnoreHoverEvent = new Rect();
private final AccessibilityLongPressTimer mAccessibilityLongPressTimer;
public MainKeyboardAccessibilityDelegate(final MainKeyboardView mainKeyboardView, public MainKeyboardAccessibilityDelegate(final MainKeyboardView mainKeyboardView,
final KeyDetector keyDetector) { final KeyDetector keyDetector) {
super(mainKeyboardView, keyDetector); super(mainKeyboardView, keyDetector);
mAccessibilityLongPressTimer = new AccessibilityLongPressTimer(
this /* callback */, mainKeyboardView.getContext());
} }
/** /**
@ -233,7 +230,6 @@ public final class MainKeyboardAccessibilityDelegate
Log.d(TAG, "onHoverEnterTo: key=" + key Log.d(TAG, "onHoverEnterTo: key=" + key
+ " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y)); + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
} }
mAccessibilityLongPressTimer.cancelLongPress();
if (mBoundsToIgnoreHoverEvent.contains(x, y)) { if (mBoundsToIgnoreHoverEvent.contains(x, y)) {
return; return;
} }
@ -241,9 +237,6 @@ public final class MainKeyboardAccessibilityDelegate
// Further hover events should be handled. // Further hover events should be handled.
mBoundsToIgnoreHoverEvent.setEmpty(); mBoundsToIgnoreHoverEvent.setEmpty();
super.onHoverEnterTo(key); super.onHoverEnterTo(key);
if (key.isLongPressEnabled()) {
mAccessibilityLongPressTimer.startLongPress(key);
}
} }
@Override @Override
@ -254,7 +247,6 @@ public final class MainKeyboardAccessibilityDelegate
Log.d(TAG, "onHoverExitFrom: key=" + key Log.d(TAG, "onHoverExitFrom: key=" + key
+ " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y)); + " inIgnoreBounds=" + mBoundsToIgnoreHoverEvent.contains(x, y));
} }
mAccessibilityLongPressTimer.cancelLongPress();
super.onHoverExitFrom(key); super.onHoverExitFrom(key);
} }