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

Commit 9d919a23 authored by Maxim Bogatov's avatar Maxim Bogatov Committed by Android Git Automerger
Browse files

am e5a4a91c: Merge "Transfer a11y node with a11y event" into mnc-dev

* commit 'e5a4a91c':
  Transfer a11y node with a11y event
parents 1e989663 e5a4a91c
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -6032,7 +6032,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
    public AccessibilityNodeInfo createAccessibilityNodeInfoInternal() {
        AccessibilityNodeProvider provider = getAccessibilityNodeProvider();
        if (provider != null) {
            return provider.createAccessibilityNodeInfo(View.NO_ID);
            return provider.createAccessibilityNodeInfo(AccessibilityNodeProvider.HOST_VIEW_ID);
        } else {
            AccessibilityNodeInfo info = AccessibilityNodeInfo.obtain(this);
            onInitializeAccessibilityNodeInfo(info);
@@ -6326,6 +6326,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @hide
     */
    public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
        if (mAttachInfo == null) {
            return;
        }
        Rect bounds = mAttachInfo.mTmpInvalRect;
        getDrawingRect(bounds);
@@ -8774,7 +8778,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @hide
     */
    public void notifyViewAccessibilityStateChangedIfNeeded(int changeType) {
        if (!AccessibilityManager.getInstance(mContext).isEnabled()) {
        if (!AccessibilityManager.getInstance(mContext).isEnabled() || mAttachInfo == null) {
            return;
        }
        if (mSendViewStateChangedAccessibilityEvent == null) {
@@ -8796,7 +8800,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
     * @hide
     */
    public void notifySubtreeAccessibilityStateChangedIfNeeded() {
        if (!AccessibilityManager.getInstance(mContext).isEnabled()) {
        if (!AccessibilityManager.getInstance(mContext).isEnabled() || mAttachInfo == null) {
            return;
        }
        if ((mPrivateFlags2 & PFLAG2_SUBTREE_ACCESSIBILITY_STATE_CHANGED) == 0) {
+8 −3
Original line number Diff line number Diff line
@@ -1115,7 +1115,7 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        record.mParcelableData = parcel.readParcelable(null);
        parcel.readList(record.mText, null);
        record.mSourceWindowId = parcel.readInt();
        record.mSourceNodeId = parcel.readLong();
        record.mSourceNode = parcel.readParcelable(null);
        record.mSealed = (parcel.readInt() == 1);
    }

@@ -1167,7 +1167,10 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
        parcel.writeParcelable(record.mParcelableData, flags);
        parcel.writeList(record.mText);
        parcel.writeInt(record.mSourceWindowId);
        parcel.writeLong(record.mSourceNodeId);
        // create copy of the node here because the node would be recycled just after it is written
        // to parcel
        parcel.writeParcelable(record.mSourceNode != null ?
                AccessibilityNodeInfo.obtain(record.mSourceNode) : null, flags);
        parcel.writeInt(record.mSealed ? 1 : 0);
    }

@@ -1191,7 +1194,9 @@ public final class AccessibilityEvent extends AccessibilityRecord implements Par
            builder.append("\n");
            builder.append("; ContentChangeTypes: ").append(mContentChangeTypes);
            builder.append("; sourceWindowId: ").append(mSourceWindowId);
            builder.append("; mSourceNodeId: ").append(mSourceNodeId);
            if (mSourceNode != null) {
                builder.append("; mSourceNodeId: ").append(mSourceNode.getSourceNodeId());
            }
            for (int i = 0; i < getRecordCount(); i++) {
                final AccessibilityRecord record = getRecord(i);
                builder.append("  Record ");
+3 −1
Original line number Diff line number Diff line
@@ -2821,7 +2821,7 @@ public class AccessibilityNodeInfo implements Parcelable {
     * @param parcel A parcel containing the state of a {@link AccessibilityNodeInfo}.
     */
    private void initFromParcel(Parcel parcel) {
        mSealed = (parcel.readInt()  == 1);
        final boolean sealed = (parcel.readInt()  == 1);
        mSourceNodeId = parcel.readLong();
        mWindowId = parcel.readInt();
        mParentNodeId = parcel.readLong();
@@ -2911,6 +2911,8 @@ public class AccessibilityNodeInfo implements Parcelable {
                    parcel.readInt() == 1,
                    parcel.readInt() == 1);
        }

        mSealed = sealed;
    }

    /**
+39 −18
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ public class AccessibilityRecord {

    int mAddedCount= UNDEFINED;
    int mRemovedCount = UNDEFINED;
    long mSourceNodeId = AccessibilityNodeInfo.makeNodeId(UNDEFINED, UNDEFINED);
    AccessibilityNodeInfo mSourceNode;
    int mSourceWindowId = UNDEFINED;

    CharSequence mClassName;
@@ -135,16 +135,24 @@ public class AccessibilityRecord {
     */
    public void setSource(View root, int virtualDescendantId) {
        enforceNotSealed();
        final boolean important;
        if (virtualDescendantId == UNDEFINED) {
            important = (root != null) ? root.isImportantForAccessibility() : true;
        boolean important = true;
        mSourceWindowId = UNDEFINED;
        clearSourceNode();
        if (root != null) {
            if (virtualDescendantId == UNDEFINED ||
                    virtualDescendantId == AccessibilityNodeInfo.UNDEFINED_ITEM_ID) {
                important = root.isImportantForAccessibility();
                mSourceNode = root.createAccessibilityNodeInfo();
            } else {
            important = true;
                AccessibilityNodeProvider provider = root.getAccessibilityNodeProvider();
                if (provider != null) {
                    mSourceNode = provider.createAccessibilityNodeInfo(virtualDescendantId);
                }
            }

            mSourceWindowId = root.getAccessibilityWindowId();
        }
        setBooleanProperty(PROPERTY_IMPORTANT_FOR_ACCESSIBILITY, important);
        mSourceWindowId = (root != null) ? root.getAccessibilityWindowId() : UNDEFINED;
        final int rootViewId = (root != null) ? root.getAccessibilityViewId() : UNDEFINED;
        mSourceNodeId = AccessibilityNodeInfo.makeNodeId(rootViewId, virtualDescendantId);
    }

    /**
@@ -158,13 +166,11 @@ public class AccessibilityRecord {
     */
    public AccessibilityNodeInfo getSource() {
        enforceSealed();
        if (mConnectionId == UNDEFINED || mSourceWindowId == UNDEFINED
                || AccessibilityNodeInfo.getAccessibilityViewId(mSourceNodeId) == UNDEFINED) {
            return null;
        if (mSourceNode != null) {
            return AccessibilityNodeInfo.obtain(mSourceNode);
        }
        AccessibilityInteractionClient client = AccessibilityInteractionClient.getInstance();
        return client.findAccessibilityNodeInfoByAccessibilityId(mConnectionId, mSourceWindowId,
                mSourceNodeId, false, GET_SOURCE_PREFETCH_FLAGS);

        return null;
    }

    /**
@@ -619,7 +625,7 @@ public class AccessibilityRecord {
     * @hide
     */
    public long getSourceNodeId() {
        return mSourceNodeId;
        return mSourceNode != null ? mSourceNode.getSourceNodeId() : UNDEFINED;
    }

    /**
@@ -633,6 +639,9 @@ public class AccessibilityRecord {
    public void setConnectionId(int connectionId) {
        enforceNotSealed();
        mConnectionId = connectionId;
        if (mSourceNode != null) {
            mSourceNode.setConnectionId(mConnectionId);
        }
    }

    /**
@@ -644,6 +653,9 @@ public class AccessibilityRecord {
     */
    public void setSealed(boolean sealed) {
        mSealed = sealed;
        if (mSourceNode != null) {
            mSourceNode.setSealed(sealed);
        }
    }

    /**
@@ -782,7 +794,9 @@ public class AccessibilityRecord {
        mParcelableData = record.mParcelableData;
        mText.addAll(record.mText);
        mSourceWindowId = record.mSourceWindowId;
        mSourceNodeId = record.mSourceNodeId;
        if (record.mSourceNode != null) {
            mSourceNode = AccessibilityNodeInfo.obtain(record.mSourceNode);
        }
        mConnectionId = record.mConnectionId;
    }

@@ -807,11 +821,18 @@ public class AccessibilityRecord {
        mBeforeText = null;
        mParcelableData = null;
        mText.clear();
        mSourceNodeId = AccessibilityNodeInfo.makeNodeId(UNDEFINED, UNDEFINED);
        clearSourceNode();
        mSourceWindowId = UNDEFINED;
        mConnectionId = UNDEFINED;
    }

    private void clearSourceNode() {
        if (mSourceNode != null) {
            mSourceNode.recycle();
            mSourceNode = null;
        }
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();