Chromium Code Reviews| Index: content/browser/accessibility/browser_accessibility_android.cc |
| diff --git a/content/browser/accessibility/browser_accessibility_android.cc b/content/browser/accessibility/browser_accessibility_android.cc |
| index 79a1f18a36957566cd04a9f4367fa63e7860e6bc..ead1cdf3dad9088dc84cd40e80ce10fdb8ac6485 100644 |
| --- a/content/browser/accessibility/browser_accessibility_android.cc |
| +++ b/content/browser/accessibility/browser_accessibility_android.cc |
| @@ -5,11 +5,14 @@ |
| #include "content/browser/accessibility/browser_accessibility_android.h" |
| #include "base/i18n/break_iterator.h" |
| +#include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| #include "base/strings/stringprintf.h" |
| #include "base/strings/utf_string_conversions.h" |
| +#include "content/app/strings/grit/content_strings.h" |
| #include "content/browser/accessibility/browser_accessibility_manager_android.h" |
| #include "content/common/accessibility_messages.h" |
| +#include "content/public/common/content_client.h" |
| namespace { |
| @@ -407,6 +410,405 @@ base::string16 BrowserAccessibilityAndroid::GetText() const { |
| return text; |
| } |
| +base::string16 BrowserAccessibilityAndroid::GetRoleDescription() const { |
| + content::ContentClient* content_client = content::GetContentClient(); |
| + |
| + if (GetRole() == ui::AX_ROLE_HEADING) { |
|
David Tseng
2016/02/02 18:38:57
Why not include this in the switch below?
dmazzoni
2016/02/03 17:55:07
Added a comment to clarify. I made this special ca
|
| + int level = GetIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL); |
| + if (level >= 1 && level <= 6) { |
|
David Tseng
2016/02/02 18:38:57
Can you check for the case when hierarchical level
dmazzoni
2016/02/03 17:55:06
I don't think we should crash in that case. The au
|
| + return content_client->GetLocalizedStringF( |
| + IDS_AX_ROLE_HEADING_WITH_LEVEL, |
| + base::IntToString16(level)); |
| + } else { |
| + return content_client->GetLocalizedString(IDS_AX_ROLE_HEADING); |
| + } |
| + } |
| + |
| + int message_id = -1; |
| + switch (GetRole()) { |
| + case ui::AX_ROLE_ABBR: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_ALERT_DIALOG: |
| + message_id = IDS_AX_ROLE_ALERT_DIALOG; |
| + break; |
| + case ui::AX_ROLE_ALERT: |
| + message_id = IDS_AX_ROLE_ALERT; |
| + break; |
| + case ui::AX_ROLE_ANNOTATION: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_APPLICATION: |
| + message_id = IDS_AX_ROLE_APPLICATION; |
| + break; |
| + case ui::AX_ROLE_ARTICLE: |
| + message_id = IDS_AX_ROLE_ARTICLE; |
| + break; |
| + case ui::AX_ROLE_BANNER: |
| + message_id = IDS_AX_ROLE_BANNER; |
| + break; |
| + case ui::AX_ROLE_BLOCKQUOTE: |
| + message_id = IDS_AX_ROLE_BLOCKQUOTE; |
| + break; |
| + case ui::AX_ROLE_BUSY_INDICATOR: |
| + message_id = IDS_AX_ROLE_BUSY_INDICATOR; |
| + break; |
| + case ui::AX_ROLE_BUTTON: |
| + message_id = IDS_AX_ROLE_BUTTON; |
| + break; |
| + case ui::AX_ROLE_BUTTON_DROP_DOWN: |
| + message_id = IDS_AX_ROLE_BUTTON_DROP_DOWN; |
| + break; |
| + case ui::AX_ROLE_CANVAS: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_CAPTION: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_CELL: |
| + message_id = IDS_AX_ROLE_CELL; |
| + break; |
| + case ui::AX_ROLE_CHECK_BOX: |
| + message_id = IDS_AX_ROLE_CHECK_BOX; |
| + break; |
| + case ui::AX_ROLE_CLIENT: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_COLOR_WELL: |
| + message_id = IDS_AX_ROLE_COLOR_WELL; |
| + break; |
| + case ui::AX_ROLE_COLUMN_HEADER: |
| + message_id = IDS_AX_ROLE_COLUMN_HEADER; |
| + break; |
| + case ui::AX_ROLE_COLUMN: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_COMBO_BOX: |
| + message_id = IDS_AX_ROLE_COMBO_BOX; |
| + break; |
| + case ui::AX_ROLE_COMPLEMENTARY: |
| + message_id = IDS_AX_ROLE_COMPLEMENTARY; |
| + break; |
| + case ui::AX_ROLE_CONTENT_INFO: |
| + message_id = IDS_AX_ROLE_CONTENT_INFO; |
| + break; |
| + case ui::AX_ROLE_DATE: |
| + message_id = IDS_AX_ROLE_DATE; |
| + break; |
| + case ui::AX_ROLE_DATE_TIME: |
| + message_id = IDS_AX_ROLE_DATE_TIME; |
| + break; |
| + case ui::AX_ROLE_DEFINITION: |
| + message_id = IDS_AX_ROLE_DEFINITION; |
| + break; |
| + case ui::AX_ROLE_DESCRIPTION_LIST_DETAIL: |
| + message_id = IDS_AX_ROLE_DEFINITION; |
| + break; |
| + case ui::AX_ROLE_DESCRIPTION_LIST: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_DESCRIPTION_LIST_TERM: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_DESKTOP: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_DETAILS: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_DIALOG: |
| + message_id = IDS_AX_ROLE_DIALOG; |
| + break; |
| + case ui::AX_ROLE_DIRECTORY: |
| + message_id = IDS_AX_ROLE_DIRECTORY; |
| + break; |
| + case ui::AX_ROLE_DISCLOSURE_TRIANGLE: |
| + message_id = IDS_AX_ROLE_DISCLOSURE_TRIANGLE; |
| + break; |
| + case ui::AX_ROLE_DIV: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_DOCUMENT: |
| + message_id = IDS_AX_ROLE_DOCUMENT; |
| + break; |
| + case ui::AX_ROLE_EMBEDDED_OBJECT: |
| + message_id = IDS_AX_ROLE_EMBEDDED_OBJECT; |
| + break; |
| + case ui::AX_ROLE_FIGCAPTION: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_FIGURE: |
| + message_id = IDS_AX_ROLE_GRAPHIC; |
| + break; |
| + case ui::AX_ROLE_FOOTER: |
| + message_id = IDS_AX_ROLE_FOOTER; |
| + break; |
| + case ui::AX_ROLE_FORM: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_GRID: |
| + message_id = IDS_AX_ROLE_TABLE; |
| + break; |
| + case ui::AX_ROLE_GROUP: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_IFRAME: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_IFRAME_PRESENTATIONAL: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_IGNORED: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_IMAGE_MAP_LINK: |
| + message_id = IDS_AX_ROLE_LINK; |
| + break; |
| + case ui::AX_ROLE_IMAGE_MAP: |
| + message_id = IDS_AX_ROLE_GRAPHIC; |
| + break; |
| + case ui::AX_ROLE_IMAGE: |
| + message_id = IDS_AX_ROLE_GRAPHIC; |
| + break; |
| + case ui::AX_ROLE_INLINE_TEXT_BOX: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_INPUT_TIME: |
| + message_id = IDS_AX_ROLE_INPUT_TIME; |
| + break; |
| + case ui::AX_ROLE_LABEL_TEXT: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LEGEND: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LINE_BREAK: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LINK: |
| + message_id = IDS_AX_ROLE_LINK; |
| + break; |
| + case ui::AX_ROLE_LIST_BOX_OPTION: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LIST_BOX: |
| + message_id = IDS_AX_ROLE_LIST_BOX; |
| + break; |
| + case ui::AX_ROLE_LIST_ITEM: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LIST_MARKER: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LIST: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LOCATION_BAR: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_LOG: |
| + message_id = IDS_AX_ROLE_LOG; |
| + break; |
| + case ui::AX_ROLE_MAIN: |
| + message_id = IDS_AX_ROLE_MAIN_CONTENT; |
| + break; |
| + case ui::AX_ROLE_MARK: |
| + message_id = IDS_AX_ROLE_MARK; |
| + break; |
| + case ui::AX_ROLE_MARQUEE: |
| + message_id = IDS_AX_ROLE_MARQUEE; |
| + break; |
| + case ui::AX_ROLE_MATH: |
| + message_id = IDS_AX_ROLE_MATH; |
| + break; |
| + case ui::AX_ROLE_MENU_BAR: |
| + message_id = IDS_AX_ROLE_MENU_BAR; |
| + break; |
| + case ui::AX_ROLE_MENU_BUTTON: |
| + message_id = IDS_AX_ROLE_MENU_BUTTON; |
| + break; |
| + case ui::AX_ROLE_MENU_ITEM: |
| + message_id = IDS_AX_ROLE_MENU_ITEM; |
| + break; |
| + case ui::AX_ROLE_MENU_ITEM_CHECK_BOX: |
| + message_id = IDS_AX_ROLE_CHECK_BOX; |
| + break; |
| + case ui::AX_ROLE_MENU_ITEM_RADIO: |
| + message_id = IDS_AX_ROLE_RADIO; |
| + break; |
| + case ui::AX_ROLE_MENU_LIST_OPTION: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_MENU_LIST_POPUP: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_MENU: |
| + message_id = IDS_AX_ROLE_MENU; |
| + break; |
| + case ui::AX_ROLE_METER: |
| + message_id = IDS_AX_ROLE_METER; |
| + break; |
| + case ui::AX_ROLE_NAVIGATION: |
| + message_id = IDS_AX_ROLE_NAVIGATIONAL_LINK; |
| + break; |
| + case ui::AX_ROLE_NOTE: |
| + message_id = IDS_AX_ROLE_NOTE; |
| + break; |
| + case ui::AX_ROLE_OUTLINE: |
| + message_id = IDS_AX_ROLE_OUTLINE; |
| + break; |
| + case ui::AX_ROLE_PANE: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_PARAGRAPH: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_POP_UP_BUTTON: |
| + message_id = IDS_AX_ROLE_POP_UP_BUTTON; |
| + break; |
| + case ui::AX_ROLE_PRE: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_PRESENTATIONAL: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_PROGRESS_INDICATOR: |
| + message_id = IDS_AX_ROLE_PROGRESS_INDICATOR; |
| + break; |
| + case ui::AX_ROLE_RADIO_BUTTON: |
| + message_id = IDS_AX_ROLE_RADIO; |
| + break; |
| + case ui::AX_ROLE_RADIO_GROUP: |
| + message_id = IDS_AX_ROLE_RADIO_GROUP; |
| + break; |
| + case ui::AX_ROLE_REGION: |
| + message_id = IDS_AX_ROLE_REGION; |
| + break; |
| + case ui::AX_ROLE_ROOT_WEB_AREA: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_ROW_HEADER: |
| + message_id = IDS_AX_ROLE_ROW_HEADER; |
| + break; |
| + case ui::AX_ROLE_ROW: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_RUBY: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_RULER: |
| + message_id = IDS_AX_ROLE_RULER; |
| + break; |
| + case ui::AX_ROLE_SVG_ROOT: |
| + message_id = IDS_AX_ROLE_GRAPHIC; |
| + break; |
| + case ui::AX_ROLE_SCROLL_AREA: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_SCROLL_BAR: |
| + message_id = IDS_AX_ROLE_SCROLL_BAR; |
| + break; |
| + case ui::AX_ROLE_SEAMLESS_WEB_AREA: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_SEARCH: |
| + message_id = IDS_AX_ROLE_SEARCH; |
| + break; |
| + case ui::AX_ROLE_SEARCH_BOX: |
| + message_id = IDS_AX_ROLE_SEARCH_BOX; |
| + break; |
| + case ui::AX_ROLE_SLIDER: |
| + message_id = IDS_AX_ROLE_SLIDER; |
| + break; |
| + case ui::AX_ROLE_SLIDER_THUMB: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_SPIN_BUTTON_PART: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_SPIN_BUTTON: |
| + message_id = IDS_AX_ROLE_SPIN_BUTTON; |
| + break; |
| + case ui::AX_ROLE_SPLITTER: |
| + message_id = IDS_AX_ROLE_SPLITTER; |
| + break; |
| + case ui::AX_ROLE_STATIC_TEXT: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_STATUS: |
| + message_id = IDS_AX_ROLE_STATUS; |
| + break; |
| + case ui::AX_ROLE_SWITCH: |
| + message_id = IDS_AX_ROLE_SWITCH; |
| + break; |
| + case ui::AX_ROLE_TAB_GROUP: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_TAB_LIST: |
| + message_id = IDS_AX_ROLE_TAB_LIST; |
| + break; |
| + case ui::AX_ROLE_TAB_PANEL: |
| + message_id = IDS_AX_ROLE_TAB_PANEL; |
| + break; |
| + case ui::AX_ROLE_TAB: |
| + message_id = IDS_AX_ROLE_TAB; |
| + break; |
| + case ui::AX_ROLE_TABLE_HEADER_CONTAINER: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_TABLE: |
| + message_id = IDS_AX_ROLE_TABLE; |
| + break; |
| + case ui::AX_ROLE_TEXT_FIELD: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_TIME: |
| + message_id = IDS_AX_ROLE_TIME; |
| + break; |
| + case ui::AX_ROLE_TIMER: |
| + message_id = IDS_AX_ROLE_TIMER; |
| + break; |
| + case ui::AX_ROLE_TITLE_BAR: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_TOGGLE_BUTTON: |
| + message_id = IDS_AX_ROLE_TOGGLE_BUTTON; |
| + break; |
| + case ui::AX_ROLE_TOOLBAR: |
| + message_id = IDS_AX_ROLE_TOOLBAR; |
| + break; |
| + case ui::AX_ROLE_TREE_GRID: |
| + message_id = IDS_AX_ROLE_TREE_GRID; |
| + break; |
| + case ui::AX_ROLE_TREE_ITEM: |
| + message_id = IDS_AX_ROLE_TREE_ITEM; |
| + break; |
| + case ui::AX_ROLE_TREE: |
| + message_id = IDS_AX_ROLE_TREE; |
| + break; |
| + case ui::AX_ROLE_UNKNOWN: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_TOOLTIP: |
| + message_id = IDS_AX_ROLE_TOOLTIP; |
| + break; |
| + case ui::AX_ROLE_WEB_AREA: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_WEB_VIEW: |
| + // No role description. |
| + break; |
| + case ui::AX_ROLE_WINDOW: |
| + // No role description. |
| + break; |
| + } |
| + |
| + if (message_id != -1) |
| + return content_client->GetLocalizedString(message_id); |
| + |
| + return base::string16(); |
| +} |
| + |
| int BrowserAccessibilityAndroid::GetItemIndex() const { |
| int index = 0; |
| switch (GetRole()) { |