Skip to content

Commit bb1b9ea

Browse files
committed
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
1 parent 47f8367 commit bb1b9ea

File tree

1 file changed

+27
-13
lines changed

1 file changed

+27
-13
lines changed

core/java/android/accessibilityservice/AccessibilityServiceInfo.java

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -463,20 +463,34 @@ private static void appendFlags(StringBuilder stringBuilder, int flags) {
463463
* @return The string representation.
464464
*/
465465
public static String feedbackTypeToString(int feedbackType) {
466-
switch (feedbackType) {
467-
case FEEDBACK_AUDIBLE:
468-
return "FEEDBACK_AUDIBLE";
469-
case FEEDBACK_HAPTIC:
470-
return "FEEDBACK_HAPTIC";
471-
case FEEDBACK_GENERIC:
472-
return "FEEDBACK_GENERIC";
473-
case FEEDBACK_SPOKEN:
474-
return "FEEDBACK_SPOKEN";
475-
case FEEDBACK_VISUAL:
476-
return "FEEDBACK_VISUAL";
477-
default:
478-
return null;
466+
StringBuilder builder = new StringBuilder();
467+
builder.append("[");
468+
while (feedbackType > 0) {
469+
final int feedbackTypeFlag = 1 << Integer.numberOfTrailingZeros(feedbackType);
470+
feedbackType &= ~feedbackTypeFlag;
471+
if (builder.length() > 1) {
472+
builder.append(", ");
473+
}
474+
switch (feedbackTypeFlag) {
475+
case FEEDBACK_AUDIBLE:
476+
builder.append("FEEDBACK_AUDIBLE");
477+
break;
478+
case FEEDBACK_HAPTIC:
479+
builder.append("FEEDBACK_HAPTIC");
480+
break;
481+
case FEEDBACK_GENERIC:
482+
builder.append("FEEDBACK_GENERIC");
483+
break;
484+
case FEEDBACK_SPOKEN:
485+
builder.append("FEEDBACK_SPOKEN");
486+
break;
487+
case FEEDBACK_VISUAL:
488+
builder.append("FEEDBACK_VISUAL");
489+
break;
490+
}
479491
}
492+
builder.append("]");
493+
return builder.toString();
480494
}
481495

482496
/**

0 commit comments

Comments
 (0)