diff options
| author | Svetoslav Ganov <svetoslavganov@google.com> | 2012-04-19 23:01:39 -0700 |
|---|---|---|
| committer | Svetoslav Ganov <svetoslavganov@google.com> | 2012-04-20 15:12:13 -0700 |
| commit | aa780c110922148a6a4ba06734bb2b0bb8c98f93 (patch) | |
| tree | 8709da20df481fea35219769285546802407ca9f /core/java/android/view/AccessibilityInteractionController.java | |
| parent | fefd20e927b7252d63acb7bb1852c5188e3c1b2e (diff) | |
Adding support for traversing the content of a node info at granularity.
1. A view that creates an accessibility node info may add to the info
a list of granularity labels. These are granularities by which the
source view can iterate over its content. For example a text view
may support character, word link while a web view may additionally
support buttons, tables, etc. There are actions on accessibility
node info to go to the next/previous at a given granularity which
is passesed as an argument.
2. Added Bundle argument to the APIs for performing accessibility
actions. This is generic and extensible.
bug:5932640
Change-Id: I328cbbb4cddfdee082ab2a8b7ff1bd7477d8d6f9
Diffstat (limited to 'core/java/android/view/AccessibilityInteractionController.java')
| -rw-r--r-- | core/java/android/view/AccessibilityInteractionController.java | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java index e3f5b968781f..7d569adda0f8 100644 --- a/core/java/android/view/AccessibilityInteractionController.java +++ b/core/java/android/view/AccessibilityInteractionController.java @@ -18,6 +18,7 @@ package android.view; import static android.view.accessibility.AccessibilityNodeInfo.INCLUDE_NOT_IMPORTANT_VIEWS; +import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -514,8 +515,9 @@ final class AccessibilityInteractionController { } public void performAccessibilityActionClientThread(long accessibilityNodeId, int action, - int interactionId, IAccessibilityInteractionConnectionCallback callback, int flags, - int interogatingPid, long interrogatingTid) { + Bundle arguments, int interactionId, + IAccessibilityInteractionConnectionCallback callback, int flags, int interogatingPid, + long interrogatingTid) { Message message = mHandler.obtainMessage(); message.what = PrivateHandler.MSG_PERFORM_ACCESSIBILITY_ACTION; message.arg1 = flags; @@ -525,6 +527,7 @@ final class AccessibilityInteractionController { args.argi2 = action; args.argi3 = interactionId; args.arg1 = callback; + args.arg2 = arguments; message.obj = args; // If the interrogation is performed by the same thread as the main UI // thread in this process, set the message as a static reference so @@ -547,6 +550,7 @@ final class AccessibilityInteractionController { final int interactionId = args.argi3; final IAccessibilityInteractionConnectionCallback callback = (IAccessibilityInteractionConnectionCallback) args.arg1; + Bundle arguments = (Bundle) args.arg2; mPool.release(args); boolean succeeded = false; try { @@ -564,9 +568,10 @@ final class AccessibilityInteractionController { if (target != null && target.isDisplayedOnScreen()) { AccessibilityNodeProvider provider = target.getAccessibilityNodeProvider(); if (provider != null) { - succeeded = provider.performAccessibilityAction(action, virtualDescendantId); + succeeded = provider.performAction(virtualDescendantId, action, + arguments); } else if (virtualDescendantId == View.NO_ID) { - succeeded = target.performAccessibilityAction(action); + succeeded = target.performAccessibilityAction(action, arguments); } } } finally { |
