Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fbfd7340 authored by yingleiw's avatar yingleiw
Browse files

Add AccessibilityAction ACTION_SHOW_SUGGESTIONS

And implement it for editable text to show the popup
window for typo correction.

Bug: b/143378480

Test: tested with modified talkback.
Change-Id: I8bb1ec87f6bb2177fb4b8fb9a88bfbe10b374173
parent 32cb668a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -2044,6 +2044,7 @@ package android {
    field public static final int accessibilityActionScrollUp = 16908344; // 0x1020038
    field public static final int accessibilityActionSetProgress = 16908349; // 0x102003d
    field public static final int accessibilityActionShowOnScreen = 16908342; // 0x1020036
    field public static final int accessibilityActionShowSuggestions;
    field public static final int accessibilityActionShowTooltip = 16908356; // 0x1020044
    field public static final int accessibilityActionSwipeDown;
    field public static final int accessibilityActionSwipeLeft;
@@ -51459,6 +51460,7 @@ package android.view.accessibility {
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_SELECTION;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SET_TEXT;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_ON_SCREEN;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_SUGGESTIONS;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SHOW_TOOLTIP;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SWIPE_DOWN;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_SWIPE_LEFT;
+6 −0
Original line number Diff line number Diff line
@@ -5104,6 +5104,12 @@ public class AccessibilityNodeInfo implements Parcelable {
        @NonNull public static final AccessibilityAction ACTION_SWIPE_DOWN =
            new AccessibilityAction(R.id.accessibilityActionSwipeDown);

        /**
         * Action to show suggestions for editable text.
         */
        @NonNull public static final AccessibilityAction ACTION_SHOW_SUGGESTIONS =
                new AccessibilityAction(R.id.accessibilityActionShowSuggestions);

        private final int mActionId;
        private final CharSequence mLabel;

+1 −1
Original line number Diff line number Diff line
@@ -2513,7 +2513,7 @@ public class Editor {
     * the current cursor position or selection range. This method is consistent with the
     * method to show suggestions {@link SuggestionsPopupWindow#updateSuggestions}.
     */
    private boolean shouldOfferToShowSuggestions() {
    boolean shouldOfferToShowSuggestions() {
        CharSequence text = mTextView.getText();
        if (!(text instanceof Spannable)) return false;

+17 −0
Original line number Diff line number Diff line
@@ -12105,6 +12105,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
            if (canCut()) {
                info.addAction(AccessibilityNodeInfo.ACTION_CUT);
            }
            if (canReplace()) {
                info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SHOW_SUGGESTIONS);
            }
            if (canShare()) {
                info.addAction(new AccessibilityNodeInfo.AccessibilityAction(
                        ACCESSIBILITY_ACTION_SHARE,
@@ -12419,6 +12422,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
            }
            return false;
            default: {
                // New ids have static blocks to assign values, so they can't be used in a case
                // block.
                if (action == R.id.accessibilityActionShowSuggestions) {
                    return isFocused() && canReplace() && onTextContextMenuItem(ID_REPLACE);
                }
                return super.performAccessibilityActionInternal(action, arguments);
            }
        }
@@ -13005,6 +13013,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
        return false;
    }
    boolean canReplace() {
        if (hasPasswordTransformationMethod()) {
            return false;
        }
        return (mText.length() > 0) && (mText instanceof Editable) && (mEditor != null)
                && isSuggestionsEnabled() && mEditor.shouldOfferToShowSuggestions();
    }
    boolean canShare() {
        if (!getContext().canStartActivityForResult() || !isDeviceProvisioned()) {
            return false;
+3 −0
Original line number Diff line number Diff line
@@ -275,6 +275,9 @@
  <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_SWIPE_DOWN}. -->
  <item type="id" name="accessibilityActionSwipeDown" />

  <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_SHOW_SUGGESTIONS}. -->
  <item type="id" name="accessibilityActionShowSuggestions" />

  <!-- View tag for remote views to store the index of the next child when adding nested remote views dynamically. -->
  <item type="id" name="remote_views_next_child" />

Loading