diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index ba634212a757e..c61516b4d3c2d 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -2279,9 +2279,12 @@ public class AccessibilityNodeInfo implements Parcelable { if (other.mExtras != null && !other.mExtras.isEmpty()) { getExtras().putAll(other.mExtras); } - mRangeInfo = other.mRangeInfo; - mCollectionInfo = other.mCollectionInfo; - mCollectionItemInfo = other.mCollectionItemInfo; + mRangeInfo = (other.mRangeInfo != null) + ? RangeInfo.obtain(other.mRangeInfo) : null; + mCollectionInfo = (other.mCollectionInfo != null) + ? CollectionInfo.obtain(other.mCollectionInfo) : null; + mCollectionItemInfo = (other.mCollectionItemInfo != null) + ? CollectionItemInfo.obtain(other.mCollectionItemInfo) : null; } /** @@ -2601,6 +2604,17 @@ public class AccessibilityNodeInfo implements Parcelable { private float mMax; private float mCurrent; + /** + * Obtains a pooled instance that is a clone of another one. + * + * @param other The instance to clone. + * + * @hide + */ + public static RangeInfo obtain(RangeInfo other) { + return obtain(other.mType, other.mMin, other.mMax, other.mCurrent); + } + /** * Obtains a pooled instance. * @@ -2707,6 +2721,18 @@ public class AccessibilityNodeInfo implements Parcelable { private int mColumnCount; private boolean mHierarchical; + /** + * Obtains a pooled instance that is a clone of another one. + * + * @param other The instance to clone. + * + * @hide + */ + public static CollectionInfo obtain(CollectionInfo other) { + return CollectionInfo.obtain(other.mRowCount, other.mColumnCount, + other.mHierarchical); + } + /** * Obtains a pooled instance. * @@ -2795,6 +2821,18 @@ public class AccessibilityNodeInfo implements Parcelable { private static final SynchronizedPool sPool = new SynchronizedPool(MAX_POOL_SIZE); + /** + * Obtains a pooled instance that is a clone of another one. + * + * @param other The instance to clone. + * + * @hide + */ + public static CollectionItemInfo obtain(CollectionItemInfo other) { + return CollectionItemInfo.obtain(other.mRowIndex, other.mRowSpan, + other.mColumnIndex, other.mColumnSpan, other.mHeading); + } + /** * Obtains a pooled instance. *