From c70a4560608921da1c431a91370aafb9b9c46715 Mon Sep 17 00:00:00 2001 From: jasonwshsu Date: Fri, 22 May 2020 01:21:19 +0800 Subject: [PATCH] Fix talkback did not speak out ReplacementSpan's content description. * setContentDescription() back to ReplacementSpan when receiving parcel * extend writeToParcel to handle AccessibilityReplacementSpan Bug: 155833272 Test: atest AccessibilityNodeInfoTest#testSetTextWithImageSpan_shouldTextSetToInfo Change-Id: Iab902bdcee53fc09cbba2c7c06858823524a3af9 --- core/java/android/text/TextUtils.java | 2 +- .../style/AccessibilityReplacementSpan.java | 21 ++++++++++++------- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java index 28639b3ea2f7f..984acfd2c860c 100644 --- a/core/java/android/text/TextUtils.java +++ b/core/java/android/text/TextUtils.java @@ -738,7 +738,7 @@ public class TextUtils { /** @hide */ public static final int ACCESSIBILITY_REPLACEMENT_SPAN = 29; /** @hide */ - public static final int LAST_SPAN = LINE_HEIGHT_SPAN; + public static final int LAST_SPAN = ACCESSIBILITY_REPLACEMENT_SPAN; /** * Flatten a CharSequence and whatever styles can be copied across processes diff --git a/core/java/android/text/style/AccessibilityReplacementSpan.java b/core/java/android/text/style/AccessibilityReplacementSpan.java index 07b0975846aa3..e4fc14790b534 100644 --- a/core/java/android/text/style/AccessibilityReplacementSpan.java +++ b/core/java/android/text/style/AccessibilityReplacementSpan.java @@ -22,30 +22,35 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.ParcelableSpan; import android.text.TextUtils; +import android.view.accessibility.AccessibilityNodeInfo; /** - * This class serves as a parcelable placeholder for the ReplacementSpans. + * This class serves as a parcelable placeholder for the {@link ReplacementSpan}. * - * This span contains content description of original span to let Accessibility service to do the - * substitution for it. + * It is used to replace ReplacementSpans in {@link AccessibilityNodeInfo#setText(CharSequence)}. * * @hide */ public class AccessibilityReplacementSpan extends ReplacementSpan implements ParcelableSpan { - // The content description of the span this one replaces - private CharSequence mContentDescription; /** + * Sets the content description to the parent class. + * * @param contentDescription The content description of the span this one replaces */ public AccessibilityReplacementSpan(CharSequence contentDescription) { this.setContentDescription(contentDescription); - mContentDescription = contentDescription; } + /** + * Sets the content description to the parent class. + * + * @param p The parcel to de-serialize from + */ public AccessibilityReplacementSpan(Parcel p) { - mContentDescription = p.readCharSequence(); + final CharSequence contentDescription = p.readCharSequence(); + this.setContentDescription(contentDescription); } @Override @@ -70,7 +75,7 @@ public class AccessibilityReplacementSpan extends ReplacementSpan @Override public void writeToParcelInternal(Parcel dest, int flags) { - dest.writeCharSequence(mContentDescription); + dest.writeCharSequence(this.getContentDescription()); } @Override