OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "content/renderer/accessibility/blink_ax_enum_conversion.h" |
| 6 |
| 7 #include "base/logging.h" |
| 8 |
| 9 namespace content { |
| 10 |
| 11 uint32 AXStateFromBlink(const blink::WebAXObject& o) { |
| 12 uint32 state = 0; |
| 13 if (o.isChecked()) |
| 14 state |= (1 << ui::AX_STATE_CHECKED); |
| 15 |
| 16 if (o.isCollapsed()) |
| 17 state |= (1 << ui::AX_STATE_COLLAPSED); |
| 18 |
| 19 if (o.canSetFocusAttribute()) |
| 20 state |= (1 << ui::AX_STATE_FOCUSABLE); |
| 21 |
| 22 if (o.isFocused()) |
| 23 state |= (1 << ui::AX_STATE_FOCUSED); |
| 24 |
| 25 if (o.role() == blink::WebAXRolePopUpButton || |
| 26 o.ariaHasPopup()) { |
| 27 state |= (1 << ui::AX_STATE_HASPOPUP); |
| 28 if (!o.isCollapsed()) |
| 29 state |= (1 << ui::AX_STATE_EXPANDED); |
| 30 } |
| 31 |
| 32 if (o.isHovered()) |
| 33 state |= (1 << ui::AX_STATE_HOVERED); |
| 34 |
| 35 if (o.isIndeterminate()) |
| 36 state |= (1 << ui::AX_STATE_INDETERMINATE); |
| 37 |
| 38 if (!o.isVisible()) |
| 39 state |= (1 << ui::AX_STATE_INVISIBLE); |
| 40 |
| 41 if (o.isLinked()) |
| 42 state |= (1 << ui::AX_STATE_LINKED); |
| 43 |
| 44 if (o.isMultiSelectable()) |
| 45 state |= (1 << ui::AX_STATE_MULTISELECTABLE); |
| 46 |
| 47 if (o.isOffScreen()) |
| 48 state |= (1 << ui::AX_STATE_OFFSCREEN); |
| 49 |
| 50 if (o.isPressed()) |
| 51 state |= (1 << ui::AX_STATE_PRESSED); |
| 52 |
| 53 if (o.isPasswordField()) |
| 54 state |= (1 << ui::AX_STATE_PROTECTED); |
| 55 |
| 56 if (o.isReadOnly()) |
| 57 state |= (1 << ui::AX_STATE_READONLY); |
| 58 |
| 59 if (o.isRequired()) |
| 60 state |= (1 << ui::AX_STATE_REQUIRED); |
| 61 |
| 62 if (o.canSetSelectedAttribute()) |
| 63 state |= (1 << ui::AX_STATE_SELECTABLE); |
| 64 |
| 65 if (o.isSelected()) |
| 66 state |= (1 << ui::AX_STATE_SELECTED); |
| 67 |
| 68 if (o.isVisited()) |
| 69 state |= (1 << ui::AX_STATE_VISITED); |
| 70 |
| 71 if (o.isEnabled()) |
| 72 state |= (1 << blink::WebAXStateEnabled); |
| 73 |
| 74 if (o.isVertical()) |
| 75 state |= (1 << ui::AX_STATE_VERTICAL); |
| 76 |
| 77 if (o.isVisited()) |
| 78 state |= (1 << ui::AX_STATE_VISITED); |
| 79 |
| 80 return state; |
| 81 } |
| 82 |
| 83 ui::AXRole AXRoleFromBlink(blink::WebAXRole role) { |
| 84 switch (role) { |
| 85 case blink::WebAXRoleAlert: |
| 86 return ui::AX_ROLE_ALERT; |
| 87 case blink::WebAXRoleAlertDialog: |
| 88 return ui::AX_ROLE_ALERT_DIALOG; |
| 89 case blink::WebAXRoleAnnotation: |
| 90 return ui::AX_ROLE_ANNOTATION; |
| 91 case blink::WebAXRoleApplication: |
| 92 return ui::AX_ROLE_APPLICATION; |
| 93 case blink::WebAXRoleArticle: |
| 94 return ui::AX_ROLE_ARTICLE; |
| 95 case blink::WebAXRoleBanner: |
| 96 return ui::AX_ROLE_BANNER; |
| 97 case blink::WebAXRoleBrowser: |
| 98 return ui::AX_ROLE_BROWSER; |
| 99 case blink::WebAXRoleBusyIndicator: |
| 100 return ui::AX_ROLE_BUSY_INDICATOR; |
| 101 case blink::WebAXRoleButton: |
| 102 return ui::AX_ROLE_BUTTON; |
| 103 case blink::WebAXRoleCanvas: |
| 104 return ui::AX_ROLE_CANVAS; |
| 105 case blink::WebAXRoleCell: |
| 106 return ui::AX_ROLE_CELL; |
| 107 case blink::WebAXRoleCheckBox: |
| 108 return ui::AX_ROLE_CHECK_BOX; |
| 109 case blink::WebAXRoleColorWell: |
| 110 return ui::AX_ROLE_COLOR_WELL; |
| 111 case blink::WebAXRoleColumn: |
| 112 return ui::AX_ROLE_COLUMN; |
| 113 case blink::WebAXRoleColumnHeader: |
| 114 return ui::AX_ROLE_COLUMN_HEADER; |
| 115 case blink::WebAXRoleComboBox: |
| 116 return ui::AX_ROLE_COMBO_BOX; |
| 117 case blink::WebAXRoleComplementary: |
| 118 return ui::AX_ROLE_COMPLEMENTARY; |
| 119 case blink::WebAXRoleContentInfo: |
| 120 return ui::AX_ROLE_CONTENT_INFO; |
| 121 case blink::WebAXRoleDefinition: |
| 122 return ui::AX_ROLE_DEFINITION; |
| 123 case blink::WebAXRoleDescriptionListDetail: |
| 124 return ui::AX_ROLE_DESCRIPTION_LIST_DETAIL; |
| 125 case blink::WebAXRoleDescriptionListTerm: |
| 126 return ui::AX_ROLE_DESCRIPTION_LIST_TERM; |
| 127 case blink::WebAXRoleDialog: |
| 128 return ui::AX_ROLE_DIALOG; |
| 129 case blink::WebAXRoleDirectory: |
| 130 return ui::AX_ROLE_DIRECTORY; |
| 131 case blink::WebAXRoleDisclosureTriangle: |
| 132 return ui::AX_ROLE_DISCLOSURE_TRIANGLE; |
| 133 case blink::WebAXRoleDiv: |
| 134 return ui::AX_ROLE_DIV; |
| 135 case blink::WebAXRoleDocument: |
| 136 return ui::AX_ROLE_DOCUMENT; |
| 137 case blink::WebAXRoleDrawer: |
| 138 return ui::AX_ROLE_DRAWER; |
| 139 case blink::WebAXRoleEditableText: |
| 140 return ui::AX_ROLE_EDITABLE_TEXT; |
| 141 case blink::WebAXRoleFooter: |
| 142 return ui::AX_ROLE_FOOTER; |
| 143 case blink::WebAXRoleForm: |
| 144 return ui::AX_ROLE_FORM; |
| 145 case blink::WebAXRoleGrid: |
| 146 return ui::AX_ROLE_GRID; |
| 147 case blink::WebAXRoleGroup: |
| 148 return ui::AX_ROLE_GROUP; |
| 149 case blink::WebAXRoleGrowArea: |
| 150 return ui::AX_ROLE_GROW_AREA; |
| 151 case blink::WebAXRoleHeading: |
| 152 return ui::AX_ROLE_HEADING; |
| 153 case blink::WebAXRoleHelpTag: |
| 154 return ui::AX_ROLE_HELP_TAG; |
| 155 case blink::WebAXRoleHorizontalRule: |
| 156 return ui::AX_ROLE_HORIZONTAL_RULE; |
| 157 case blink::WebAXRoleIgnored: |
| 158 return ui::AX_ROLE_IGNORED; |
| 159 case blink::WebAXRoleImage: |
| 160 return ui::AX_ROLE_IMAGE; |
| 161 case blink::WebAXRoleImageMap: |
| 162 return ui::AX_ROLE_IMAGE_MAP; |
| 163 case blink::WebAXRoleImageMapLink: |
| 164 return ui::AX_ROLE_IMAGE_MAP_LINK; |
| 165 case blink::WebAXRoleIncrementor: |
| 166 return ui::AX_ROLE_INCREMENTOR; |
| 167 case blink::WebAXRoleInlineTextBox: |
| 168 return ui::AX_ROLE_INLINE_TEXT_BOX; |
| 169 case blink::WebAXRoleLabel: |
| 170 return ui::AX_ROLE_LABEL; |
| 171 case blink::WebAXRoleLegend: |
| 172 return ui::AX_ROLE_LEGEND; |
| 173 case blink::WebAXRoleLink: |
| 174 return ui::AX_ROLE_LINK; |
| 175 case blink::WebAXRoleList: |
| 176 return ui::AX_ROLE_LIST; |
| 177 case blink::WebAXRoleListBox: |
| 178 return ui::AX_ROLE_LIST_BOX; |
| 179 case blink::WebAXRoleListBoxOption: |
| 180 return ui::AX_ROLE_LIST_BOX_OPTION; |
| 181 case blink::WebAXRoleListItem: |
| 182 return ui::AX_ROLE_LIST_ITEM; |
| 183 case blink::WebAXRoleListMarker: |
| 184 return ui::AX_ROLE_LIST_MARKER; |
| 185 case blink::WebAXRoleLog: |
| 186 return ui::AX_ROLE_LOG; |
| 187 case blink::WebAXRoleMain: |
| 188 return ui::AX_ROLE_MAIN; |
| 189 case blink::WebAXRoleMarquee: |
| 190 return ui::AX_ROLE_MARQUEE; |
| 191 case blink::WebAXRoleMath: |
| 192 return ui::AX_ROLE_MATH; |
| 193 case blink::WebAXRoleMathElement: |
| 194 return ui::AX_ROLE_MATH_ELEMENT; |
| 195 case blink::WebAXRoleMatte: |
| 196 return ui::AX_ROLE_MATTE; |
| 197 case blink::WebAXRoleMenu: |
| 198 return ui::AX_ROLE_MENU; |
| 199 case blink::WebAXRoleMenuBar: |
| 200 return ui::AX_ROLE_MENU_BAR; |
| 201 case blink::WebAXRoleMenuButton: |
| 202 return ui::AX_ROLE_MENU_BUTTON; |
| 203 case blink::WebAXRoleMenuItem: |
| 204 return ui::AX_ROLE_MENU_ITEM; |
| 205 case blink::WebAXRoleMenuListOption: |
| 206 return ui::AX_ROLE_MENU_LIST_OPTION; |
| 207 case blink::WebAXRoleMenuListPopup: |
| 208 return ui::AX_ROLE_MENU_LIST_POPUP; |
| 209 case blink::WebAXRoleNavigation: |
| 210 return ui::AX_ROLE_NAVIGATION; |
| 211 case blink::WebAXRoleNote: |
| 212 return ui::AX_ROLE_NOTE; |
| 213 case blink::WebAXRoleOutline: |
| 214 return ui::AX_ROLE_OUTLINE; |
| 215 case blink::WebAXRoleParagraph: |
| 216 return ui::AX_ROLE_PARAGRAPH; |
| 217 case blink::WebAXRolePopUpButton: |
| 218 return ui::AX_ROLE_POP_UP_BUTTON; |
| 219 case blink::WebAXRolePresentational: |
| 220 return ui::AX_ROLE_PRESENTATIONAL; |
| 221 case blink::WebAXRoleProgressIndicator: |
| 222 return ui::AX_ROLE_PROGRESS_INDICATOR; |
| 223 case blink::WebAXRoleRadioButton: |
| 224 return ui::AX_ROLE_RADIO_BUTTON; |
| 225 case blink::WebAXRoleRadioGroup: |
| 226 return ui::AX_ROLE_RADIO_GROUP; |
| 227 case blink::WebAXRoleRegion: |
| 228 return ui::AX_ROLE_REGION; |
| 229 case blink::WebAXRoleRootWebArea: |
| 230 return ui::AX_ROLE_ROOT_WEB_AREA; |
| 231 case blink::WebAXRoleRow: |
| 232 return ui::AX_ROLE_ROW; |
| 233 case blink::WebAXRoleRowHeader: |
| 234 return ui::AX_ROLE_ROW_HEADER; |
| 235 case blink::WebAXRoleRuler: |
| 236 return ui::AX_ROLE_RULER; |
| 237 case blink::WebAXRoleRulerMarker: |
| 238 return ui::AX_ROLE_RULER_MARKER; |
| 239 case blink::WebAXRoleSVGRoot: |
| 240 return ui::AX_ROLE_SVG_ROOT; |
| 241 case blink::WebAXRoleScrollArea: |
| 242 return ui::AX_ROLE_SCROLL_AREA; |
| 243 case blink::WebAXRoleScrollBar: |
| 244 return ui::AX_ROLE_SCROLL_BAR; |
| 245 case blink::WebAXRoleSeamlessWebArea: |
| 246 return ui::AX_ROLE_SEAMLESS_WEB_AREA; |
| 247 case blink::WebAXRoleSearch: |
| 248 return ui::AX_ROLE_SEARCH; |
| 249 case blink::WebAXRoleSheet: |
| 250 return ui::AX_ROLE_SHEET; |
| 251 case blink::WebAXRoleSlider: |
| 252 return ui::AX_ROLE_SLIDER; |
| 253 case blink::WebAXRoleSliderThumb: |
| 254 return ui::AX_ROLE_SLIDER_THUMB; |
| 255 case blink::WebAXRoleSpinButton: |
| 256 return ui::AX_ROLE_SPIN_BUTTON; |
| 257 case blink::WebAXRoleSpinButtonPart: |
| 258 return ui::AX_ROLE_SPIN_BUTTON_PART; |
| 259 case blink::WebAXRoleSplitGroup: |
| 260 return ui::AX_ROLE_SPLIT_GROUP; |
| 261 case blink::WebAXRoleSplitter: |
| 262 return ui::AX_ROLE_SPLITTER; |
| 263 case blink::WebAXRoleStaticText: |
| 264 return ui::AX_ROLE_STATIC_TEXT; |
| 265 case blink::WebAXRoleStatus: |
| 266 return ui::AX_ROLE_STATUS; |
| 267 case blink::WebAXRoleSystemWide: |
| 268 return ui::AX_ROLE_SYSTEM_WIDE; |
| 269 case blink::WebAXRoleTab: |
| 270 return ui::AX_ROLE_TAB; |
| 271 case blink::WebAXRoleTabGroup: |
| 272 return ui::AX_ROLE_TAB_GROUP; |
| 273 case blink::WebAXRoleTabList: |
| 274 return ui::AX_ROLE_TAB_LIST; |
| 275 case blink::WebAXRoleTabPanel: |
| 276 return ui::AX_ROLE_TAB_PANEL; |
| 277 case blink::WebAXRoleTable: |
| 278 return ui::AX_ROLE_TABLE; |
| 279 case blink::WebAXRoleTableHeaderContainer: |
| 280 return ui::AX_ROLE_TABLE_HEADER_CONTAINER; |
| 281 case blink::WebAXRoleTextArea: |
| 282 return ui::AX_ROLE_TEXT_AREA; |
| 283 case blink::WebAXRoleTextField: |
| 284 return ui::AX_ROLE_TEXT_FIELD; |
| 285 case blink::WebAXRoleTimer: |
| 286 return ui::AX_ROLE_TIMER; |
| 287 case blink::WebAXRoleToggleButton: |
| 288 return ui::AX_ROLE_TOGGLE_BUTTON; |
| 289 case blink::WebAXRoleToolbar: |
| 290 return ui::AX_ROLE_TOOLBAR; |
| 291 case blink::WebAXRoleTree: |
| 292 return ui::AX_ROLE_TREE; |
| 293 case blink::WebAXRoleTreeGrid: |
| 294 return ui::AX_ROLE_TREE_GRID; |
| 295 case blink::WebAXRoleTreeItem: |
| 296 return ui::AX_ROLE_TREE_ITEM; |
| 297 case blink::WebAXRoleUnknown: |
| 298 return ui::AX_ROLE_UNKNOWN; |
| 299 case blink::WebAXRoleUserInterfaceTooltip: |
| 300 return ui::AX_ROLE_TOOLTIP; |
| 301 case blink::WebAXRoleValueIndicator: |
| 302 return ui::AX_ROLE_VALUE_INDICATOR; |
| 303 case blink::WebAXRoleWebArea: |
| 304 return ui::AX_ROLE_WEB_AREA; |
| 305 case blink::WebAXRoleWindow: |
| 306 return ui::AX_ROLE_WINDOW; |
| 307 } |
| 308 |
| 309 NOTREACHED(); |
| 310 return static_cast<ui::AXRole>(-1); |
| 311 } |
| 312 |
| 313 ui::AXEvent AXEventFromBlink(blink::WebAXEvent event) { |
| 314 switch (event) { |
| 315 case blink::WebAXEventActiveDescendantChanged: |
| 316 return ui::AX_EVENT_ACTIVEDESCENDANTCHANGED; |
| 317 case blink::WebAXEventAlert: |
| 318 return ui::AX_EVENT_ALERT; |
| 319 case blink::WebAXEventAriaAttributeChanged: |
| 320 return ui::AX_EVENT_ARIA_ATTRIBUTE_CHANGED; |
| 321 case blink::WebAXEventAutocorrectionOccured: |
| 322 return ui::AX_EVENT_AUTOCORRECTION_OCCURED; |
| 323 case blink::WebAXEventBlur: |
| 324 return ui::AX_EVENT_BLUR; |
| 325 case blink::WebAXEventCheckedStateChanged: |
| 326 return ui::AX_EVENT_CHECKED_STATE_CHANGED; |
| 327 case blink::WebAXEventChildrenChanged: |
| 328 return ui::AX_EVENT_CHILDREN_CHANGED; |
| 329 case blink::WebAXEventFocus: |
| 330 return ui::AX_EVENT_FOCUS; |
| 331 case blink::WebAXEventHide: |
| 332 return ui::AX_EVENT_HIDE; |
| 333 case blink::WebAXEventInvalidStatusChanged: |
| 334 return ui::AX_EVENT_INVALID_STATUS_CHANGED; |
| 335 case blink::WebAXEventLayoutComplete: |
| 336 return ui::AX_EVENT_LAYOUT_COMPLETE; |
| 337 case blink::WebAXEventLiveRegionChanged: |
| 338 return ui::AX_EVENT_LIVE_REGION_CHANGED; |
| 339 case blink::WebAXEventLoadComplete: |
| 340 return ui::AX_EVENT_LOAD_COMPLETE; |
| 341 case blink::WebAXEventLocationChanged: |
| 342 return ui::AX_EVENT_LOCATION_CHANGED; |
| 343 case blink::WebAXEventMenuListItemSelected: |
| 344 return ui::AX_EVENT_MENU_LIST_ITEM_SELECTED; |
| 345 case blink::WebAXEventMenuListValueChanged: |
| 346 return ui::AX_EVENT_MENU_LIST_VALUE_CHANGED; |
| 347 case blink::WebAXEventRowCollapsed: |
| 348 return ui::AX_EVENT_ROW_COLLAPSED; |
| 349 case blink::WebAXEventRowCountChanged: |
| 350 return ui::AX_EVENT_ROW_COUNT_CHANGED; |
| 351 case blink::WebAXEventRowExpanded: |
| 352 return ui::AX_EVENT_ROW_EXPANDED; |
| 353 case blink::WebAXEventScrolledToAnchor: |
| 354 return ui::AX_EVENT_SCROLLED_TO_ANCHOR; |
| 355 case blink::WebAXEventSelectedChildrenChanged: |
| 356 return ui::AX_EVENT_SELECTED_CHILDREN_CHANGED; |
| 357 case blink::WebAXEventSelectedTextChanged: |
| 358 return ui::AX_EVENT_SELECTED_TEXT_CHANGED; |
| 359 case blink::WebAXEventShow: |
| 360 return ui::AX_EVENT_SHOW; |
| 361 case blink::WebAXEventTextChanged: |
| 362 return ui::AX_EVENT_TEXT_CHANGED; |
| 363 case blink::WebAXEventTextInserted: |
| 364 return ui::AX_EVENT_TEXT_INSERTED; |
| 365 case blink::WebAXEventTextRemoved: |
| 366 return ui::AX_EVENT_TEXT_REMOVED; |
| 367 case blink::WebAXEventValueChanged: |
| 368 return ui::AX_EVENT_VALUE_CHANGED; |
| 369 } |
| 370 |
| 371 NOTREACHED(); |
| 372 return static_cast<ui::AXEvent>(-1); |
| 373 } |
| 374 |
| 375 } // namespace content |
OLD | NEW |