summaryrefslogtreecommitdiff
path: root/core/java/android
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2011-10-19 17:10:14 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2011-10-19 17:14:27 -0700
commitbb1b9ea8a488eec833b0be18c45dae8505876042 (patch)
treed4cd9f67d5466e770d11b00ef9bd2c8cc472cc4b /core/java/android
parent47f8367ab79247501d5d204632a7797fa8a888e5 (diff)
AccessibilityServiceInfo does not report properly the feedback type.
Since the feedback type is an integer the bits of which correspond to a given feedback type, the AccessibilityNodeInfo#feedbackTypeToString should return a string representation of all feedback types. The current implementation incorrectly assumes that the argument had only one flag set. Note that this is a new ICS API and we would like to have this fixed. bug:5486933 Change-Id: I5e461c385e199cce4c3054907ff0acf5e9d92afc
Diffstat (limited to 'core/java/android')
-rw-r--r--core/java/android/accessibilityservice/AccessibilityServiceInfo.java40
1 files changed, 27 insertions, 13 deletions
diff --git a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
index 41a3eacaafc6..e5a5e986e704 100644
--- a/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityServiceInfo.java
@@ -463,20 +463,34 @@ public class AccessibilityServiceInfo implements Parcelable {
* @return The string representation.
*/
public static String feedbackTypeToString(int feedbackType) {
- switch (feedbackType) {
- case FEEDBACK_AUDIBLE:
- return "FEEDBACK_AUDIBLE";
- case FEEDBACK_HAPTIC:
- return "FEEDBACK_HAPTIC";
- case FEEDBACK_GENERIC:
- return "FEEDBACK_GENERIC";
- case FEEDBACK_SPOKEN:
- return "FEEDBACK_SPOKEN";
- case FEEDBACK_VISUAL:
- return "FEEDBACK_VISUAL";
- default:
- return null;
+ StringBuilder builder = new StringBuilder();
+ builder.append("[");
+ while (feedbackType > 0) {
+ final int feedbackTypeFlag = 1 << Integer.numberOfTrailingZeros(feedbackType);
+ feedbackType &= ~feedbackTypeFlag;
+ if (builder.length() > 1) {
+ builder.append(", ");
+ }
+ switch (feedbackTypeFlag) {
+ case FEEDBACK_AUDIBLE:
+ builder.append("FEEDBACK_AUDIBLE");
+ break;
+ case FEEDBACK_HAPTIC:
+ builder.append("FEEDBACK_HAPTIC");
+ break;
+ case FEEDBACK_GENERIC:
+ builder.append("FEEDBACK_GENERIC");
+ break;
+ case FEEDBACK_SPOKEN:
+ builder.append("FEEDBACK_SPOKEN");
+ break;
+ case FEEDBACK_VISUAL:
+ builder.append("FEEDBACK_VISUAL");
+ break;
+ }
}
+ builder.append("]");
+ return builder.toString();
}
/**