OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "webkit/glue/webaccessibility.h" | 5 #include "webkit/glue/webaccessibility.h" |
6 | 6 |
7 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" | 7 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityCache.h" |
8 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" | 8 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityObject.h" |
9 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityRole.h" | 9 #include "third_party/WebKit/WebKit/chromium/public/WebAccessibilityRole.h" |
10 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" | 10 #include "third_party/WebKit/WebKit/chromium/public/WebString.h" |
11 | 11 |
12 using WebKit::WebAccessibilityCache; | 12 using WebKit::WebAccessibilityCache; |
13 using WebKit::WebAccessibilityRole; | 13 using WebKit::WebAccessibilityRole; |
14 using WebKit::WebAccessibilityObject; | 14 using WebKit::WebAccessibilityObject; |
15 | 15 |
16 namespace webkit_glue { | 16 namespace webkit_glue { |
17 | 17 |
18 // Provides a conversion between the WebKit::WebAccessibilityRole and a role | 18 // Provides a conversion between the WebKit::WebAccessibilityRole and a role |
19 // supported on the Browser side. Listed alphabetically by the | 19 // supported on the Browser side. Listed alphabetically by the |
20 // WebAccessibilityRole (except for default role). | 20 // WebAccessibilityRole (except for default role). |
21 WebAccessibility::Role ConvertRole(WebKit::WebAccessibilityRole role) { | 21 WebAccessibility::Role ConvertRole(WebKit::WebAccessibilityRole role) { |
22 switch (role) { | 22 switch (role) { |
23 case WebKit::WebAccessibilityRoleLandmarkApplication: | 23 case WebKit::WebAccessibilityRoleAnnotation: |
| 24 return WebAccessibility::ROLE_ANNOTATION; |
| 25 case WebKit::WebAccessibilityRoleApplication: |
24 return WebAccessibility::ROLE_APPLICATION; | 26 return WebAccessibility::ROLE_APPLICATION; |
| 27 case WebKit::WebAccessibilityRoleApplicationAlert: |
| 28 return WebAccessibility::ROLE_ALERT; |
| 29 case WebKit::WebAccessibilityRoleApplicationAlertDialog: |
| 30 return WebAccessibility::ROLE_ALERT_DIALOG; |
| 31 case WebKit::WebAccessibilityRoleApplicationDialog: |
| 32 return WebAccessibility::ROLE_DIALOG; |
| 33 case WebKit::WebAccessibilityRoleApplicationLog: |
| 34 return WebAccessibility::ROLE_LOG; |
| 35 case WebKit::WebAccessibilityRoleApplicationMarquee: |
| 36 return WebAccessibility::ROLE_MARQUEE; |
| 37 case WebKit::WebAccessibilityRoleApplicationStatus: |
| 38 return WebAccessibility::ROLE_STATUS; |
| 39 case WebKit::WebAccessibilityRoleApplicationTimer: |
| 40 return WebAccessibility::ROLE_TIMER; |
| 41 case WebKit::WebAccessibilityRoleBrowser: |
| 42 return WebAccessibility::ROLE_BROWSER; |
| 43 case WebKit::WebAccessibilityRoleBusyIndicator: |
| 44 return WebAccessibility::ROLE_BUSY_INDICATOR; |
| 45 case WebKit::WebAccessibilityRoleButton: |
| 46 return WebAccessibility::ROLE_BUTTON; |
25 case WebKit::WebAccessibilityRoleCell: | 47 case WebKit::WebAccessibilityRoleCell: |
26 return WebAccessibility::ROLE_CELL; | 48 return WebAccessibility::ROLE_CELL; |
27 case WebKit::WebAccessibilityRoleCheckBox: | 49 case WebKit::WebAccessibilityRoleCheckBox: |
28 return WebAccessibility::ROLE_CHECKBUTTON; | 50 return WebAccessibility::ROLE_CHECKBOX; |
| 51 case WebKit::WebAccessibilityRoleColorWell: |
| 52 return WebAccessibility::ROLE_COLOR_WELL; |
29 case WebKit::WebAccessibilityRoleColumn: | 53 case WebKit::WebAccessibilityRoleColumn: |
30 return WebAccessibility::ROLE_COLUMN; | 54 return WebAccessibility::ROLE_COLUMN; |
31 case WebKit::WebAccessibilityRoleColumnHeader: | 55 case WebKit::WebAccessibilityRoleColumnHeader: |
32 return WebAccessibility::ROLE_COLUMNHEADER; | 56 return WebAccessibility::ROLE_COLUMN_HEADER; |
| 57 case WebKit::WebAccessibilityRoleComboBox: |
| 58 return WebAccessibility::ROLE_COMBO_BOX; |
| 59 case WebKit::WebAccessibilityRoleDefinitionListDefinition: |
| 60 return WebAccessibility::ROLE_DEFINITION_LIST_DEFINITION; |
| 61 case WebKit::WebAccessibilityRoleDefinitionListTerm: |
| 62 return WebAccessibility::ROLE_DEFINITION_LIST_TERM; |
| 63 case WebKit::WebAccessibilityRoleDirectory: |
| 64 return WebAccessibility::ROLE_DIRECTORY; |
| 65 case WebKit::WebAccessibilityRoleDisclosureTriangle: |
| 66 return WebAccessibility::ROLE_DISCLOSURE_TRIANGLE; |
| 67 case WebKit::WebAccessibilityRoleDocument: |
| 68 return WebAccessibility::ROLE_DOCUMENT; |
33 case WebKit::WebAccessibilityRoleDocumentArticle: | 69 case WebKit::WebAccessibilityRoleDocumentArticle: |
34 case WebKit::WebAccessibilityRoleWebArea: | 70 return WebAccessibility::ROLE_ARTICLE; |
35 return WebAccessibility::ROLE_DOCUMENT; | 71 case WebKit::WebAccessibilityRoleDocumentMath: |
| 72 return WebAccessibility::ROLE_MATH; |
| 73 case WebKit::WebAccessibilityRoleDocumentNote: |
| 74 return WebAccessibility::ROLE_NOTE; |
| 75 case WebKit::WebAccessibilityRoleDocumentRegion: |
| 76 return WebAccessibility::ROLE_REGION; |
| 77 case WebKit::WebAccessibilityRoleDrawer: |
| 78 return WebAccessibility::ROLE_DRAWER; |
| 79 case WebKit::WebAccessibilityRoleEditableText: |
| 80 return WebAccessibility::ROLE_EDITABLE_TEXT; |
| 81 case WebKit::WebAccessibilityRoleGrid: |
| 82 return WebAccessibility::ROLE_GRID; |
| 83 case WebKit::WebAccessibilityRoleGroup: |
| 84 return WebAccessibility::ROLE_GROUP; |
| 85 case WebKit::WebAccessibilityRoleGrowArea: |
| 86 return WebAccessibility::ROLE_GROW_AREA; |
| 87 case WebKit::WebAccessibilityRoleHeading: |
| 88 return WebAccessibility::ROLE_HEADING; |
| 89 case WebKit::WebAccessibilityRoleHelpTag: |
| 90 return WebAccessibility::ROLE_HELP_TAG; |
| 91 case WebKit::WebAccessibilityRoleIgnored: |
| 92 return WebAccessibility::ROLE_IGNORED; |
| 93 case WebKit::WebAccessibilityRoleImage: |
| 94 return WebAccessibility::ROLE_IMAGE; |
36 case WebKit::WebAccessibilityRoleImageMap: | 95 case WebKit::WebAccessibilityRoleImageMap: |
37 case WebKit::WebAccessibilityRoleImage: | 96 return WebAccessibility::ROLE_IMAGE_MAP; |
38 return WebAccessibility::ROLE_GRAPHIC; | 97 case WebKit::WebAccessibilityRoleImageMapLink: |
39 case WebKit::WebAccessibilityRoleDocumentRegion: | 98 return WebAccessibility::ROLE_IMAGE_MAP_LINK; |
40 case WebKit::WebAccessibilityRoleRadioGroup: | 99 case WebKit::WebAccessibilityRoleIncrementor: |
41 case WebKit::WebAccessibilityRoleGroup: | 100 return WebAccessibility::ROLE_INCREMENTOR; |
42 return WebAccessibility::ROLE_GROUPING; | 101 case WebKit::WebAccessibilityRoleLandmarkApplication: |
| 102 return WebAccessibility::ROLE_LANDMARK_APPLICATION; |
| 103 case WebKit::WebAccessibilityRoleLandmarkBanner: |
| 104 return WebAccessibility::ROLE_LANDMARK_BANNER; |
| 105 case WebKit::WebAccessibilityRoleLandmarkComplementary: |
| 106 return WebAccessibility::ROLE_LANDMARK_COMPLEMENTARY; |
| 107 case WebKit::WebAccessibilityRoleLandmarkContentInfo: |
| 108 return WebAccessibility::ROLE_LANDMARK_CONTENTINFO; |
| 109 case WebKit::WebAccessibilityRoleLandmarkMain: |
| 110 return WebAccessibility::ROLE_LANDMARK_MAIN; |
| 111 case WebKit::WebAccessibilityRoleLandmarkNavigation: |
| 112 return WebAccessibility::ROLE_LANDMARK_NAVIGATION; |
| 113 case WebKit::WebAccessibilityRoleLandmarkSearch: |
| 114 return WebAccessibility::ROLE_LANDMARK_SEARCH; |
43 case WebKit::WebAccessibilityRoleLink: | 115 case WebKit::WebAccessibilityRoleLink: |
44 case WebKit::WebAccessibilityRoleWebCoreLink: | |
45 return WebAccessibility::ROLE_LINK; | 116 return WebAccessibility::ROLE_LINK; |
46 case WebKit::WebAccessibilityRoleList: | 117 case WebKit::WebAccessibilityRoleList: |
47 return WebAccessibility::ROLE_LIST; | 118 return WebAccessibility::ROLE_LIST; |
48 case WebKit::WebAccessibilityRoleListBox: | 119 case WebKit::WebAccessibilityRoleListBox: |
49 return WebAccessibility::ROLE_LISTBOX; | 120 return WebAccessibility::ROLE_LISTBOX; |
50 case WebKit::WebAccessibilityRoleListBoxOption: | 121 case WebKit::WebAccessibilityRoleListBoxOption: |
51 return WebAccessibility::ROLE_LISTITEM; | 122 return WebAccessibility::ROLE_LISTBOX_OPTION; |
| 123 case WebKit::WebAccessibilityRoleListItem: |
| 124 return WebAccessibility::ROLE_LIST_ITEM; |
| 125 case WebKit::WebAccessibilityRoleListMarker: |
| 126 return WebAccessibility::ROLE_LIST_MARKER; |
| 127 case WebKit::WebAccessibilityRoleMatte: |
| 128 return WebAccessibility::ROLE_MATTE; |
| 129 case WebKit::WebAccessibilityRoleMenu: |
| 130 return WebAccessibility::ROLE_MENU; |
52 case WebKit::WebAccessibilityRoleMenuBar: | 131 case WebKit::WebAccessibilityRoleMenuBar: |
53 return WebAccessibility::ROLE_MENUBAR; | 132 return WebAccessibility::ROLE_MENU_BAR; |
54 case WebKit::WebAccessibilityRoleMenuButton: | 133 case WebKit::WebAccessibilityRoleMenuButton: |
| 134 return WebAccessibility::ROLE_MENU_BUTTON; |
55 case WebKit::WebAccessibilityRoleMenuItem: | 135 case WebKit::WebAccessibilityRoleMenuItem: |
56 return WebAccessibility::ROLE_MENUITEM; | 136 return WebAccessibility::ROLE_MENU_ITEM; |
57 case WebKit::WebAccessibilityRoleMenu: | 137 case WebKit::WebAccessibilityRoleMenuListOption: |
58 return WebAccessibility::ROLE_MENUPOPUP; | 138 return WebAccessibility::ROLE_MENU_LIST_OPTION; |
| 139 case WebKit::WebAccessibilityRoleMenuListPopup: |
| 140 return WebAccessibility::ROLE_MENU_LIST_POPUP; |
59 case WebKit::WebAccessibilityRoleOutline: | 141 case WebKit::WebAccessibilityRoleOutline: |
60 return WebAccessibility::ROLE_OUTLINE; | 142 return WebAccessibility::ROLE_OUTLINE; |
61 case WebKit::WebAccessibilityRoleTabGroup: | 143 case WebKit::WebAccessibilityRolePopUpButton: |
62 return WebAccessibility::ROLE_PAGETABLIST; | 144 return WebAccessibility::ROLE_POPUP_BUTTON; |
63 case WebKit::WebAccessibilityRoleProgressIndicator: | 145 case WebKit::WebAccessibilityRoleProgressIndicator: |
64 return WebAccessibility::ROLE_PROGRESSBAR; | 146 return WebAccessibility::ROLE_PROGRESS_INDICATOR; |
65 case WebKit::WebAccessibilityRoleButton: | |
66 return WebAccessibility::ROLE_PUSHBUTTON; | |
67 case WebKit::WebAccessibilityRoleRadioButton: | 147 case WebKit::WebAccessibilityRoleRadioButton: |
68 return WebAccessibility::ROLE_RADIOBUTTON; | 148 return WebAccessibility::ROLE_RADIO_BUTTON; |
| 149 case WebKit::WebAccessibilityRoleRadioGroup: |
| 150 return WebAccessibility::ROLE_RADIO_GROUP; |
69 case WebKit::WebAccessibilityRoleRow: | 151 case WebKit::WebAccessibilityRoleRow: |
70 return WebAccessibility::ROLE_ROW; | 152 return WebAccessibility::ROLE_ROW; |
71 case WebKit::WebAccessibilityRoleRowHeader: | 153 case WebKit::WebAccessibilityRoleRowHeader: |
72 return WebAccessibility::ROLE_ROWHEADER; | 154 return WebAccessibility::ROLE_ROW_HEADER; |
73 case WebKit::WebAccessibilityRoleSplitter: | 155 case WebKit::WebAccessibilityRoleRuler: |
74 return WebAccessibility::ROLE_SEPARATOR; | 156 return WebAccessibility::ROLE_RULER; |
| 157 case WebKit::WebAccessibilityRoleRulerMarker: |
| 158 return WebAccessibility::ROLE_RULER_MARKER; |
| 159 case WebKit::WebAccessibilityRoleScrollArea: |
| 160 return WebAccessibility::ROLE_SCROLLAREA; |
| 161 case WebKit::WebAccessibilityRoleScrollBar: |
| 162 return WebAccessibility::ROLE_SCROLLBAR; |
| 163 case WebKit::WebAccessibilityRoleSheet: |
| 164 return WebAccessibility::ROLE_SHEET; |
75 case WebKit::WebAccessibilityRoleSlider: | 165 case WebKit::WebAccessibilityRoleSlider: |
76 return WebAccessibility::ROLE_SLIDER; | 166 return WebAccessibility::ROLE_SLIDER; |
| 167 case WebKit::WebAccessibilityRoleSliderThumb: |
| 168 return WebAccessibility::ROLE_SLIDER_THUMB; |
| 169 case WebKit::WebAccessibilityRoleSplitGroup: |
| 170 return WebAccessibility::ROLE_SPLIT_GROUP; |
| 171 case WebKit::WebAccessibilityRoleSplitter: |
| 172 return WebAccessibility::ROLE_SPLITTER; |
77 case WebKit::WebAccessibilityRoleStaticText: | 173 case WebKit::WebAccessibilityRoleStaticText: |
78 return WebAccessibility::ROLE_STATICTEXT; | 174 return WebAccessibility::ROLE_STATIC_TEXT; |
79 case WebKit::WebAccessibilityRoleApplicationStatus: | 175 case WebKit::WebAccessibilityRoleSystemWide: |
80 return WebAccessibility::ROLE_STATUSBAR; | 176 return WebAccessibility::ROLE_SYSTEM_WIDE; |
| 177 case WebKit::WebAccessibilityRoleTab: |
| 178 return WebAccessibility::ROLE_TAB; |
| 179 case WebKit::WebAccessibilityRoleTabGroup: |
| 180 return WebAccessibility::ROLE_TAB_GROUP; |
| 181 case WebKit::WebAccessibilityRoleTabList: |
| 182 return WebAccessibility::ROLE_TAB_LIST; |
| 183 case WebKit::WebAccessibilityRoleTabPanel: |
| 184 return WebAccessibility::ROLE_TAB_PANEL; |
81 case WebKit::WebAccessibilityRoleTable: | 185 case WebKit::WebAccessibilityRoleTable: |
82 return WebAccessibility::ROLE_TABLE; | 186 return WebAccessibility::ROLE_TABLE; |
83 case WebKit::WebAccessibilityRoleListMarker: | 187 case WebKit::WebAccessibilityRoleTableHeaderContainer: |
| 188 return WebAccessibility::ROLE_TABLE_HEADER_CONTAINER; |
| 189 case WebKit::WebAccessibilityRoleTextArea: |
| 190 return WebAccessibility::ROLE_TEXTAREA; |
84 case WebKit::WebAccessibilityRoleTextField: | 191 case WebKit::WebAccessibilityRoleTextField: |
85 case WebKit::WebAccessibilityRoleTextArea: | 192 return WebAccessibility::ROLE_TEXT_FIELD; |
86 return WebAccessibility::ROLE_TEXT; | |
87 case WebKit::WebAccessibilityRoleToolbar: | 193 case WebKit::WebAccessibilityRoleToolbar: |
88 return WebAccessibility::ROLE_TOOLBAR; | 194 return WebAccessibility::ROLE_TOOLBAR; |
| 195 case WebKit::WebAccessibilityRoleTreeGrid: |
| 196 return WebAccessibility::ROLE_TREE_GRID; |
| 197 case WebKit::WebAccessibilityRoleTreeItemRole: |
| 198 return WebAccessibility::ROLE_TREE_ITEM; |
| 199 case WebKit::WebAccessibilityRoleTreeRole: |
| 200 return WebAccessibility::ROLE_TREE; |
89 case WebKit::WebAccessibilityRoleUserInterfaceTooltip: | 201 case WebKit::WebAccessibilityRoleUserInterfaceTooltip: |
90 return WebAccessibility::ROLE_TOOLTIP; | 202 return WebAccessibility::ROLE_TOOLTIP; |
91 case WebKit::WebAccessibilityRoleDocument: | 203 case WebKit::WebAccessibilityRoleValueIndicator: |
92 case WebKit::WebAccessibilityRoleUnknown: | 204 return WebAccessibility::ROLE_VALUE_INDICATOR; |
| 205 case WebKit::WebAccessibilityRoleWebArea: |
| 206 return WebAccessibility::ROLE_WEB_AREA; |
| 207 case WebKit::WebAccessibilityRoleWebCoreLink: |
| 208 return WebAccessibility::ROLE_WEBCORE_LINK; |
| 209 case WebKit::WebAccessibilityRoleWindow: |
| 210 return WebAccessibility::ROLE_WINDOW; |
| 211 |
93 default: | 212 default: |
94 // This is the default role. | 213 return WebAccessibility::ROLE_UNKNOWN; |
95 return WebAccessibility::ROLE_CLIENT; | |
96 } | 214 } |
97 } | 215 } |
98 | 216 |
99 uint32 ConvertState(const WebAccessibilityObject& o) { | 217 uint32 ConvertState(const WebAccessibilityObject& o) { |
100 uint32 state = 0; | 218 uint32 state = 0; |
101 if (o.isChecked()) | 219 if (o.isChecked()) |
102 state |= (1 << WebAccessibility::STATE_CHECKED); | 220 state |= (1 << WebAccessibility::STATE_CHECKED); |
103 | 221 |
104 if (o.canSetFocusAttribute()) | 222 if (o.canSetFocusAttribute()) |
105 state |= (1 << WebAccessibility::STATE_FOCUSABLE); | 223 state |= (1 << WebAccessibility::STATE_FOCUSABLE); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 266 |
149 WebAccessibility::WebAccessibility(const WebKit::WebAccessibilityObject& src, | 267 WebAccessibility::WebAccessibility(const WebKit::WebAccessibilityObject& src, |
150 WebKit::WebAccessibilityCache* cache) { | 268 WebKit::WebAccessibilityCache* cache) { |
151 Init(src, cache); | 269 Init(src, cache); |
152 } | 270 } |
153 | 271 |
154 void WebAccessibility::Init(const WebKit::WebAccessibilityObject& src, | 272 void WebAccessibility::Init(const WebKit::WebAccessibilityObject& src, |
155 WebKit::WebAccessibilityCache* cache) { | 273 WebKit::WebAccessibilityCache* cache) { |
156 name = src.title(); | 274 name = src.title(); |
157 value = src.stringValue(); | 275 value = src.stringValue(); |
158 action = src.actionVerb(); | |
159 description = src.accessibilityDescription(); | |
160 help = src.helpText(); | |
161 shortcut = src.keyboardShortcut(); | |
162 role = ConvertRole(src.roleValue()); | 276 role = ConvertRole(src.roleValue()); |
163 state = ConvertState(src); | 277 state = ConvertState(src); |
164 location = src.boundingBoxRect(); | 278 location = src.boundingBoxRect(); |
165 | 279 |
| 280 if (src.actionVerb().length()) |
| 281 attributes[ATTR_ACTION] = src.actionVerb(); |
| 282 if (src.accessibilityDescription().length()) |
| 283 attributes[ATTR_DESCRIPTION] = src.accessibilityDescription(); |
| 284 if (src.helpText().length()) |
| 285 attributes[ATTR_HELP] = src.helpText(); |
| 286 if (src.keyboardShortcut().length()) |
| 287 attributes[ATTR_SHORTCUT] = src.keyboardShortcut(); |
| 288 |
166 // Add the source object to the cache and store its id. | 289 // Add the source object to the cache and store its id. |
167 id = cache->addOrGetId(src); | 290 id = cache->addOrGetId(src); |
168 | 291 |
169 // Recursively create children. | 292 // Recursively create children. |
170 int child_count = src.childCount(); | 293 int child_count = src.childCount(); |
171 children.resize(child_count); | 294 children.resize(child_count); |
172 for (int i = 0; i < child_count; i++) { | 295 for (int i = 0; i < child_count; i++) { |
173 children[i].Init(src.childAt(i), cache); | 296 children[i].Init(src.childAt(i), cache); |
174 } | 297 } |
175 } | 298 } |
176 | 299 |
177 } // namespace webkit_glue | 300 } // namespace webkit_glue |
OLD | NEW |