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

Commit 0e08f813 authored by Sally Yuen's avatar Sally Yuen Committed by Android (Google) Code Review
Browse files

Merge "Add AccessibilityAction and AccessibilityEvent API for drag & drop" into sc-v2-dev

parents 03adaa22 a8e74160
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -2012,6 +2012,9 @@ package android {
  public static final class R.id {
    ctor public R.id();
    field public static final int accessibilityActionContextClick = 16908348; // 0x102003c
    field public static final int accessibilityActionDragCancel;
    field public static final int accessibilityActionDragDrop;
    field public static final int accessibilityActionDragStart;
    field public static final int accessibilityActionHideTooltip = 16908357; // 0x1020045
    field public static final int accessibilityActionImeEnter = 16908372; // 0x1020054
    field public static final int accessibilityActionMoveWindow = 16908354; // 0x1020042
@@ -50655,6 +50658,9 @@ package android.view.accessibility {
    method public void setPackageName(CharSequence);
    method public void writeToParcel(android.os.Parcel, int);
    field public static final int CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION = 4; // 0x4
    field public static final int CONTENT_CHANGE_TYPE_DRAG_CANCELLED = 512; // 0x200
    field public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 256; // 0x100
    field public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 128; // 0x80
    field public static final int CONTENT_CHANGE_TYPE_PANE_APPEARED = 16; // 0x10
    field public static final int CONTENT_CHANGE_TYPE_PANE_DISAPPEARED = 32; // 0x20
    field public static final int CONTENT_CHANGE_TYPE_PANE_TITLE = 8; // 0x8
@@ -50953,6 +50959,9 @@ package android.view.accessibility {
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_COPY;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_CUT;
    field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DISMISS;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DRAG_CANCEL;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DRAG_DROP;
    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_DRAG_START;
    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;
+30 −0
Original line number Diff line number Diff line
@@ -612,6 +612,36 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
     */
    public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 0x00000040;

    /**
     * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
     * A drag has started while accessibility is enabled. This is either via an
     * AccessibilityAction, or via touch events. This is sent from the source that initiated the
     * drag.
     *
     * @see AccessibilityNodeInfo.AccessibilityAction#ACTION_DRAG_START
     */
    public static final int CONTENT_CHANGE_TYPE_DRAG_STARTED = 0x00000080;

    /**
     * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
     * A drag in with accessibility enabled has ended. This means the content has been
     * successfully dropped. This is sent from the target that accepted the dragged content.
     *
     * @see AccessibilityNodeInfo.AccessibilityAction#ACTION_DRAG_DROP
     */
    public static final int CONTENT_CHANGE_TYPE_DRAG_DROPPED = 0x00000100;

    /**
     * Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
     * A drag in with accessibility enabled has ended. This means the content has been
     * unsuccessfully dropped, the user has canceled the action via an AccessibilityAction, or
     * no drop has been detected within a timeout and the drag was automatically cancelled. This is
     * sent from the source that initiated the drag.
     *
     * @see AccessibilityNodeInfo.AccessibilityAction#ACTION_DRAG_CANCEL
     */
    public static final int CONTENT_CHANGE_TYPE_DRAG_CANCELLED = 0x0000200;

    /**
     * Change type for {@link #TYPE_WINDOWS_CHANGED} event:
     * The window was added.
+49 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.TestApi;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.ClipData;
import android.graphics.Rect;
import android.graphics.Region;
import android.os.Build;
@@ -4353,6 +4354,14 @@ public class AccessibilityNodeInfo implements Parcelable {
            case R.id.accessibilityActionImeEnter:
                return "ACTION_IME_ENTER";
            default:
                // TODO(197520937): Use finalized constants in switch
                if (action == R.id.accessibilityActionDragStart) {
                    return "ACTION_DRAG";
                } else if (action == R.id.accessibilityActionDragCancel) {
                    return "ACTION_CANCEL_DRAG";
                } else if (action == R.id.accessibilityActionDragDrop) {
                    return "ACTION_DROP";
                }
                return "ACTION_UNKNOWN";
        }
    }
@@ -4995,6 +5004,46 @@ public class AccessibilityNodeInfo implements Parcelable {
        @NonNull public static final AccessibilityAction ACTION_IME_ENTER =
                new AccessibilityAction(R.id.accessibilityActionImeEnter);

        /**
         * Action to start a drag.
         * <p>
         * This action initiates a drag & drop within the system. The source's dragged content is
         * prepared before the drag begins. In View, this action should prepare the arguments to
         * {@link View#startDragAndDrop(ClipData, View.DragShadowBuilder, Object, int)} and then
         * call {@link View#startDragAndDrop(ClipData, View.DragShadowBuilder, Object, int)}. The
         * equivalent should be performed for other UI toolkits.
         * </p>
         *
         * @see AccessibilityEvent#CONTENT_CHANGE_TYPE_DRAG_STARTED
         */
        @NonNull public static final AccessibilityAction ACTION_DRAG_START =
                new AccessibilityAction(R.id.accessibilityActionDragStart);

        /**
         * Action to trigger a drop of the content being dragged.
         * <p>
         * This action is added to potential drop targets if the source started a drag with
         * {@link #ACTION_DRAG_START}. In View, these targets are Views that accepted
         * {@link android.view.DragEvent#ACTION_DRAG_STARTED} and have an
         * {@link View.OnDragListener}.
         * </p>
         *
         * @see AccessibilityEvent#CONTENT_CHANGE_TYPE_DRAG_DROPPED
         */
        @NonNull public static final AccessibilityAction ACTION_DRAG_DROP =
                new AccessibilityAction(R.id.accessibilityActionDragDrop);

        /**
         * Action to cancel a drag.
         * <p>
         * This action is added to the source that started a drag with {@link #ACTION_DRAG_START}.
         * </p>
         *
         * @see AccessibilityEvent#CONTENT_CHANGE_TYPE_DRAG_CANCELLED
         */
        @NonNull public static final AccessibilityAction ACTION_DRAG_CANCEL =
                new AccessibilityAction(R.id.accessibilityActionDragCancel);

        private final int mActionId;
        private final CharSequence mLabel;

+9 −0
Original line number Diff line number Diff line
@@ -254,6 +254,15 @@
  <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_IME_ENTER}. -->
  <item type="id" name="accessibilityActionImeEnter" />

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

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

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

  <!-- 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" />

+3 −0
Original line number Diff line number Diff line
@@ -3224,6 +3224,9 @@
  </staging-public-group>

  <staging-public-group type="id" first-id="0x01fe0000">
    <public name="accessibilityActionDragStart" />
    <public name="accessibilityActionDragDrop" />
    <public name="accessibilityActionDragCancel" />
  </staging-public-group>

  <staging-public-group type="style" first-id="0x01fd0000">