summaryrefslogtreecommitdiff
path: root/core/java/android/view/AccessibilityInteractionController.java
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-04-19 23:01:39 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2012-04-20 15:12:13 -0700
commitaa780c110922148a6a4ba06734bb2b0bb8c98f93 (patch)
tree8709da20df481fea35219769285546802407ca9f /core/java/android/view/AccessibilityInteractionController.java
parentfefd20e927b7252d63acb7bb1852c5188e3c1b2e (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.java13
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 {