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

Commit a16565fb authored by lucychang's avatar lucychang
Browse files

Add accessibility uniqueId API to platform

Add AccessibilityNodeInfo#setUniqueId and
AccessibilityNodeInfo#getUniqueId API.

Bug: 189055741
Test: atest android.view.accessibility.cts.AccessibilityNodeInfoTest
Change-Id: I94948fcdea0bf997e8d41229bef4001aba557018
parent c65303a1
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -50887,6 +50887,7 @@ package android.view.accessibility {
    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
    method @Nullable public android.view.accessibility.AccessibilityNodeInfo.TouchDelegateInfo getTouchDelegateInfo();
    method public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
    method public android.view.accessibility.AccessibilityNodeInfo getTraversalAfter();
    method public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
    method public android.view.accessibility.AccessibilityNodeInfo getTraversalBefore();
    method @Nullable public String getUniqueId();
    method public String getViewIdResourceName();
    method public String getViewIdResourceName();
    method public android.view.accessibility.AccessibilityWindowInfo getWindow();
    method public android.view.accessibility.AccessibilityWindowInfo getWindow();
    method public int getWindowId();
    method public int getWindowId();
@@ -50981,6 +50982,7 @@ package android.view.accessibility {
    method public void setTraversalAfter(android.view.View, int);
    method public void setTraversalAfter(android.view.View, int);
    method public void setTraversalBefore(android.view.View);
    method public void setTraversalBefore(android.view.View);
    method public void setTraversalBefore(android.view.View, int);
    method public void setTraversalBefore(android.view.View, int);
    method public void setUniqueId(@Nullable String);
    method public void setViewIdResourceName(String);
    method public void setViewIdResourceName(String);
    method public void setVisibleToUser(boolean);
    method public void setVisibleToUser(boolean);
    method public void writeToParcel(android.os.Parcel, int);
    method public void writeToParcel(android.os.Parcel, int);
+31 −0
Original line number Original line Diff line number Diff line
@@ -806,6 +806,7 @@ public class AccessibilityNodeInfo implements Parcelable {
    private CharSequence mContentDescription;
    private CharSequence mContentDescription;
    private CharSequence mTooltipText;
    private CharSequence mTooltipText;
    private String mViewIdResourceName;
    private String mViewIdResourceName;
    private String mUniqueId;
    private ArrayList<String> mExtraDataKeys;
    private ArrayList<String> mExtraDataKeys;


    @UnsupportedAppUsage
    @UnsupportedAppUsage
@@ -3462,6 +3463,28 @@ public class AccessibilityNodeInfo implements Parcelable {
        return mSourceNodeId;
        return mSourceNodeId;
    }
    }


    /**
     * Sets the unique id to act as a key to identify the node. If the node instance is replaced
     * after refreshing the layout, calling this API to assign the same unique id to the new
     * alike node can help accessibility service to identify it.
     *
     * @param uniqueId The unique id that is associated with a visible node on the screen
     */
    public void setUniqueId(@Nullable String uniqueId) {
        enforceNotSealed();
        mUniqueId = uniqueId;
    }

    /**
     * Gets the unique id of the node.
     *
     * @return The unique id
     */
    @Nullable
    public String getUniqueId() {
        return mUniqueId;
    }

    /**
    /**
     * Sets the token and node id of the leashed parent.
     * Sets the token and node id of the leashed parent.
     *
     *
@@ -3764,6 +3787,10 @@ public class AccessibilityNodeInfo implements Parcelable {
            nonDefaultFields |= bitAt(fieldIndex);
            nonDefaultFields |= bitAt(fieldIndex);
        }
        }
        fieldIndex++;
        fieldIndex++;
        if (!Objects.equals(mUniqueId, DEFAULT.mUniqueId)) {
            nonDefaultFields |= bitAt(fieldIndex);
        }
        fieldIndex++;
        if (mTextSelectionStart != DEFAULT.mTextSelectionStart) {
        if (mTextSelectionStart != DEFAULT.mTextSelectionStart) {
            nonDefaultFields |= bitAt(fieldIndex);
            nonDefaultFields |= bitAt(fieldIndex);
        }
        }
@@ -3903,6 +3930,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeCharSequence(mTooltipText);
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeCharSequence(mTooltipText);


        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeString(mViewIdResourceName);
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeString(mViewIdResourceName);
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeString(mUniqueId);


        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeInt(mTextSelectionStart);
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeInt(mTextSelectionStart);
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeInt(mTextSelectionEnd);
        if (isBitSet(nonDefaultFields, fieldIndex++)) parcel.writeInt(mTextSelectionEnd);
@@ -3982,6 +4010,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        mTraversalAfter = other.mTraversalAfter;
        mTraversalAfter = other.mTraversalAfter;
        mWindowId = other.mWindowId;
        mWindowId = other.mWindowId;
        mConnectionId = other.mConnectionId;
        mConnectionId = other.mConnectionId;
        mUniqueId = other.mUniqueId;
        mBoundsInParent.set(other.mBoundsInParent);
        mBoundsInParent.set(other.mBoundsInParent);
        mBoundsInScreen.set(other.mBoundsInScreen);
        mBoundsInScreen.set(other.mBoundsInScreen);
        mPackageName = other.mPackageName;
        mPackageName = other.mPackageName;
@@ -4154,6 +4183,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        if (isBitSet(nonDefaultFields, fieldIndex++)) mPaneTitle = parcel.readCharSequence();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mPaneTitle = parcel.readCharSequence();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mTooltipText = parcel.readCharSequence();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mTooltipText = parcel.readCharSequence();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mViewIdResourceName = parcel.readString();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mViewIdResourceName = parcel.readString();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mUniqueId = parcel.readString();


        if (isBitSet(nonDefaultFields, fieldIndex++)) mTextSelectionStart = parcel.readInt();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mTextSelectionStart = parcel.readInt();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mTextSelectionEnd = parcel.readInt();
        if (isBitSet(nonDefaultFields, fieldIndex++)) mTextSelectionEnd = parcel.readInt();
@@ -4480,6 +4510,7 @@ public class AccessibilityNodeInfo implements Parcelable {
        builder.append("; contentDescription: ").append(mContentDescription);
        builder.append("; contentDescription: ").append(mContentDescription);
        builder.append("; tooltipText: ").append(mTooltipText);
        builder.append("; tooltipText: ").append(mTooltipText);
        builder.append("; viewIdResName: ").append(mViewIdResourceName);
        builder.append("; viewIdResName: ").append(mViewIdResourceName);
        builder.append("; uniqueId: ").append(mUniqueId);


        builder.append("; checkable: ").append(isCheckable());
        builder.append("; checkable: ").append(isCheckable());
        builder.append("; checked: ").append(isChecked());
        builder.append("; checked: ").append(isChecked());
+1 −1
Original line number Original line Diff line number Diff line
@@ -46,7 +46,7 @@ public class AccessibilityNodeInfoTest {
    // The number of fields tested in the corresponding CTS AccessibilityNodeInfoTest:
    // The number of fields tested in the corresponding CTS AccessibilityNodeInfoTest:
    // See fullyPopulateAccessibilityNodeInfo, assertEqualsAccessibilityNodeInfo,
    // See fullyPopulateAccessibilityNodeInfo, assertEqualsAccessibilityNodeInfo,
    // and assertAccessibilityNodeInfoCleared in that class.
    // and assertAccessibilityNodeInfoCleared in that class.
    private static final int NUM_MARSHALLED_PROPERTIES = 39;
    private static final int NUM_MARSHALLED_PROPERTIES = 40;


    /**
    /**
     * The number of properties that are purposely not marshalled
     * The number of properties that are purposely not marshalled