summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorqinyige <qinyige@xiaomi.com>2019-01-12 07:50:12 -0800
committerandroid-build-merger <android-build-merger@google.com>2019-01-12 07:50:12 -0800
commit234076ca37c0010845a0e8ec488cc1e994e0ba94 (patch)
tree38df2f9be8e066973ecd30d2bd83199a3f41845c /core/java
parent474ed578d1782eb53f5c23e8602168950d5de51e (diff)
parente0a34bf17f13b537ba0b411b0e743f3a5a893ceb (diff)
Merge "Avoid adding node itself as child node."
am: e0a34bf17f Change-Id: I5b86189d3ad1e3ead4b24f0c15c44d6beb2a0a4b
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/view/accessibility/AccessibilityNodeInfo.java10
1 files changed, 10 insertions, 0 deletions
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 158ac6b0cdb5..28550ee61fbb 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -40,6 +40,7 @@ import android.text.style.AccessibilityURLSpan;
import android.text.style.ClickableSpan;
import android.text.style.URLSpan;
import android.util.ArraySet;
+import android.util.Log;
import android.util.LongArray;
import android.util.Pools.SynchronizedPool;
import android.view.View;
@@ -85,6 +86,8 @@ public class AccessibilityNodeInfo implements Parcelable {
private static final boolean DEBUG = false;
+ private static final String TAG = "AccessibilityNodeInfo";
+
/** @hide */
public static final int UNDEFINED_CONNECTION_ID = -1;
@@ -990,6 +993,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* <strong>Note:</strong> Cannot be called from an
* {@link android.accessibilityservice.AccessibilityService}.
* This class is made immutable before being delivered to an AccessibilityService.
+ * Note that a view cannot be made its own child.
* </p>
*
* @param child The child.
@@ -1037,6 +1041,7 @@ public class AccessibilityNodeInfo implements Parcelable {
* hierarchy for accessibility purposes. This enables custom views that draw complex
* content to report them selves as a tree of virtual views, thus conveying their
* logical structure.
+ * Note that a view cannot be made its own child.
* </p>
*
* @param root The root of the virtual subtree.
@@ -1054,6 +1059,11 @@ public class AccessibilityNodeInfo implements Parcelable {
final int rootAccessibilityViewId =
(root != null) ? root.getAccessibilityViewId() : UNDEFINED_ITEM_ID;
final long childNodeId = makeNodeId(rootAccessibilityViewId, virtualDescendantId);
+ if (childNodeId == mSourceNodeId) {
+ Log.e(TAG, "Rejecting attempt to make a View its own child");
+ return;
+ }
+
// If we're checking uniqueness and the ID already exists, abort.
if (checked && mChildNodeIds.indexOf(childNodeId) >= 0) {
return;