Make deep copies of a11y data.

Make sure we don't get exposed to changes make to text
after the setter on the node or event is called. Such
changes mean, among other things, that we can't move the
nodes to different threads.

Bug: 31042124
Change-Id: I12921ff7e50a200b8140994a237040d01a31b6f5
This commit is contained in:
Phil Weaver
2016-08-25 12:58:15 -07:00
parent b67b8a6d6c
commit ef955ad32e
2 changed files with 8 additions and 5 deletions

View File

@@ -2230,7 +2230,7 @@ public class AccessibilityNodeInfo implements Parcelable {
*/
public void setText(CharSequence text) {
enforceNotSealed();
mText = text;
mText = (text == null) ? null : text.subSequence(0, text.length());
}
/**
@@ -2247,7 +2247,7 @@ public class AccessibilityNodeInfo implements Parcelable {
*/
public void setError(CharSequence error) {
enforceNotSealed();
mError = error;
mError = (error == null) ? null : error.subSequence(0, error.length());
}
/**
@@ -2282,7 +2282,8 @@ public class AccessibilityNodeInfo implements Parcelable {
*/
public void setContentDescription(CharSequence contentDescription) {
enforceNotSealed();
mContentDescription = contentDescription;
mContentDescription = (contentDescription == null) ? null
: contentDescription.subSequence(0, contentDescription.length());
}
/**

View File

@@ -572,7 +572,8 @@ public class AccessibilityRecord {
*/
public void setBeforeText(CharSequence beforeText) {
enforceNotSealed();
mBeforeText = beforeText;
mBeforeText = (beforeText == null) ? null
: beforeText.subSequence(0, beforeText.length());
}
/**
@@ -593,7 +594,8 @@ public class AccessibilityRecord {
*/
public void setContentDescription(CharSequence contentDescription) {
enforceNotSealed();
mContentDescription = contentDescription;
mContentDescription = (contentDescription == null) ? null
: contentDescription.subSequence(0, contentDescription.length());
}
/**