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

Commit 3e2213e0 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Providing new accessibilityNode action"

parents fa96ad19 b0873998
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1876,6 +1876,7 @@ package android {
    ctor public R.id();
    field public static final int accessibilityActionContextClick = 16908348; // 0x102003c
    field public static final int accessibilityActionHideTooltip = 16908357; // 0x1020045
    field public static final int accessibilityActionImeEnter = 16908372; // 0x1020054
    field public static final int accessibilityActionMoveWindow = 16908354; // 0x1020042
    field public static final int accessibilityActionPageDown = 16908359; // 0x1020047
    field public static final int accessibilityActionPageLeft = 16908360; // 0x1020048
@@ -55620,6 +55621,7 @@ package android.view.accessibility {
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_EXPAND;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_FOCUS;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_HIDE_TOOLTIP;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_IME_ENTER;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_LONG_CLICK;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_MOVE_WINDOW;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
@@ -60796,6 +60798,7 @@ package android.widget {
    method public void setTypeface(@Nullable android.graphics.Typeface, int);
    method public void setTypeface(@Nullable android.graphics.Typeface);
    method public void setWidth(int);
    field public static final int ACCESSIBILITY_ACTION_IME_ENTER = 16908372; // 0x1020054
    field public static final int AUTO_SIZE_TEXT_TYPE_NONE = 0; // 0x0
    field public static final int AUTO_SIZE_TEXT_TYPE_UNIFORM = 1; // 0x1
  }
+22 −1
Original line number Diff line number Diff line
@@ -551,6 +551,14 @@ public class AccessibilityNodeInfo implements Parcelable {
    public static final String ACTION_ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT =
            "android.view.accessibility.action.ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT";

    /**
     * Argument to represent the IME action Id to press the returning key on a node.
     * For use with R.id.accessibilityActionImeEnter
     * @hide
     */
    public static final String ACTION_ARGUMENT_IME_ACTION_ID_INT =
            "android.view.accessibility.action.ARGUMENT_IME_ACTION_ID_INT";

    // Focus types

    /**
@@ -1644,8 +1652,12 @@ public class AccessibilityNodeInfo implements Parcelable {
            return false;
        }
        AccessibilityInteractionClient client = AccessibilityInteractionClient.getInstance();
        Bundle arguments = null;
        if (mExtras != null) {
            arguments = mExtras;
        }
        return client.performAccessibilityAction(mConnectionId, mWindowId, mSourceNodeId,
                action, null);
                action, arguments);
    }

    /**
@@ -4210,6 +4222,8 @@ public class AccessibilityNodeInfo implements Parcelable {
                return "ACTION_HIDE_TOOLTIP";
            case R.id.accessibilityActionPressAndHold:
                return "ACTION_PRESS_AND_HOLD";
            case R.id.accessibilityActionImeEnter:
                return "ACTION_IME_ENTER";
            default:
                return "ACTION_UNKNOWN";
        }
@@ -4839,6 +4853,13 @@ public class AccessibilityNodeInfo implements Parcelable {
        @NonNull public static final AccessibilityAction ACTION_PRESS_AND_HOLD =
                new AccessibilityAction(R.id.accessibilityActionPressAndHold);

        /**
         * Action to send ime action. A node should expose this action only for views that are
         * currently with input focus and editable.
         */
        @NonNull public static final AccessibilityAction ACTION_IME_ENTER =
                new AccessibilityAction(R.id.accessibilityActionImeEnter);

        private final int mActionId;
        private final CharSequence mLabel;

+31 −0
Original line number Diff line number Diff line
@@ -422,6 +422,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
     */
    static final int PROCESS_TEXT_REQUEST_CODE = 100;
    // Accessibility action to send IME custom action for CTS testing.
    public static final int ACCESSIBILITY_ACTION_IME_ENTER = R.id.accessibilityActionImeEnter;
    /**
     *  Return code of {@link #doKeyDown}.
     */
@@ -11741,6 +11744,23 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                info.setContentInvalid(true);
                info.setError(mEditor.mError);
            }
            // TextView will expose this action if it is editable and has focus.
            if (isTextEditable() && isFocused()) {
                CharSequence imeActionLabel = mContext.getResources().getString(
                        com.android.internal.R.string.keyboardview_keycode_enter);
                if (getImeActionId() != 0 && getImeActionLabel() != null) {
                    imeActionLabel = getImeActionLabel();
                    final int imeActionId = getImeActionId();
                    // put ime action id into the extra data with ACTION_ARGUMENT_IME_ACTION_ID_INT.
                    final Bundle argument = info.getExtras();
                    argument.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_IME_ACTION_ID_INT,
                            imeActionId);
                }
                AccessibilityNodeInfo.AccessibilityAction action =
                        new AccessibilityNodeInfo.AccessibilityAction(
                                ACCESSIBILITY_ACTION_IME_ENTER, imeActionLabel);
                info.addAction(action);
            }
        }
        if (!TextUtils.isEmpty(mText)) {
@@ -12052,6 +12072,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
                    }
                }
            } return true;
            case ACCESSIBILITY_ACTION_IME_ENTER: {
                if (isFocused() && isTextEditable()) {
                    final int imeActionId = (arguments != null) ? arguments.getInt(
                            AccessibilityNodeInfo.ACTION_ARGUMENT_IME_ACTION_ID_INT,
                            EditorInfo.IME_ACTION_UNSPECIFIED)
                            : EditorInfo.IME_ACTION_UNSPECIFIED;
                    if (imeActionId == getImeActionId()) {
                        onEditorAction(imeActionId);
                    }
                }
            } return true;
            default: {
                return super.performAccessibilityActionInternal(action, arguments);
            }
+3 −0
Original line number Diff line number Diff line
@@ -226,4 +226,7 @@

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

  <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_IME_ENTER}. -->
  <item type="id" name="accessibilityActionImeEnter" />
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -3066,6 +3066,7 @@
      <public name="accessibilitySystemActionToggleSplitScreen" />
      <public name="accessibilitySystemActionLockScreen" />
      <public name="accessibilitySystemActionTakeScreenshot" />
      <public name="accessibilityActionImeEnter" />
    </public-group>

    <public-group type="array" first-id="0x01070006">