Loading java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java→java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java +28 −26 Original line number Diff line number Diff line Loading @@ -32,11 +32,11 @@ import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.MainKeyboardView; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelegateCompat { public class KeyboardAccessibilityDelegate extends AccessibilityDelegateCompat { /** Map of keyboard modes to resource IDs. */ private static final SparseIntArray KEYBOARD_MODE_RES_IDS = new SparseIntArray(); Loading @@ -52,9 +52,10 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_URL, R.string.keyboard_mode_url); } private final MainKeyboardView mView; private final KeyboardView mKeyboardView; private final KeyDetector mKeyDetector; private Keyboard mKeyboard; private MainKeyboardAccessibilityNodeProvider mAccessibilityNodeProvider; private KeyboardAccessibilityNodeProvider mAccessibilityNodeProvider; private Key mLastHoverKey = null; Loading @@ -67,14 +68,17 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega private int mLastKeyboardMode = KEYBOARD_IS_HIDDEN; private static final int KEYBOARD_IS_HIDDEN = -1; public MainKeyboardAccessibilityDelegate(final MainKeyboardView view) { final Context context = view.getContext(); public KeyboardAccessibilityDelegate(final KeyboardView keyboardView, final KeyDetector keyDetector) { super(); final Context context = keyboardView.getContext(); mEdgeSlop = context.getResources().getDimensionPixelSize( R.dimen.config_accessibility_edge_slop); mView = view; mKeyboardView = keyboardView; mKeyDetector = keyDetector; // Ensure that the view has an accessibility delegate. ViewCompat.setAccessibilityDelegate(view, this); ViewCompat.setAccessibilityDelegate(keyboardView, this); } /** Loading Loading @@ -144,7 +148,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * @param keyboard The new keyboard. */ private void announceKeyboardMode(final Keyboard keyboard) { final Context context = mView.getContext(); final Context context = mKeyboardView.getContext(); final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(keyboard.mId.mMode); if (modeTextResId == 0) { return; Loading Loading @@ -194,7 +198,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega default: return; } final String text = mView.getContext().getString(resId); final String text = mKeyboardView.getContext().getString(resId); sendWindowStateChanged(text); } Loading @@ -202,7 +206,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * Announces that the keyboard has been hidden. */ private void announceKeyboardHidden() { final Context context = mView.getContext(); final Context context = mKeyboardView.getContext(); final String text = context.getString(R.string.announce_keyboard_hidden); sendWindowStateChanged(text); Loading @@ -216,13 +220,13 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega private void sendWindowStateChanged(final String text) { final AccessibilityEvent stateChange = AccessibilityEvent.obtain( AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); mView.onInitializeAccessibilityEvent(stateChange); mKeyboardView.onInitializeAccessibilityEvent(stateChange); stateChange.getText().add(text); stateChange.setContentDescription(null); final ViewParent parent = mView.getParent(); final ViewParent parent = mKeyboardView.getParent(); if (parent != null) { parent.requestSendAccessibilityEvent(mView, stateChange); parent.requestSendAccessibilityEvent(mKeyboardView, stateChange); } } Loading @@ -235,7 +239,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * @return The accessibility node provider for the current keyboard. */ @Override public MainKeyboardAccessibilityNodeProvider getAccessibilityNodeProvider(final View host) { public KeyboardAccessibilityNodeProvider getAccessibilityNodeProvider(final View host) { return getAccessibilityNodeProvider(); } Loading @@ -243,18 +247,16 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * Receives hover events when touch exploration is turned on in SDK versions ICS and higher. * * @param event The hover event. * @param keyDetector The {@link KeyDetector} to determine on which key the <code>event</code> * is hovering. * @return {@code true} if the event is handled */ public boolean dispatchHoverEvent(final MotionEvent event, final KeyDetector keyDetector) { public boolean dispatchHoverEvent(final MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); final Key previousKey = mLastHoverKey; final Key key; if (pointInView(x, y)) { key = keyDetector.detectHitKey(x, y); key = mKeyDetector.detectHitKey(x, y); } else { key = null; } Loading Loading @@ -283,12 +285,12 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega /** * @return A lazily-instantiated node provider for this view delegate. */ private MainKeyboardAccessibilityNodeProvider getAccessibilityNodeProvider() { private KeyboardAccessibilityNodeProvider getAccessibilityNodeProvider() { // Instantiate the provide only when requested. Since the system // will call this method multiple times it is a good practice to // cache the provider instance. if (mAccessibilityNodeProvider == null) { mAccessibilityNodeProvider = new MainKeyboardAccessibilityNodeProvider(mView); mAccessibilityNodeProvider = new KeyboardAccessibilityNodeProvider(mKeyboardView); } return mAccessibilityNodeProvider; } Loading @@ -302,8 +304,8 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega */ private boolean pointInView(final int localX, final int localY) { return (localX >= mEdgeSlop) && (localY >= mEdgeSlop) && (localX < (mView.getWidth() - mEdgeSlop)) && (localY < (mView.getHeight() - mEdgeSlop)); && (localX < (mKeyboardView.getWidth() - mEdgeSlop)) && (localY < (mKeyboardView.getHeight() - mEdgeSlop)); } /** Loading @@ -318,7 +320,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega final long downTime = SystemClock.uptimeMillis(); final MotionEvent downEvent = MotionEvent.obtain( downTime, downTime, MotionEvent.ACTION_DOWN, x, y, 0); mView.onTouchEvent(downEvent); mKeyboardView.onTouchEvent(downEvent); downEvent.recycle(); return downTime; } Loading @@ -334,7 +336,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega final int y = key.getHitBox().centerY(); final MotionEvent upEvent = MotionEvent.obtain( downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0); mView.onTouchEvent(upEvent); mKeyboardView.onTouchEvent(upEvent); upEvent.recycle(); } Loading Loading @@ -373,7 +375,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega if (key == null) { return false; } final MainKeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider(); final KeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider(); switch (event.getAction()) { case MotionEvent.ACTION_HOVER_ENTER: Loading java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityNodeProvider.java→java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java +4 −3 Original line number Diff line number Diff line Loading @@ -47,8 +47,8 @@ import java.util.List; * virtual views, thus conveying their logical structure. * </p> */ public final class MainKeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat { private static final String TAG = MainKeyboardAccessibilityNodeProvider.class.getSimpleName(); public final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat { private static final String TAG = KeyboardAccessibilityNodeProvider.class.getSimpleName(); private static final int UNDEFINED = Integer.MIN_VALUE; private final KeyCodeDescriptionMapper mKeyCodeDescriptionMapper; Loading @@ -69,7 +69,8 @@ public final class MainKeyboardAccessibilityNodeProvider extends AccessibilityNo /** The current keyboard. */ private Keyboard mKeyboard; public MainKeyboardAccessibilityNodeProvider(final KeyboardView keyboardView) { public KeyboardAccessibilityNodeProvider(final KeyboardView keyboardView) { super(); mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance(); mAccessibilityUtils = AccessibilityUtils.getInstance(); mKeyboardView = keyboardView; Loading java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +7 −8 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ import android.view.inputmethod.InputMethodSubtype; import android.widget.TextView; import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate; import com.android.inputmethod.accessibility.KeyboardAccessibilityDelegate; import com.android.inputmethod.annotations.ExternallyReferenced; import com.android.inputmethod.keyboard.internal.DrawingHandler; import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView; Loading Loading @@ -170,7 +170,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack private final DrawingHandler mDrawingHandler = new DrawingHandler(this); private final MainKeyboardAccessibilityDelegate mAccessibilityDelegate; private final KeyboardAccessibilityDelegate mAccessibilityDelegate; public MainKeyboardView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.mainKeyboardViewStyle); Loading Loading @@ -269,7 +269,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack mLanguageOnSpacebarHorizontalMargin = (int)getResources().getDimension( R.dimen.config_language_on_spacebar_horizontal_margin); mAccessibilityDelegate = new MainKeyboardAccessibilityDelegate(this); mAccessibilityDelegate = new KeyboardAccessibilityDelegate(this, mKeyDetector); } @Override Loading Loading @@ -773,13 +773,12 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack */ @Override public boolean dispatchHoverEvent(final MotionEvent event) { if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { return mAccessibilityDelegate.dispatchHoverEvent(event, mKeyDetector); } if (!AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { // Reflection doesn't support calling superclass methods. return false; } return mAccessibilityDelegate.dispatchHoverEvent(event); } public void updateShortcutKey(final boolean available) { final Keyboard keyboard = getKeyboard(); Loading Loading
java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityDelegate.java→java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityDelegate.java +28 −26 Original line number Diff line number Diff line Loading @@ -32,11 +32,11 @@ import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.KeyDetector; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardId; import com.android.inputmethod.keyboard.MainKeyboardView; import com.android.inputmethod.keyboard.KeyboardView; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.utils.SubtypeLocaleUtils; public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelegateCompat { public class KeyboardAccessibilityDelegate extends AccessibilityDelegateCompat { /** Map of keyboard modes to resource IDs. */ private static final SparseIntArray KEYBOARD_MODE_RES_IDS = new SparseIntArray(); Loading @@ -52,9 +52,10 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega KEYBOARD_MODE_RES_IDS.put(KeyboardId.MODE_URL, R.string.keyboard_mode_url); } private final MainKeyboardView mView; private final KeyboardView mKeyboardView; private final KeyDetector mKeyDetector; private Keyboard mKeyboard; private MainKeyboardAccessibilityNodeProvider mAccessibilityNodeProvider; private KeyboardAccessibilityNodeProvider mAccessibilityNodeProvider; private Key mLastHoverKey = null; Loading @@ -67,14 +68,17 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega private int mLastKeyboardMode = KEYBOARD_IS_HIDDEN; private static final int KEYBOARD_IS_HIDDEN = -1; public MainKeyboardAccessibilityDelegate(final MainKeyboardView view) { final Context context = view.getContext(); public KeyboardAccessibilityDelegate(final KeyboardView keyboardView, final KeyDetector keyDetector) { super(); final Context context = keyboardView.getContext(); mEdgeSlop = context.getResources().getDimensionPixelSize( R.dimen.config_accessibility_edge_slop); mView = view; mKeyboardView = keyboardView; mKeyDetector = keyDetector; // Ensure that the view has an accessibility delegate. ViewCompat.setAccessibilityDelegate(view, this); ViewCompat.setAccessibilityDelegate(keyboardView, this); } /** Loading Loading @@ -144,7 +148,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * @param keyboard The new keyboard. */ private void announceKeyboardMode(final Keyboard keyboard) { final Context context = mView.getContext(); final Context context = mKeyboardView.getContext(); final int modeTextResId = KEYBOARD_MODE_RES_IDS.get(keyboard.mId.mMode); if (modeTextResId == 0) { return; Loading Loading @@ -194,7 +198,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega default: return; } final String text = mView.getContext().getString(resId); final String text = mKeyboardView.getContext().getString(resId); sendWindowStateChanged(text); } Loading @@ -202,7 +206,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * Announces that the keyboard has been hidden. */ private void announceKeyboardHidden() { final Context context = mView.getContext(); final Context context = mKeyboardView.getContext(); final String text = context.getString(R.string.announce_keyboard_hidden); sendWindowStateChanged(text); Loading @@ -216,13 +220,13 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega private void sendWindowStateChanged(final String text) { final AccessibilityEvent stateChange = AccessibilityEvent.obtain( AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); mView.onInitializeAccessibilityEvent(stateChange); mKeyboardView.onInitializeAccessibilityEvent(stateChange); stateChange.getText().add(text); stateChange.setContentDescription(null); final ViewParent parent = mView.getParent(); final ViewParent parent = mKeyboardView.getParent(); if (parent != null) { parent.requestSendAccessibilityEvent(mView, stateChange); parent.requestSendAccessibilityEvent(mKeyboardView, stateChange); } } Loading @@ -235,7 +239,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * @return The accessibility node provider for the current keyboard. */ @Override public MainKeyboardAccessibilityNodeProvider getAccessibilityNodeProvider(final View host) { public KeyboardAccessibilityNodeProvider getAccessibilityNodeProvider(final View host) { return getAccessibilityNodeProvider(); } Loading @@ -243,18 +247,16 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega * Receives hover events when touch exploration is turned on in SDK versions ICS and higher. * * @param event The hover event. * @param keyDetector The {@link KeyDetector} to determine on which key the <code>event</code> * is hovering. * @return {@code true} if the event is handled */ public boolean dispatchHoverEvent(final MotionEvent event, final KeyDetector keyDetector) { public boolean dispatchHoverEvent(final MotionEvent event) { final int x = (int) event.getX(); final int y = (int) event.getY(); final Key previousKey = mLastHoverKey; final Key key; if (pointInView(x, y)) { key = keyDetector.detectHitKey(x, y); key = mKeyDetector.detectHitKey(x, y); } else { key = null; } Loading Loading @@ -283,12 +285,12 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega /** * @return A lazily-instantiated node provider for this view delegate. */ private MainKeyboardAccessibilityNodeProvider getAccessibilityNodeProvider() { private KeyboardAccessibilityNodeProvider getAccessibilityNodeProvider() { // Instantiate the provide only when requested. Since the system // will call this method multiple times it is a good practice to // cache the provider instance. if (mAccessibilityNodeProvider == null) { mAccessibilityNodeProvider = new MainKeyboardAccessibilityNodeProvider(mView); mAccessibilityNodeProvider = new KeyboardAccessibilityNodeProvider(mKeyboardView); } return mAccessibilityNodeProvider; } Loading @@ -302,8 +304,8 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega */ private boolean pointInView(final int localX, final int localY) { return (localX >= mEdgeSlop) && (localY >= mEdgeSlop) && (localX < (mView.getWidth() - mEdgeSlop)) && (localY < (mView.getHeight() - mEdgeSlop)); && (localX < (mKeyboardView.getWidth() - mEdgeSlop)) && (localY < (mKeyboardView.getHeight() - mEdgeSlop)); } /** Loading @@ -318,7 +320,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega final long downTime = SystemClock.uptimeMillis(); final MotionEvent downEvent = MotionEvent.obtain( downTime, downTime, MotionEvent.ACTION_DOWN, x, y, 0); mView.onTouchEvent(downEvent); mKeyboardView.onTouchEvent(downEvent); downEvent.recycle(); return downTime; } Loading @@ -334,7 +336,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega final int y = key.getHitBox().centerY(); final MotionEvent upEvent = MotionEvent.obtain( downTime, SystemClock.uptimeMillis(), MotionEvent.ACTION_UP, x, y, 0); mView.onTouchEvent(upEvent); mKeyboardView.onTouchEvent(upEvent); upEvent.recycle(); } Loading Loading @@ -373,7 +375,7 @@ public final class MainKeyboardAccessibilityDelegate extends AccessibilityDelega if (key == null) { return false; } final MainKeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider(); final KeyboardAccessibilityNodeProvider provider = getAccessibilityNodeProvider(); switch (event.getAction()) { case MotionEvent.ACTION_HOVER_ENTER: Loading
java/src/com/android/inputmethod/accessibility/MainKeyboardAccessibilityNodeProvider.java→java/src/com/android/inputmethod/accessibility/KeyboardAccessibilityNodeProvider.java +4 −3 Original line number Diff line number Diff line Loading @@ -47,8 +47,8 @@ import java.util.List; * virtual views, thus conveying their logical structure. * </p> */ public final class MainKeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat { private static final String TAG = MainKeyboardAccessibilityNodeProvider.class.getSimpleName(); public final class KeyboardAccessibilityNodeProvider extends AccessibilityNodeProviderCompat { private static final String TAG = KeyboardAccessibilityNodeProvider.class.getSimpleName(); private static final int UNDEFINED = Integer.MIN_VALUE; private final KeyCodeDescriptionMapper mKeyCodeDescriptionMapper; Loading @@ -69,7 +69,8 @@ public final class MainKeyboardAccessibilityNodeProvider extends AccessibilityNo /** The current keyboard. */ private Keyboard mKeyboard; public MainKeyboardAccessibilityNodeProvider(final KeyboardView keyboardView) { public KeyboardAccessibilityNodeProvider(final KeyboardView keyboardView) { super(); mKeyCodeDescriptionMapper = KeyCodeDescriptionMapper.getInstance(); mAccessibilityUtils = AccessibilityUtils.getInstance(); mKeyboardView = keyboardView; Loading
java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +7 −8 Original line number Diff line number Diff line Loading @@ -38,7 +38,7 @@ import android.view.inputmethod.InputMethodSubtype; import android.widget.TextView; import com.android.inputmethod.accessibility.AccessibilityUtils; import com.android.inputmethod.accessibility.MainKeyboardAccessibilityDelegate; import com.android.inputmethod.accessibility.KeyboardAccessibilityDelegate; import com.android.inputmethod.annotations.ExternallyReferenced; import com.android.inputmethod.keyboard.internal.DrawingHandler; import com.android.inputmethod.keyboard.internal.DrawingPreviewPlacerView; Loading Loading @@ -170,7 +170,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack private final DrawingHandler mDrawingHandler = new DrawingHandler(this); private final MainKeyboardAccessibilityDelegate mAccessibilityDelegate; private final KeyboardAccessibilityDelegate mAccessibilityDelegate; public MainKeyboardView(final Context context, final AttributeSet attrs) { this(context, attrs, R.attr.mainKeyboardViewStyle); Loading Loading @@ -269,7 +269,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack mLanguageOnSpacebarHorizontalMargin = (int)getResources().getDimension( R.dimen.config_language_on_spacebar_horizontal_margin); mAccessibilityDelegate = new MainKeyboardAccessibilityDelegate(this); mAccessibilityDelegate = new KeyboardAccessibilityDelegate(this, mKeyDetector); } @Override Loading Loading @@ -773,13 +773,12 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack */ @Override public boolean dispatchHoverEvent(final MotionEvent event) { if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { return mAccessibilityDelegate.dispatchHoverEvent(event, mKeyDetector); } if (!AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { // Reflection doesn't support calling superclass methods. return false; } return mAccessibilityDelegate.dispatchHoverEvent(event); } public void updateShortcutKey(final boolean available) { final Keyboard keyboard = getKeyboard(); Loading