Loading core/java/android/view/View.java +7 −3 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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) { Loading @@ -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) { Loading core/java/android/view/accessibility/AccessibilityEvent.java +8 −3 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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); } Loading @@ -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 "); Loading core/java/android/view/accessibility/AccessibilityNodeInfo.java +3 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -2911,6 +2911,8 @@ public class AccessibilityNodeInfo implements Parcelable { parcel.readInt() == 1, parcel.readInt() == 1); } mSealed = sealed; } /** Loading core/java/android/view/accessibility/AccessibilityRecord.java +39 −18 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } /** Loading @@ -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; } /** Loading Loading @@ -619,7 +625,7 @@ public class AccessibilityRecord { * @hide */ public long getSourceNodeId() { return mSourceNodeId; return mSourceNode != null ? mSourceNode.getSourceNodeId() : UNDEFINED; } /** Loading @@ -633,6 +639,9 @@ public class AccessibilityRecord { public void setConnectionId(int connectionId) { enforceNotSealed(); mConnectionId = connectionId; if (mSourceNode != null) { mSourceNode.setConnectionId(mConnectionId); } } /** Loading @@ -644,6 +653,9 @@ public class AccessibilityRecord { */ public void setSealed(boolean sealed) { mSealed = sealed; if (mSourceNode != null) { mSourceNode.setSealed(sealed); } } /** Loading Loading @@ -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; } Loading @@ -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(); Loading Loading
core/java/android/view/View.java +7 −3 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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); Loading Loading @@ -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) { Loading @@ -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) { Loading
core/java/android/view/accessibility/AccessibilityEvent.java +8 −3 Original line number Diff line number Diff line Loading @@ -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); } Loading Loading @@ -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); } Loading @@ -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 "); Loading
core/java/android/view/accessibility/AccessibilityNodeInfo.java +3 −1 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -2911,6 +2911,8 @@ public class AccessibilityNodeInfo implements Parcelable { parcel.readInt() == 1, parcel.readInt() == 1); } mSealed = sealed; } /** Loading
core/java/android/view/accessibility/AccessibilityRecord.java +39 −18 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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); } /** Loading @@ -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; } /** Loading Loading @@ -619,7 +625,7 @@ public class AccessibilityRecord { * @hide */ public long getSourceNodeId() { return mSourceNodeId; return mSourceNode != null ? mSourceNode.getSourceNodeId() : UNDEFINED; } /** Loading @@ -633,6 +639,9 @@ public class AccessibilityRecord { public void setConnectionId(int connectionId) { enforceNotSealed(); mConnectionId = connectionId; if (mSourceNode != null) { mSourceNode.setConnectionId(mConnectionId); } } /** Loading @@ -644,6 +653,9 @@ public class AccessibilityRecord { */ public void setSealed(boolean sealed) { mSealed = sealed; if (mSourceNode != null) { mSourceNode.setSealed(sealed); } } /** Loading Loading @@ -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; } Loading @@ -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(); Loading