diff --git a/core/api/current.txt b/core/api/current.txt index 2411a4e42f56a..d5194529d9816 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -51950,6 +51950,7 @@ package android.view.accessibility { method public void addChild(android.view.View, int); method public boolean canOpenPopup(); method public int describeContents(); + method public void enableQueryFromAppProcess(@NonNull android.view.View); method public java.util.List findAccessibilityNodeInfosByText(String); method public java.util.List findAccessibilityNodeInfosByViewId(@NonNull String); method public android.view.accessibility.AccessibilityNodeInfo findFocus(int); @@ -52017,7 +52018,6 @@ package android.view.accessibility { method public boolean isTextEntryKey(); method public boolean isTextSelectable(); method public boolean isVisibleToUser(); - method public void makeQueryableFromAppProcess(@NonNull android.view.View); method @Deprecated public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View); method @Deprecated public static android.view.accessibility.AccessibilityNodeInfo obtain(android.view.View, int); method @Deprecated public static android.view.accessibility.AccessibilityNodeInfo obtain(); diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index e8179cf59c1a1..9620b0951d56f 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -9575,7 +9575,7 @@ public final class ViewRootImpl implements ViewParent, /** * Return the connection ID for the {@link AccessibilityInteractionController} of this instance. - * @see AccessibilityNodeInfo#makeQueryableFromAppProcess(View) + * @see AccessibilityNodeInfo#enableQueryFromAppProcess(View) */ public int getDirectAccessibilityConnectionId() { return mAccessibilityInteractionConnectionManager.ensureDirectConnection(); diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java index 6ae59bf0c8fc9..35ec40866d657 100644 --- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java +++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java @@ -84,7 +84,7 @@ import java.util.Objects; *

* Once an accessibility node info is delivered to an accessibility service it is * made immutable and calling a state mutation method generates an error. See - * {@link #makeQueryableFromAppProcess(View)} if you would like to inspect the + * {@link #enableQueryFromAppProcess(View)} if you would like to inspect the * node tree from the app process for testing or debugging tools. *

*

@@ -1175,7 +1175,7 @@ public class AccessibilityNodeInfo implements Parcelable { * @return The child node. * * @throws IllegalStateException If called outside of an {@link AccessibilityService} and before - * calling {@link #makeQueryableFromAppProcess(View)}. + * calling {@link #enableQueryFromAppProcess(View)}. */ public AccessibilityNodeInfo getChild(int index) { return getChild(index, FLAG_PREFETCH_DESCENDANTS_HYBRID); @@ -1190,7 +1190,7 @@ public class AccessibilityNodeInfo implements Parcelable { * @return The child node. * * @throws IllegalStateException If called outside of an {@link AccessibilityService} and before - * calling {@link #makeQueryableFromAppProcess(View)}. + * calling {@link #enableQueryFromAppProcess(View)}. * * @see AccessibilityNodeInfo#getParent(int) for a description of prefetching. */ @@ -1914,7 +1914,7 @@ public class AccessibilityNodeInfo implements Parcelable { * @return The parent. * * @throws IllegalStateException If called outside of an {@link AccessibilityService} and before - * calling {@link #makeQueryableFromAppProcess(View)}. + * calling {@link #enableQueryFromAppProcess(View)}. */ public AccessibilityNodeInfo getParent() { enforceSealed(); @@ -1943,7 +1943,7 @@ public class AccessibilityNodeInfo implements Parcelable { * @return The parent. * * @throws IllegalStateException If called outside of an {@link AccessibilityService} and before - * calling {@link #makeQueryableFromAppProcess(View)}. + * calling {@link #enableQueryFromAppProcess(View)}. * * @see #FLAG_PREFETCH_ANCESTORS * @see #FLAG_PREFETCH_DESCENDANTS_BREADTH_FIRST @@ -3669,29 +3669,39 @@ public class AccessibilityNodeInfo implements Parcelable { * {@link AccessibilityNodeInfo} tree and perform accessibility actions on nodes. * *

- * This is intended for short-lived inspections from testing or debugging tools in the app - * process. After calling this method, all nodes linked to this node (children, ancestors, etc.) - * are also queryable. Operations on this node tree will only succeed as long as the associated - * view hierarchy remains attached to a window. - *

- * - *

- * Calling this method more than once on the same node is a no-op; if you wish to inspect a - * different view hierarchy then create a new node from any view in that hierarchy and call this - * method on that node. - *

- * - *

* Testing or debugging tools should create this {@link AccessibilityNodeInfo} node using * {@link View#createAccessibilityNodeInfo()} or {@link AccessibilityNodeProvider} and call this * method, then navigate and interact with the node tree by calling methods on the node. + * Calling this method more than once on the same node is a no-op. After calling this method, + * all nodes linked to this node (children, ancestors, etc.) are also queryable. + *

+ * + *

+ * Here "query" refers to the following node operations: + *

  • check properties of this node (example: {@link #isScrollable()})
  • + *
  • find and query children (example: {@link #getChild(int)})
  • + *
  • find and query the parent (example: {@link #getParent()})
  • + *
  • find focus (examples: {@link #findFocus(int)}, {@link #focusSearch(int)})
  • + *
  • find and query other nodes (example: {@link #findAccessibilityNodeInfosByText(String)}, + * {@link #findAccessibilityNodeInfosByViewId(String)})
  • + *
  • perform actions (example: {@link #performAction(int)})
  • + *

    + * + *

    + * This is intended for short-lived inspections from testing or debugging tools in the app + * process, as operations on this node tree will only succeed as long as the associated + * view hierarchy remains attached to a window. Since {@link AccessibilityNodeInfo} objects can + * quickly become out of sync with their corresponding {@link View} objects there is + * intentionally no "disable" method: if you wish to inspect a changed or different view + * hierarchy then create a new node from any view in that hierarchy and call this method on that + * node. *

    * * @param view The view that generated this node, or any view in the same view-root hierarchy. * @throws IllegalStateException If called from an {@link AccessibilityService}, or if provided * a {@link View} that is not attached to a window. */ - public void makeQueryableFromAppProcess(@NonNull View view) { + public void enableQueryFromAppProcess(@NonNull View view) { enforceNotSealed(); if (mConnectionId != UNDEFINED_CONNECTION_ID) { return;