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

Commit 75dce7c3 authored by Phil Weaver's avatar Phil Weaver
Browse files

Make accessibility anchor id a long

The anchors are, in practice, always Views, but they may end up
being virtual views in the future, so we should have this done
right.

Also cleaning up picture in picture mode. I don't know why I made
it a separate boolean when I already had the boolean properties.

Bug: 70730136
Test: A11y unit tests and CTS
Change-Id: I916ec066dff12fab8b586371452b728af6be1271
parent e1080cfc
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -506,14 +506,6 @@ package android.view {

}

package android.view.accessibility {

  public final class AccessibilityWindowInfo implements android.os.Parcelable {
    method public boolean inPictureInPicture();
  }

}

package android.webkit {

  public class WebViewClient {
+1 −1
Original line number Diff line number Diff line
@@ -2325,7 +2325,7 @@ public class AccessibilityNodeInfo implements Parcelable {
    /**
     * Returns whether the node is explicitly marked as a focusable unit by a screen reader. Note
     * that {@code false} indicates that it is not explicitly marked, not that the node is not
     * a focusable unit. Screen readers should generally used other signals, such as
     * a focusable unit. Screen readers should generally use other signals, such as
     * {@link #isFocusable()}, or the presence of text in a node, to determine what should receive
     * focus.
     *
+13 −25
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
    private static final int BOOLEAN_PROPERTY_ACTIVE = 1 << 0;
    private static final int BOOLEAN_PROPERTY_FOCUSED = 1 << 1;
    private static final int BOOLEAN_PROPERTY_ACCESSIBILITY_FOCUSED = 1 << 2;
    private static final int BOOLEAN_PROPERTY_PICTURE_IN_PICTURE = 1 << 3;

    // Housekeeping.
    private static final int MAX_POOL_SIZE = 10;
@@ -103,8 +104,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
    private final Rect mBoundsInScreen = new Rect();
    private LongArray mChildIds;
    private CharSequence mTitle;
    private int mAnchorId = UNDEFINED_WINDOW_ID;
    private boolean mInPictureInPicture;
    private long mAnchorId = AccessibilityNodeInfo.UNDEFINED_NODE_ID;

    private int mConnectionId = UNDEFINED_WINDOW_ID;

@@ -202,7 +202,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
     *
     * @hide
     */
    public void setAnchorId(int anchorId) {
    public void setAnchorId(long anchorId) {
        mAnchorId = anchorId;
    }

@@ -212,7 +212,8 @@ public final class AccessibilityWindowInfo implements Parcelable {
     * @return The anchor node, or {@code null} if none exists.
     */
    public AccessibilityNodeInfo getAnchor() {
        if ((mConnectionId == UNDEFINED_WINDOW_ID) || (mAnchorId == UNDEFINED_WINDOW_ID)
        if ((mConnectionId == UNDEFINED_WINDOW_ID)
                || (mAnchorId == AccessibilityNodeInfo.UNDEFINED_NODE_ID)
                || (mParentId == UNDEFINED_WINDOW_ID)) {
            return null;
        }
@@ -224,17 +225,7 @@ public final class AccessibilityWindowInfo implements Parcelable {

    /** @hide */
    public void setPictureInPicture(boolean pictureInPicture) {
        mInPictureInPicture = pictureInPicture;
    }

    /**
     * Check if the window is in picture-in-picture mode.
     *
     * @return {@code true} if the window is in picture-in-picture mode, {@code false} otherwise.
     * @removed
     */
    public boolean inPictureInPicture() {
        return isInPictureInPictureMode();
        setBooleanProperty(BOOLEAN_PROPERTY_PICTURE_IN_PICTURE, pictureInPicture);
    }

    /**
@@ -243,7 +234,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
     * @return {@code true} if the window is in picture-in-picture mode, {@code false} otherwise.
     */
    public boolean isInPictureInPictureMode() {
        return mInPictureInPicture;
        return getBooleanProperty(BOOLEAN_PROPERTY_PICTURE_IN_PICTURE);
    }

    /**
@@ -463,7 +454,6 @@ public final class AccessibilityWindowInfo implements Parcelable {
        infoClone.mBoundsInScreen.set(info.mBoundsInScreen);
        infoClone.mTitle = info.mTitle;
        infoClone.mAnchorId = info.mAnchorId;
        infoClone.mInPictureInPicture = info.mInPictureInPicture;

        if (info.mChildIds != null && info.mChildIds.size() > 0) {
            if (infoClone.mChildIds == null) {
@@ -520,8 +510,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
        parcel.writeInt(mParentId);
        mBoundsInScreen.writeToParcel(parcel, flags);
        parcel.writeCharSequence(mTitle);
        parcel.writeInt(mAnchorId);
        parcel.writeInt(mInPictureInPicture ? 1 : 0);
        parcel.writeLong(mAnchorId);

        final LongArray childIds = mChildIds;
        if (childIds == null) {
@@ -545,8 +534,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
        mParentId = parcel.readInt();
        mBoundsInScreen.readFromParcel(parcel);
        mTitle = parcel.readCharSequence();
        mAnchorId = parcel.readInt();
        mInPictureInPicture = parcel.readInt() == 1;
        mAnchorId = parcel.readLong();

        final int childCount = parcel.readInt();
        if (childCount > 0) {
@@ -593,7 +581,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
        builder.append(", bounds=").append(mBoundsInScreen);
        builder.append(", focused=").append(isFocused());
        builder.append(", active=").append(isActive());
        builder.append(", pictureInPicture=").append(inPictureInPicture());
        builder.append(", pictureInPicture=").append(isInPictureInPictureMode());
        if (DEBUG) {
            builder.append(", parent=").append(mParentId);
            builder.append(", children=[");
@@ -611,7 +599,8 @@ public final class AccessibilityWindowInfo implements Parcelable {
            builder.append(']');
        } else {
            builder.append(", hasParent=").append(mParentId != UNDEFINED_WINDOW_ID);
            builder.append(", isAnchored=").append(mAnchorId != UNDEFINED_WINDOW_ID);
            builder.append(", isAnchored=")
                    .append(mAnchorId != AccessibilityNodeInfo.UNDEFINED_NODE_ID);
            builder.append(", hasChildren=").append(mChildIds != null
                    && mChildIds.size() > 0);
        }
@@ -633,8 +622,7 @@ public final class AccessibilityWindowInfo implements Parcelable {
            mChildIds.clear();
        }
        mConnectionId = UNDEFINED_WINDOW_ID;
        mAnchorId = UNDEFINED_WINDOW_ID;
        mInPictureInPicture = false;
        mAnchorId = AccessibilityNodeInfo.UNDEFINED_NODE_ID;
        mTitle = null;
    }

+1 −1
Original line number Diff line number Diff line
@@ -3446,7 +3446,7 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                final int windowCount = mWindows.size();
                for (int i = 0; i < windowCount; i++) {
                    AccessibilityWindowInfo window = mWindows.get(i);
                    if (window.inPictureInPicture()) {
                    if (window.isInPictureInPictureMode()) {
                        return window;
                    }
                }