summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Svetoslav Ganov <svetoslavganov@google.com> 2012-05-09 10:09:44 -0700
committer Android Git Automerger <android-git-automerger@android.com> 2012-05-09 10:09:44 -0700
commit2da197dff2062e4ba0f37f7fd3ef920ed9e86c74 (patch)
tree4a3c1f15f3adec8eec5cd574419c59f1f3615bdc
parent127050357c31f3df1a71680a73e6c31cd4d997b8 (diff)
parentaecb9b59e6c9e9a864bf4b302f978fb950df09ff (diff)
am aecb9b59: am 59f3f585: Merge "Add performAccessibilityAction to AccessibilityDelegate." into jb-dev
* commit 'aecb9b59e6c9e9a864bf4b302f978fb950df09ff': Add performAccessibilityAction to AccessibilityDelegate.
-rw-r--r--api/current.txt1
-rw-r--r--core/java/android/view/View.java39
2 files changed, 40 insertions, 0 deletions
diff --git a/api/current.txt b/api/current.txt
index 036dca5ed416..7604c2770a13 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -24454,6 +24454,7 @@ package android.view {
method public void onInitializeAccessibilityNodeInfo(android.view.View, android.view.accessibility.AccessibilityNodeInfo);
method public void onPopulateAccessibilityEvent(android.view.View, android.view.accessibility.AccessibilityEvent);
method public boolean onRequestSendAccessibilityEvent(android.view.ViewGroup, android.view.View, android.view.accessibility.AccessibilityEvent);
+ method public boolean performAccessibilityAction(android.view.View, int, android.os.Bundle);
method public void sendAccessibilityEvent(android.view.View, int);
method public void sendAccessibilityEventUnchecked(android.view.View, android.view.accessibility.AccessibilityEvent);
}
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index f08d75fe29d0..22430753a1f3 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -6491,12 +6491,31 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
/**
* Performs the specified accessibility action on the view. For
* possible accessibility actions look at {@link AccessibilityNodeInfo}.
+ * <p>
+ * If an {@link AccessibilityDelegate} has been specified via calling
+ * {@link #setAccessibilityDelegate(AccessibilityDelegate)} its
+ * {@link AccessibilityDelegate#performAccessibilityAction(View, int, Bundle)}
+ * is responsible for handling this call.
+ * </p>
*
* @param action The action to perform.
* @param arguments Optional action arguments.
* @return Whether the action was performed.
*/
public boolean performAccessibilityAction(int action, Bundle arguments) {
+ if (mAccessibilityDelegate != null) {
+ return mAccessibilityDelegate.performAccessibilityAction(this, action, arguments);
+ } else {
+ return performAccessibilityActionInternal(action, arguments);
+ }
+ }
+
+ /**
+ * @see #performAccessibilityAction(int, Bundle)
+ *
+ * Note: Called from the default {@link AccessibilityDelegate}.
+ */
+ boolean performAccessibilityActionInternal(int action, Bundle arguments) {
switch (action) {
case AccessibilityNodeInfo.ACTION_CLICK: {
if (isClickable()) {
@@ -17420,6 +17439,26 @@ public class View implements Drawable.Callback, Drawable.Callback2, KeyEvent.Cal
}
/**
+ * Performs the specified accessibility action on the view. For
+ * possible accessibility actions look at {@link AccessibilityNodeInfo}.
+ * <p>
+ * The default implementation behaves as
+ * {@link View#performAccessibilityAction(int, Bundle)
+ * View#performAccessibilityAction(int, Bundle)} for the case of
+ * no accessibility delegate been set.
+ * </p>
+ *
+ * @param action The action to perform.
+ * @return Whether the action was performed.
+ *
+ * @see View#performAccessibilityAction(int, Bundle)
+ * View#performAccessibilityAction(int, Bundle)
+ */
+ public boolean performAccessibilityAction(View host, int action, Bundle args) {
+ return host.performAccessibilityActionInternal(action, args);
+ }
+
+ /**
* Sends an accessibility event. This method behaves exactly as
* {@link #sendAccessibilityEvent(View, int)} but takes as an argument an
* empty {@link AccessibilityEvent} and does not perform a check whether