Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <execinfo.h> | 5 #include <execinfo.h> |
| 6 | 6 |
| 7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" | 7 #import "content/browser/accessibility/browser_accessibility_cocoa.h" |
| 8 | 8 |
| 9 #include <map> | 9 #include <map> |
| 10 | 10 |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 | 33 |
| 34 // Returns an autoreleased copy of the AccessibilityNodeData's attribute. | 34 // Returns an autoreleased copy of the AccessibilityNodeData's attribute. |
| 35 NSString* NSStringForStringAttribute( | 35 NSString* NSStringForStringAttribute( |
| 36 BrowserAccessibility* browserAccessibility, | 36 BrowserAccessibility* browserAccessibility, |
| 37 StringAttribute attribute) { | 37 StringAttribute attribute) { |
| 38 return base::SysUTF8ToNSString( | 38 return base::SysUTF8ToNSString( |
| 39 browserAccessibility->GetStringAttribute(attribute)); | 39 browserAccessibility->GetStringAttribute(attribute)); |
| 40 } | 40 } |
| 41 | 41 |
| 42 struct MapEntry { | 42 struct MapEntry { |
| 43 AccessibilityNodeData::Role webKitValue; | 43 WebKit::WebAXRole webKitValue; |
| 44 NSString* nativeValue; | 44 NSString* nativeValue; |
| 45 }; | 45 }; |
| 46 | 46 |
| 47 typedef std::map<AccessibilityNodeData::Role, NSString*> RoleMap; | 47 typedef std::map<WebKit::WebAXRole, NSString*> RoleMap; |
| 48 | 48 |
| 49 // GetState checks the bitmask used in AccessibilityNodeData to check | 49 // GetState checks the bitmask used in AccessibilityNodeData to check |
| 50 // if the given state was set on the accessibility object. | 50 // if the given state was set on the accessibility object. |
| 51 bool GetState(BrowserAccessibility* accessibility, int state) { | 51 bool GetState(BrowserAccessibility* accessibility, WebKit::WebAXState state) { |
| 52 return ((accessibility->state() >> state) & 1); | 52 return ((accessibility->state() >> state) & 1); |
| 53 } | 53 } |
| 54 | 54 |
| 55 RoleMap BuildRoleMap() { | 55 RoleMap BuildRoleMap() { |
| 56 const MapEntry roles[] = { | 56 const MapEntry roles[] = { |
| 57 { AccessibilityNodeData::ROLE_ALERT, NSAccessibilityGroupRole }, | 57 { WebKit::WebAXRoleAlert, NSAccessibilityGroupRole }, |
| 58 { AccessibilityNodeData::ROLE_ALERT_DIALOG, NSAccessibilityGroupRole }, | 58 { WebKit::WebAXRoleAlertDialog, NSAccessibilityGroupRole }, |
| 59 { AccessibilityNodeData::ROLE_ANNOTATION, NSAccessibilityUnknownRole }, | 59 { WebKit::WebAXRoleAnnotation, NSAccessibilityUnknownRole }, |
| 60 { AccessibilityNodeData::ROLE_APPLICATION, NSAccessibilityGroupRole }, | 60 { WebKit::WebAXRoleApplication, NSAccessibilityGroupRole }, |
| 61 { AccessibilityNodeData::ROLE_ARTICLE, NSAccessibilityGroupRole }, | 61 { WebKit::WebAXRoleArticle, NSAccessibilityGroupRole }, |
| 62 { AccessibilityNodeData::ROLE_BROWSER, NSAccessibilityBrowserRole }, | 62 { WebKit::WebAXRoleBrowser, NSAccessibilityBrowserRole }, |
| 63 { AccessibilityNodeData::ROLE_BUSY_INDICATOR, | 63 { WebKit::WebAXRoleBusyIndicator, NSAccessibilityBusyIndicatorRole }, |
| 64 NSAccessibilityBusyIndicatorRole }, | 64 { WebKit::WebAXRoleButton, NSAccessibilityButtonRole }, |
| 65 { AccessibilityNodeData::ROLE_BUTTON, NSAccessibilityButtonRole }, | 65 { WebKit::WebAXRoleCanvas, NSAccessibilityImageRole }, |
| 66 { AccessibilityNodeData::ROLE_CANVAS, NSAccessibilityImageRole }, | 66 { WebKit::WebAXRoleCanvas, NSAccessibilityGroupRole }, |
| 67 { AccessibilityNodeData::ROLE_CANVAS_WITH_FALLBACK_CONTENT, | 67 { WebKit::WebAXRoleCell, @"AXCell" }, |
| 68 NSAccessibilityGroupRole }, | 68 { WebKit::WebAXRoleCheckBox, NSAccessibilityCheckBoxRole }, |
| 69 { AccessibilityNodeData::ROLE_CELL, @"AXCell" }, | 69 { WebKit::WebAXRoleColorWell, NSAccessibilityColorWellRole }, |
| 70 { AccessibilityNodeData::ROLE_CHECKBOX, NSAccessibilityCheckBoxRole }, | 70 { WebKit::WebAXRoleComboBox, NSAccessibilityComboBoxRole }, |
| 71 { AccessibilityNodeData::ROLE_COLOR_WELL, NSAccessibilityColorWellRole }, | 71 { WebKit::WebAXRoleColumn, NSAccessibilityColumnRole }, |
| 72 { AccessibilityNodeData::ROLE_COMBO_BOX, NSAccessibilityComboBoxRole }, | 72 { WebKit::WebAXRoleColumnHeader, @"AXCell" }, |
| 73 { AccessibilityNodeData::ROLE_COLUMN, NSAccessibilityColumnRole }, | 73 { WebKit::WebAXRoleDefinition, NSAccessibilityGroupRole }, |
| 74 { AccessibilityNodeData::ROLE_COLUMN_HEADER, @"AXCell" }, | 74 { WebKit::WebAXRoleDescriptionListDetail, NSAccessibilityGroupRole }, |
| 75 { AccessibilityNodeData::ROLE_DEFINITION, NSAccessibilityGroupRole }, | 75 { WebKit::WebAXRoleDescriptionListTerm, NSAccessibilityGroupRole }, |
| 76 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_DETAIL, | 76 { WebKit::WebAXRoleDialog, NSAccessibilityGroupRole }, |
| 77 NSAccessibilityGroupRole }, | 77 { WebKit::WebAXRoleDirectory, NSAccessibilityListRole }, |
| 78 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_TERM, | 78 { WebKit::WebAXRoleDisclosureTriangle, |
| 79 NSAccessibilityGroupRole }, | 79 NSAccessibilityDisclosureTriangleRole }, |
| 80 { AccessibilityNodeData::ROLE_DIALOG, NSAccessibilityGroupRole }, | 80 { WebKit::WebAXRoleDiv, NSAccessibilityGroupRole }, |
| 81 { AccessibilityNodeData::ROLE_DIRECTORY, NSAccessibilityListRole }, | 81 { WebKit::WebAXRoleDocument, NSAccessibilityGroupRole }, |
| 82 { AccessibilityNodeData::ROLE_DISCLOSURE_TRIANGLE, | 82 { WebKit::WebAXRoleDrawer, NSAccessibilityDrawerRole }, |
| 83 NSAccessibilityDisclosureTriangleRole }, | 83 { WebKit::WebAXRoleEditableText, NSAccessibilityTextFieldRole }, |
| 84 { AccessibilityNodeData::ROLE_DIV, NSAccessibilityGroupRole }, | 84 { WebKit::WebAXRoleFooter, NSAccessibilityGroupRole }, |
| 85 { AccessibilityNodeData::ROLE_DOCUMENT, NSAccessibilityGroupRole }, | 85 { WebKit::WebAXRoleForm, NSAccessibilityGroupRole }, |
| 86 { AccessibilityNodeData::ROLE_DRAWER, NSAccessibilityDrawerRole }, | 86 { WebKit::WebAXRoleGrid, NSAccessibilityGridRole }, |
| 87 { AccessibilityNodeData::ROLE_EDITABLE_TEXT, NSAccessibilityTextFieldRole }, | 87 { WebKit::WebAXRoleGroup, NSAccessibilityGroupRole }, |
| 88 { AccessibilityNodeData::ROLE_FOOTER, NSAccessibilityGroupRole }, | 88 { WebKit::WebAXRoleGrowArea, NSAccessibilityGrowAreaRole }, |
| 89 { AccessibilityNodeData::ROLE_FORM, NSAccessibilityGroupRole }, | 89 { WebKit::WebAXRoleHeading, @"AXHeading" }, |
| 90 { AccessibilityNodeData::ROLE_GRID, NSAccessibilityGridRole }, | 90 { WebKit::WebAXRoleHelpTag, NSAccessibilityHelpTagRole }, |
| 91 { AccessibilityNodeData::ROLE_GROUP, NSAccessibilityGroupRole }, | 91 { WebKit::WebAXRoleHorizontalRule, NSAccessibilityGroupRole }, |
| 92 { AccessibilityNodeData::ROLE_GROW_AREA, NSAccessibilityGrowAreaRole }, | 92 { WebKit::WebAXRoleIgnored, NSAccessibilityUnknownRole }, |
| 93 { AccessibilityNodeData::ROLE_HEADING, @"AXHeading" }, | 93 { WebKit::WebAXRoleImage, NSAccessibilityImageRole }, |
| 94 { AccessibilityNodeData::ROLE_HELP_TAG, NSAccessibilityHelpTagRole }, | 94 { WebKit::WebAXRoleImageMap, NSAccessibilityGroupRole }, |
| 95 { AccessibilityNodeData::ROLE_HORIZONTAL_RULE, NSAccessibilityGroupRole }, | 95 { WebKit::WebAXRoleImageMapLink, NSAccessibilityLinkRole }, |
| 96 { AccessibilityNodeData::ROLE_IGNORED, NSAccessibilityUnknownRole }, | 96 { WebKit::WebAXRoleIncrementor, NSAccessibilityIncrementorRole }, |
| 97 { AccessibilityNodeData::ROLE_IMAGE, NSAccessibilityImageRole }, | 97 { WebKit::WebAXRoleLabel, NSAccessibilityGroupRole }, |
| 98 { AccessibilityNodeData::ROLE_IMAGE_MAP, NSAccessibilityGroupRole }, | 98 { WebKit::WebAXRoleApplication, NSAccessibilityGroupRole }, |
| 99 { AccessibilityNodeData::ROLE_IMAGE_MAP_LINK, NSAccessibilityLinkRole }, | 99 { WebKit::WebAXRoleBanner, NSAccessibilityGroupRole }, |
| 100 { AccessibilityNodeData::ROLE_INCREMENTOR, NSAccessibilityIncrementorRole }, | 100 { WebKit::WebAXRoleComplementary, NSAccessibilityGroupRole }, |
| 101 { AccessibilityNodeData::ROLE_LABEL, NSAccessibilityGroupRole }, | 101 { WebKit::WebAXRoleContentInfo, NSAccessibilityGroupRole }, |
| 102 { AccessibilityNodeData::ROLE_LANDMARK_APPLICATION, | 102 { WebKit::WebAXRoleMain, NSAccessibilityGroupRole }, |
| 103 NSAccessibilityGroupRole }, | 103 { WebKit::WebAXRoleNavigation, NSAccessibilityGroupRole }, |
| 104 { AccessibilityNodeData::ROLE_LANDMARK_BANNER, NSAccessibilityGroupRole }, | 104 { WebKit::WebAXRoleSearch, NSAccessibilityGroupRole }, |
| 105 { AccessibilityNodeData::ROLE_LANDMARK_COMPLEMENTARY, | 105 { WebKit::WebAXRoleLink, NSAccessibilityLinkRole }, |
| 106 NSAccessibilityGroupRole }, | 106 { WebKit::WebAXRoleList, NSAccessibilityListRole }, |
| 107 { AccessibilityNodeData::ROLE_LANDMARK_CONTENTINFO, | 107 { WebKit::WebAXRoleListItem, NSAccessibilityGroupRole }, |
| 108 NSAccessibilityGroupRole }, | 108 { WebKit::WebAXRoleListMarker, @"AXListMarker" }, |
| 109 { AccessibilityNodeData::ROLE_LANDMARK_MAIN, NSAccessibilityGroupRole }, | 109 { WebKit::WebAXRoleListBox, NSAccessibilityListRole }, |
| 110 { AccessibilityNodeData::ROLE_LANDMARK_NAVIGATION, | 110 { WebKit::WebAXRoleListBoxOption, NSAccessibilityStaticTextRole }, |
| 111 NSAccessibilityGroupRole }, | 111 { WebKit::WebAXRoleLog, NSAccessibilityGroupRole }, |
| 112 { AccessibilityNodeData::ROLE_LANDMARK_SEARCH, NSAccessibilityGroupRole }, | 112 { WebKit::WebAXRoleMarquee, NSAccessibilityGroupRole }, |
| 113 { AccessibilityNodeData::ROLE_LINK, NSAccessibilityLinkRole }, | 113 { WebKit::WebAXRoleMath, NSAccessibilityGroupRole }, |
| 114 { AccessibilityNodeData::ROLE_LIST, NSAccessibilityListRole }, | 114 { WebKit::WebAXRoleMatte, NSAccessibilityMatteRole }, |
| 115 { AccessibilityNodeData::ROLE_LIST_ITEM, NSAccessibilityGroupRole }, | 115 { WebKit::WebAXRoleMenu, NSAccessibilityMenuRole }, |
| 116 { AccessibilityNodeData::ROLE_LIST_MARKER, @"AXListMarker" }, | 116 { WebKit::WebAXRoleMenuBar, NSAccessibilityMenuBarRole }, |
| 117 { AccessibilityNodeData::ROLE_LISTBOX, NSAccessibilityListRole }, | 117 { WebKit::WebAXRoleMenuItem, NSAccessibilityMenuItemRole }, |
| 118 { AccessibilityNodeData::ROLE_LISTBOX_OPTION, | 118 { WebKit::WebAXRoleMenuButton, NSAccessibilityButtonRole }, |
| 119 NSAccessibilityStaticTextRole }, | 119 { WebKit::WebAXRoleMenuListOption, NSAccessibilityMenuItemRole }, |
| 120 { AccessibilityNodeData::ROLE_LOG, NSAccessibilityGroupRole }, | 120 { WebKit::WebAXRoleMenuListPopup, NSAccessibilityUnknownRole }, |
| 121 { AccessibilityNodeData::ROLE_MARQUEE, NSAccessibilityGroupRole }, | 121 { WebKit::WebAXRoleNote, NSAccessibilityGroupRole }, |
| 122 { AccessibilityNodeData::ROLE_MATH, NSAccessibilityGroupRole }, | 122 { WebKit::WebAXRoleOutline, NSAccessibilityOutlineRole }, |
| 123 { AccessibilityNodeData::ROLE_MATTE, NSAccessibilityMatteRole }, | 123 { WebKit::WebAXRoleParagraph, NSAccessibilityGroupRole }, |
| 124 { AccessibilityNodeData::ROLE_MENU, NSAccessibilityMenuRole }, | 124 { WebKit::WebAXRolePopUpButton, NSAccessibilityPopUpButtonRole }, |
| 125 { AccessibilityNodeData::ROLE_MENU_BAR, NSAccessibilityMenuBarRole }, | 125 { WebKit::WebAXRolePresentational, NSAccessibilityGroupRole }, |
| 126 { AccessibilityNodeData::ROLE_MENU_ITEM, NSAccessibilityMenuItemRole }, | 126 { WebKit::WebAXRoleProgressIndicator, |
| 127 { AccessibilityNodeData::ROLE_MENU_BUTTON, NSAccessibilityButtonRole }, | 127 NSAccessibilityProgressIndicatorRole }, |
| 128 { AccessibilityNodeData::ROLE_MENU_LIST_OPTION, | 128 { WebKit::WebAXRoleRadioButton, NSAccessibilityRadioButtonRole }, |
| 129 NSAccessibilityMenuItemRole }, | 129 { WebKit::WebAXRoleRadioGroup, NSAccessibilityRadioGroupRole }, |
| 130 { AccessibilityNodeData::ROLE_MENU_LIST_POPUP, NSAccessibilityUnknownRole }, | 130 { WebKit::WebAXRoleRegion, NSAccessibilityGroupRole }, |
| 131 { AccessibilityNodeData::ROLE_NOTE, NSAccessibilityGroupRole }, | 131 { WebKit::WebAXRoleRootWebArea, @"AXWebArea" }, |
| 132 { AccessibilityNodeData::ROLE_OUTLINE, NSAccessibilityOutlineRole }, | 132 { WebKit::WebAXRoleRow, NSAccessibilityRowRole }, |
| 133 { AccessibilityNodeData::ROLE_PARAGRAPH, NSAccessibilityGroupRole }, | 133 { WebKit::WebAXRoleRowHeader, @"AXCell" }, |
| 134 { AccessibilityNodeData::ROLE_POPUP_BUTTON, | 134 { WebKit::WebAXRoleRuler, NSAccessibilityRulerRole }, |
| 135 NSAccessibilityPopUpButtonRole }, | 135 { WebKit::WebAXRoleRulerMarker, NSAccessibilityRulerMarkerRole }, |
| 136 { AccessibilityNodeData::ROLE_PRESENTATIONAL, NSAccessibilityGroupRole }, | |
| 137 { AccessibilityNodeData::ROLE_PROGRESS_INDICATOR, | |
| 138 NSAccessibilityProgressIndicatorRole }, | |
| 139 { AccessibilityNodeData::ROLE_RADIO_BUTTON, | |
| 140 NSAccessibilityRadioButtonRole }, | |
| 141 { AccessibilityNodeData::ROLE_RADIO_GROUP, NSAccessibilityRadioGroupRole }, | |
| 142 { AccessibilityNodeData::ROLE_REGION, NSAccessibilityGroupRole }, | |
| 143 { AccessibilityNodeData::ROLE_ROOT_WEB_AREA, @"AXWebArea" }, | |
| 144 { AccessibilityNodeData::ROLE_ROW, NSAccessibilityRowRole }, | |
| 145 { AccessibilityNodeData::ROLE_ROW_HEADER, @"AXCell" }, | |
| 146 { AccessibilityNodeData::ROLE_RULER, NSAccessibilityRulerRole }, | |
| 147 { AccessibilityNodeData::ROLE_RULER_MARKER, | |
| 148 NSAccessibilityRulerMarkerRole }, | |
| 149 // TODO(dtseng): we don't correctly support the attributes for these roles. | 136 // TODO(dtseng): we don't correctly support the attributes for these roles. |
| 150 // { AccessibilityNodeData::ROLE_SCROLLAREA, | 137 // { WebKit::WebAXRoleScrollArea, NSAccessibilityScrollAreaRole }, |
| 151 // NSAccessibilityScrollAreaRole }, | 138 { WebKit::WebAXRoleScrollBar, NSAccessibilityScrollBarRole }, |
| 152 { AccessibilityNodeData::ROLE_SCROLLBAR, NSAccessibilityScrollBarRole }, | 139 { WebKit::WebAXRoleSheet, NSAccessibilitySheetRole }, |
| 153 { AccessibilityNodeData::ROLE_SHEET, NSAccessibilitySheetRole }, | 140 { WebKit::WebAXRoleSlider, NSAccessibilitySliderRole }, |
| 154 { AccessibilityNodeData::ROLE_SLIDER, NSAccessibilitySliderRole }, | 141 { WebKit::WebAXRoleSliderThumb, NSAccessibilityValueIndicatorRole }, |
| 155 { AccessibilityNodeData::ROLE_SLIDER_THUMB, | 142 { WebKit::WebAXRoleSpinButton, NSAccessibilitySliderRole }, |
| 156 NSAccessibilityValueIndicatorRole }, | 143 { WebKit::WebAXRoleSplitter, NSAccessibilitySplitterRole }, |
| 157 { AccessibilityNodeData::ROLE_SPIN_BUTTON, NSAccessibilitySliderRole }, | 144 { WebKit::WebAXRoleSplitGroup, NSAccessibilitySplitGroupRole }, |
| 158 { AccessibilityNodeData::ROLE_SPLITTER, NSAccessibilitySplitterRole }, | 145 { WebKit::WebAXRoleStaticText, NSAccessibilityStaticTextRole }, |
| 159 { AccessibilityNodeData::ROLE_SPLIT_GROUP, NSAccessibilitySplitGroupRole }, | 146 { WebKit::WebAXRoleStatus, NSAccessibilityGroupRole }, |
| 160 { AccessibilityNodeData::ROLE_STATIC_TEXT, NSAccessibilityStaticTextRole }, | 147 { WebKit::WebAXRoleSVGRoot, NSAccessibilityGroupRole }, |
| 161 { AccessibilityNodeData::ROLE_STATUS, NSAccessibilityGroupRole }, | 148 { WebKit::WebAXRoleSystemWide, NSAccessibilityUnknownRole }, |
| 162 { AccessibilityNodeData::ROLE_SVG_ROOT, NSAccessibilityGroupRole }, | 149 { WebKit::WebAXRoleTab, NSAccessibilityRadioButtonRole }, |
| 163 { AccessibilityNodeData::ROLE_SYSTEM_WIDE, NSAccessibilityUnknownRole }, | 150 { WebKit::WebAXRoleTabList, NSAccessibilityTabGroupRole }, |
| 164 { AccessibilityNodeData::ROLE_TAB, NSAccessibilityRadioButtonRole }, | 151 { WebKit::WebAXRoleTabPanel, NSAccessibilityGroupRole }, |
| 165 { AccessibilityNodeData::ROLE_TAB_LIST, NSAccessibilityTabGroupRole }, | 152 { WebKit::WebAXRoleTable, NSAccessibilityTableRole }, |
| 166 { AccessibilityNodeData::ROLE_TAB_PANEL, NSAccessibilityGroupRole }, | 153 { WebKit::WebAXRoleTableHeaderContainer, NSAccessibilityGroupRole }, |
| 167 { AccessibilityNodeData::ROLE_TABLE, NSAccessibilityTableRole }, | 154 { WebKit::WebAXRoleTextArea, NSAccessibilityTextAreaRole }, |
| 168 { AccessibilityNodeData::ROLE_TABLE_HEADER_CONTAINER, | 155 { WebKit::WebAXRoleTextField, NSAccessibilityTextFieldRole }, |
| 169 NSAccessibilityGroupRole }, | 156 { WebKit::WebAXRoleTimer, NSAccessibilityGroupRole }, |
| 170 { AccessibilityNodeData::ROLE_TAB_GROUP_UNUSED, | 157 { WebKit::WebAXRoleToggleButton, NSAccessibilityButtonRole }, |
| 171 NSAccessibilityTabGroupRole }, | 158 { WebKit::WebAXRoleToolbar, NSAccessibilityToolbarRole }, |
| 172 { AccessibilityNodeData::ROLE_TEXTAREA, NSAccessibilityTextAreaRole }, | 159 { WebKit::WebAXRoleUserInterfaceTooltip, NSAccessibilityGroupRole }, |
| 173 { AccessibilityNodeData::ROLE_TEXT_FIELD, NSAccessibilityTextFieldRole }, | 160 { WebKit::WebAXRoleTree, NSAccessibilityOutlineRole }, |
| 174 { AccessibilityNodeData::ROLE_TIMER, NSAccessibilityGroupRole }, | 161 { WebKit::WebAXRoleTreeGrid, NSAccessibilityTableRole }, |
| 175 { AccessibilityNodeData::ROLE_TOGGLE_BUTTON, NSAccessibilityButtonRole }, | 162 { WebKit::WebAXRoleTreeItem, NSAccessibilityRowRole }, |
| 176 { AccessibilityNodeData::ROLE_TOOLBAR, NSAccessibilityToolbarRole }, | 163 { WebKit::WebAXRoleValueIndicator, NSAccessibilityValueIndicatorRole }, |
| 177 { AccessibilityNodeData::ROLE_TOOLTIP, NSAccessibilityGroupRole }, | 164 { WebKit::WebAXRoleLink, NSAccessibilityLinkRole }, |
| 178 { AccessibilityNodeData::ROLE_TREE, NSAccessibilityOutlineRole }, | 165 { WebKit::WebAXRoleWebArea, @"AXWebArea" }, |
| 179 { AccessibilityNodeData::ROLE_TREE_GRID, NSAccessibilityTableRole }, | 166 { WebKit::WebAXRoleWindow, NSAccessibilityWindowRole }, |
| 180 { AccessibilityNodeData::ROLE_TREE_ITEM, NSAccessibilityRowRole }, | |
| 181 { AccessibilityNodeData::ROLE_VALUE_INDICATOR, | |
| 182 NSAccessibilityValueIndicatorRole }, | |
| 183 { AccessibilityNodeData::ROLE_WEBCORE_LINK, NSAccessibilityLinkRole }, | |
| 184 { AccessibilityNodeData::ROLE_WEB_AREA, @"AXWebArea" }, | |
| 185 { AccessibilityNodeData::ROLE_WINDOW, NSAccessibilityWindowRole }, | |
| 186 }; | 167 }; |
| 187 | 168 |
| 188 RoleMap role_map; | 169 RoleMap role_map; |
| 189 for (size_t i = 0; i < arraysize(roles); ++i) | 170 for (size_t i = 0; i < arraysize(roles); ++i) |
| 190 role_map[roles[i].webKitValue] = roles[i].nativeValue; | 171 role_map[roles[i].webKitValue] = roles[i].nativeValue; |
| 191 return role_map; | 172 return role_map; |
| 192 } | 173 } |
| 193 | 174 |
| 194 // A mapping of webkit roles to native roles. | 175 // A mapping of webkit roles to native roles. |
| 195 NSString* NativeRoleFromAccessibilityNodeDataRole( | 176 NSString* NativeRoleFromAccessibilityNodeDataRole( |
| 196 const AccessibilityNodeData::Role& role) { | 177 const WebKit::WebAXRole& role) { |
| 197 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role, | 178 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_role, |
| 198 (BuildRoleMap())); | 179 (BuildRoleMap())); |
| 199 RoleMap::iterator it = web_accessibility_to_native_role.find(role); | 180 RoleMap::iterator it = web_accessibility_to_native_role.find(role); |
| 200 if (it != web_accessibility_to_native_role.end()) | 181 if (it != web_accessibility_to_native_role.end()) |
| 201 return it->second; | 182 return it->second; |
| 202 else | 183 else |
| 203 return NSAccessibilityUnknownRole; | 184 return NSAccessibilityUnknownRole; |
| 204 } | 185 } |
| 205 | 186 |
| 206 RoleMap BuildSubroleMap() { | 187 RoleMap BuildSubroleMap() { |
| 207 const MapEntry subroles[] = { | 188 const MapEntry subroles[] = { |
| 208 { AccessibilityNodeData::ROLE_ALERT, @"AXApplicationAlert" }, | 189 { WebKit::WebAXRoleAlert, @"AXApplicationAlert" }, |
| 209 { AccessibilityNodeData::ROLE_ALERT_DIALOG, @"AXApplicationAlertDialog" }, | 190 { WebKit::WebAXRoleAlertDialog, @"AXApplicationAlertDialog" }, |
| 210 { AccessibilityNodeData::ROLE_ARTICLE, @"AXDocumentArticle" }, | 191 { WebKit::WebAXRoleArticle, @"AXDocumentArticle" }, |
| 211 { AccessibilityNodeData::ROLE_DEFINITION, @"AXDefinition" }, | 192 { WebKit::WebAXRoleDefinition, @"AXDefinition" }, |
| 212 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_DETAIL, @"AXDescription" }, | 193 { WebKit::WebAXRoleDescriptionListDetail, @"AXDescription" }, |
| 213 { AccessibilityNodeData::ROLE_DESCRIPTION_LIST_TERM, @"AXTerm" }, | 194 { WebKit::WebAXRoleDescriptionListTerm, @"AXTerm" }, |
| 214 { AccessibilityNodeData::ROLE_DIALOG, @"AXApplicationDialog" }, | 195 { WebKit::WebAXRoleDialog, @"AXApplicationDialog" }, |
| 215 { AccessibilityNodeData::ROLE_DOCUMENT, @"AXDocument" }, | 196 { WebKit::WebAXRoleDocument, @"AXDocument" }, |
| 216 { AccessibilityNodeData::ROLE_FOOTER, @"AXLandmarkContentInfo" }, | 197 { WebKit::WebAXRoleFooter, @"AXLandmarkContentInfo" }, |
| 217 { AccessibilityNodeData::ROLE_LANDMARK_APPLICATION, | 198 { WebKit::WebAXRoleApplication, |
| 218 @"AXLandmarkApplication" }, | 199 @"AXLandmarkApplication" }, |
|
aboxhall
2013/08/29 00:59:06
Does this fit on previous line now? (and below)
dmazzoni
2013/08/29 04:47:15
Yes, thanks. I wrapped above and forgot to check t
| |
| 219 { AccessibilityNodeData::ROLE_LANDMARK_BANNER, @"AXLandmarkBanner" }, | 200 { WebKit::WebAXRoleBanner, @"AXLandmarkBanner" }, |
| 220 { AccessibilityNodeData::ROLE_LANDMARK_COMPLEMENTARY, | 201 { WebKit::WebAXRoleComplementary, |
| 221 @"AXLandmarkComplementary" }, | 202 @"AXLandmarkComplementary" }, |
| 222 { AccessibilityNodeData::ROLE_LANDMARK_CONTENTINFO, | 203 { WebKit::WebAXRoleContentInfo, |
| 223 @"AXLandmarkContentInfo" }, | 204 @"AXLandmarkContentInfo" }, |
| 224 { AccessibilityNodeData::ROLE_LANDMARK_MAIN, @"AXLandmarkMain" }, | 205 { WebKit::WebAXRoleMain, @"AXLandmarkMain" }, |
| 225 { AccessibilityNodeData::ROLE_LANDMARK_NAVIGATION, | 206 { WebKit::WebAXRoleNavigation, |
| 226 @"AXLandmarkNavigation" }, | 207 @"AXLandmarkNavigation" }, |
| 227 { AccessibilityNodeData::ROLE_LANDMARK_SEARCH, @"AXLandmarkSearch" }, | 208 { WebKit::WebAXRoleSearch, @"AXLandmarkSearch" }, |
| 228 { AccessibilityNodeData::ROLE_LOG, @"AXApplicationLog" }, | 209 { WebKit::WebAXRoleLog, @"AXApplicationLog" }, |
| 229 { AccessibilityNodeData::ROLE_MARQUEE, @"AXApplicationMarquee" }, | 210 { WebKit::WebAXRoleMarquee, @"AXApplicationMarquee" }, |
| 230 { AccessibilityNodeData::ROLE_MATH, @"AXDocumentMath" }, | 211 { WebKit::WebAXRoleMath, @"AXDocumentMath" }, |
| 231 { AccessibilityNodeData::ROLE_NOTE, @"AXDocumentNote" }, | 212 { WebKit::WebAXRoleNote, @"AXDocumentNote" }, |
| 232 { AccessibilityNodeData::ROLE_REGION, @"AXDocumentRegion" }, | 213 { WebKit::WebAXRoleRegion, @"AXDocumentRegion" }, |
| 233 { AccessibilityNodeData::ROLE_STATUS, @"AXApplicationStatus" }, | 214 { WebKit::WebAXRoleStatus, @"AXApplicationStatus" }, |
| 234 { AccessibilityNodeData::ROLE_TAB_PANEL, @"AXTabPanel" }, | 215 { WebKit::WebAXRoleTabPanel, @"AXTabPanel" }, |
| 235 { AccessibilityNodeData::ROLE_TIMER, @"AXApplicationTimer" }, | 216 { WebKit::WebAXRoleTimer, @"AXApplicationTimer" }, |
| 236 { AccessibilityNodeData::ROLE_TOOLTIP, @"AXUserInterfaceTooltip" }, | 217 { WebKit::WebAXRoleUserInterfaceTooltip, @"AXUserInterfaceTooltip" }, |
| 237 { AccessibilityNodeData::ROLE_TREE_ITEM, NSAccessibilityOutlineRowSubrole }, | 218 { WebKit::WebAXRoleTreeItem, NSAccessibilityOutlineRowSubrole }, |
| 238 }; | 219 }; |
| 239 | 220 |
| 240 RoleMap subrole_map; | 221 RoleMap subrole_map; |
| 241 for (size_t i = 0; i < arraysize(subroles); ++i) | 222 for (size_t i = 0; i < arraysize(subroles); ++i) |
| 242 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue; | 223 subrole_map[subroles[i].webKitValue] = subroles[i].nativeValue; |
| 243 return subrole_map; | 224 return subrole_map; |
| 244 } | 225 } |
| 245 | 226 |
| 246 // A mapping of webkit roles to native subroles. | 227 // A mapping of webkit roles to native subroles. |
| 247 NSString* NativeSubroleFromAccessibilityNodeDataRole( | 228 NSString* NativeSubroleFromAccessibilityNodeDataRole( |
| 248 const AccessibilityNodeData::Role& role) { | 229 const WebKit::WebAXRole& role) { |
| 249 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole, | 230 CR_DEFINE_STATIC_LOCAL(RoleMap, web_accessibility_to_native_subrole, |
| 250 (BuildSubroleMap())); | 231 (BuildSubroleMap())); |
| 251 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role); | 232 RoleMap::iterator it = web_accessibility_to_native_subrole.find(role); |
| 252 if (it != web_accessibility_to_native_subrole.end()) | 233 if (it != web_accessibility_to_native_subrole.end()) |
| 253 return it->second; | 234 return it->second; |
| 254 else | 235 else |
| 255 return nil; | 236 return nil; |
| 256 } | 237 } |
| 257 | 238 |
| 258 // A mapping from an accessibility attribute to its method name. | 239 // A mapping from an accessibility attribute to its method name. |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 414 - (void)childrenChanged { | 395 - (void)childrenChanged { |
| 415 if (![self isIgnored]) { | 396 if (![self isIgnored]) { |
| 416 children_.reset(); | 397 children_.reset(); |
| 417 } else { | 398 } else { |
| 418 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa() | 399 [browserAccessibility_->parent()->ToBrowserAccessibilityCocoa() |
| 419 childrenChanged]; | 400 childrenChanged]; |
| 420 } | 401 } |
| 421 } | 402 } |
| 422 | 403 |
| 423 - (NSArray*)columnHeaders { | 404 - (NSArray*)columnHeaders { |
| 424 if ([self internalRole] != AccessibilityNodeData::ROLE_TABLE && | 405 if ([self internalRole] != WebKit::WebAXRoleTable && |
| 425 [self internalRole] != AccessibilityNodeData::ROLE_GRID) { | 406 [self internalRole] != WebKit::WebAXRoleGrid) { |
| 426 return nil; | 407 return nil; |
| 427 } | 408 } |
| 428 | 409 |
| 429 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; | 410 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; |
| 430 const std::vector<int32>& uniqueCellIds = | 411 const std::vector<int32>& uniqueCellIds = |
| 431 browserAccessibility_->GetIntListAttribute( | 412 browserAccessibility_->GetIntListAttribute( |
| 432 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); | 413 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); |
| 433 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { | 414 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { |
| 434 int id = uniqueCellIds[i]; | 415 int id = uniqueCellIds[i]; |
| 435 BrowserAccessibility* cell = | 416 BrowserAccessibility* cell = |
| 436 browserAccessibility_->manager()->GetFromRendererID(id); | 417 browserAccessibility_->manager()->GetFromRendererID(id); |
| 437 if (cell && cell->role() == AccessibilityNodeData::ROLE_COLUMN_HEADER) | 418 if (cell && cell->role() == WebKit::WebAXRoleColumnHeader) |
| 438 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; | 419 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; |
| 439 } | 420 } |
| 440 return ret; | 421 return ret; |
| 441 } | 422 } |
| 442 | 423 |
| 443 - (NSValue*)columnIndexRange { | 424 - (NSValue*)columnIndexRange { |
| 444 if ([self internalRole] != AccessibilityNodeData::ROLE_CELL) | 425 if ([self internalRole] != WebKit::WebAXRoleCell) |
| 445 return nil; | 426 return nil; |
| 446 | 427 |
| 447 int column = -1; | 428 int column = -1; |
| 448 int colspan = -1; | 429 int colspan = -1; |
| 449 browserAccessibility_->GetIntAttribute( | 430 browserAccessibility_->GetIntAttribute( |
| 450 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); | 431 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, &column); |
| 451 browserAccessibility_->GetIntAttribute( | 432 browserAccessibility_->GetIntAttribute( |
| 452 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan); | 433 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_SPAN, &colspan); |
| 453 if (column >= 0 && colspan >= 1) | 434 if (column >= 0 && colspan >= 1) |
| 454 return [NSValue valueWithRange:NSMakeRange(column, colspan)]; | 435 return [NSValue valueWithRange:NSMakeRange(column, colspan)]; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 492 size_t leftIndex = url.rfind('/'); | 473 size_t leftIndex = url.rfind('/'); |
| 493 std::string basename = | 474 std::string basename = |
| 494 leftIndex != std::string::npos ? url.substr(leftIndex) : url; | 475 leftIndex != std::string::npos ? url.substr(leftIndex) : url; |
| 495 return base::SysUTF8ToNSString(basename); | 476 return base::SysUTF8ToNSString(basename); |
| 496 } | 477 } |
| 497 | 478 |
| 498 return @""; | 479 return @""; |
| 499 } | 480 } |
| 500 | 481 |
| 501 - (NSNumber*)disclosing { | 482 - (NSNumber*)disclosing { |
| 502 if ([self internalRole] == AccessibilityNodeData::ROLE_TREE_ITEM) { | 483 if ([self internalRole] == WebKit::WebAXRoleTreeItem) { |
| 503 return [NSNumber numberWithBool: | 484 return [NSNumber numberWithBool: |
| 504 GetState(browserAccessibility_, AccessibilityNodeData::STATE_EXPANDED)]; | 485 GetState(browserAccessibility_, WebKit::WebAXStateExpanded)]; |
| 505 } else { | 486 } else { |
| 506 return nil; | 487 return nil; |
| 507 } | 488 } |
| 508 } | 489 } |
| 509 | 490 |
| 510 - (id)disclosedByRow { | 491 - (id)disclosedByRow { |
| 511 // The row that contains this row. | 492 // The row that contains this row. |
| 512 // It should be the same as the first parent that is a treeitem. | 493 // It should be the same as the first parent that is a treeitem. |
| 513 return nil; | 494 return nil; |
| 514 } | 495 } |
| 515 | 496 |
| 516 - (NSNumber*)disclosureLevel { | 497 - (NSNumber*)disclosureLevel { |
| 517 AccessibilityNodeData::Role role = [self internalRole]; | 498 WebKit::WebAXRole role = [self internalRole]; |
| 518 if (role == AccessibilityNodeData::ROLE_ROW || | 499 if (role == WebKit::WebAXRoleRow || |
| 519 role == AccessibilityNodeData::ROLE_TREE_ITEM) { | 500 role == WebKit::WebAXRoleTreeItem) { |
| 520 int level = browserAccessibility_->GetIntAttribute( | 501 int level = browserAccessibility_->GetIntAttribute( |
| 521 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL); | 502 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL); |
| 522 // Mac disclosureLevel is 0-based, but web levels are 1-based. | 503 // Mac disclosureLevel is 0-based, but web levels are 1-based. |
| 523 if (level > 0) | 504 if (level > 0) |
| 524 level--; | 505 level--; |
| 525 return [NSNumber numberWithInt:level]; | 506 return [NSNumber numberWithInt:level]; |
| 526 } else { | 507 } else { |
| 527 return nil; | 508 return nil; |
| 528 } | 509 } |
| 529 } | 510 } |
| 530 | 511 |
| 531 - (id)disclosedRows { | 512 - (id)disclosedRows { |
| 532 // The rows that are considered inside this row. | 513 // The rows that are considered inside this row. |
| 533 return nil; | 514 return nil; |
| 534 } | 515 } |
| 535 | 516 |
| 536 - (NSNumber*)enabled { | 517 - (NSNumber*)enabled { |
| 537 return [NSNumber numberWithBool: | 518 return [NSNumber numberWithBool: |
| 538 !GetState(browserAccessibility_, | 519 GetState(browserAccessibility_, WebKit::WebAXStateEnabled)]; |
|
aboxhall
2013/08/29 00:59:06
What's the difference between enabled and availabl
dmazzoni
2013/08/29 04:47:15
Enabled seems a lot more clear to me (and web-like
| |
| 539 AccessibilityNodeData::STATE_UNAVAILABLE)]; | |
| 540 } | 520 } |
| 541 | 521 |
| 542 - (NSNumber*)focused { | 522 - (NSNumber*)focused { |
| 543 BrowserAccessibilityManager* manager = browserAccessibility_->manager(); | 523 BrowserAccessibilityManager* manager = browserAccessibility_->manager(); |
| 544 NSNumber* ret = [NSNumber numberWithBool: | 524 NSNumber* ret = [NSNumber numberWithBool: |
| 545 manager->GetFocus(NULL) == browserAccessibility_]; | 525 manager->GetFocus(NULL) == browserAccessibility_]; |
| 546 return ret; | 526 return ret; |
| 547 } | 527 } |
| 548 | 528 |
| 549 - (id)header { | 529 - (id)header { |
| 550 int headerElementId = -1; | 530 int headerElementId = -1; |
| 551 if ([self internalRole] == AccessibilityNodeData::ROLE_TABLE || | 531 if ([self internalRole] == WebKit::WebAXRoleTable || |
| 552 [self internalRole] == AccessibilityNodeData::ROLE_GRID) { | 532 [self internalRole] == WebKit::WebAXRoleGrid) { |
| 553 browserAccessibility_->GetIntAttribute( | 533 browserAccessibility_->GetIntAttribute( |
| 554 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId); | 534 AccessibilityNodeData::ATTR_TABLE_HEADER_ID, &headerElementId); |
| 555 } else if ([self internalRole] == AccessibilityNodeData::ROLE_COLUMN) { | 535 } else if ([self internalRole] == WebKit::WebAXRoleColumn) { |
| 556 browserAccessibility_->GetIntAttribute( | 536 browserAccessibility_->GetIntAttribute( |
| 557 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId); | 537 AccessibilityNodeData::ATTR_TABLE_COLUMN_HEADER_ID, &headerElementId); |
| 558 } else if ([self internalRole] == AccessibilityNodeData::ROLE_ROW) { | 538 } else if ([self internalRole] == WebKit::WebAXRoleRow) { |
| 559 browserAccessibility_->GetIntAttribute( | 539 browserAccessibility_->GetIntAttribute( |
| 560 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId); | 540 AccessibilityNodeData::ATTR_TABLE_ROW_HEADER_ID, &headerElementId); |
| 561 } | 541 } |
| 562 | 542 |
| 563 if (headerElementId > 0) { | 543 if (headerElementId > 0) { |
| 564 BrowserAccessibility* headerObject = | 544 BrowserAccessibility* headerObject = |
| 565 browserAccessibility_->manager()->GetFromRendererID(headerElementId); | 545 browserAccessibility_->manager()->GetFromRendererID(headerElementId); |
| 566 if (headerObject) | 546 if (headerObject) |
| 567 return headerObject->ToBrowserAccessibilityCocoa(); | 547 return headerObject->ToBrowserAccessibilityCocoa(); |
| 568 } | 548 } |
| 569 return nil; | 549 return nil; |
| 570 } | 550 } |
| 571 | 551 |
| 572 - (NSString*)help { | 552 - (NSString*)help { |
| 573 return NSStringForStringAttribute( | 553 return NSStringForStringAttribute( |
| 574 browserAccessibility_, AccessibilityNodeData::ATTR_HELP); | 554 browserAccessibility_, AccessibilityNodeData::ATTR_HELP); |
| 575 } | 555 } |
| 576 | 556 |
| 577 - (NSNumber*)index { | 557 - (NSNumber*)index { |
| 578 if ([self internalRole] == AccessibilityNodeData::ROLE_COLUMN) { | 558 if ([self internalRole] == WebKit::WebAXRoleColumn) { |
| 579 int columnIndex = browserAccessibility_->GetIntAttribute( | 559 int columnIndex = browserAccessibility_->GetIntAttribute( |
| 580 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX); | 560 AccessibilityNodeData::ATTR_TABLE_COLUMN_INDEX); |
| 581 return [NSNumber numberWithInt:columnIndex]; | 561 return [NSNumber numberWithInt:columnIndex]; |
| 582 } else if ([self internalRole] == AccessibilityNodeData::ROLE_ROW) { | 562 } else if ([self internalRole] == WebKit::WebAXRoleRow) { |
| 583 int rowIndex = browserAccessibility_->GetIntAttribute( | 563 int rowIndex = browserAccessibility_->GetIntAttribute( |
| 584 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX); | 564 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX); |
| 585 return [NSNumber numberWithInt:rowIndex]; | 565 return [NSNumber numberWithInt:rowIndex]; |
| 586 } | 566 } |
| 587 | 567 |
| 588 return nil; | 568 return nil; |
| 589 } | 569 } |
| 590 | 570 |
| 591 // Returns whether or not this node should be ignored in the | 571 // Returns whether or not this node should be ignored in the |
| 592 // accessibility tree. | 572 // accessibility tree. |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 624 | 604 |
| 625 - (NSNumber*)minValue { | 605 - (NSNumber*)minValue { |
| 626 float floatValue = browserAccessibility_->GetFloatAttribute( | 606 float floatValue = browserAccessibility_->GetFloatAttribute( |
| 627 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE); | 607 AccessibilityNodeData::ATTR_MIN_VALUE_FOR_RANGE); |
| 628 return [NSNumber numberWithFloat:floatValue]; | 608 return [NSNumber numberWithFloat:floatValue]; |
| 629 } | 609 } |
| 630 | 610 |
| 631 - (NSString*)orientation { | 611 - (NSString*)orientation { |
| 632 // We present a spin button as a vertical slider, with a role description | 612 // We present a spin button as a vertical slider, with a role description |
| 633 // of "spin button". | 613 // of "spin button". |
| 634 if ([self internalRole] == AccessibilityNodeData::ROLE_SPIN_BUTTON) | 614 if ([self internalRole] == WebKit::WebAXRoleSpinButton) |
| 635 return NSAccessibilityVerticalOrientationValue; | 615 return NSAccessibilityVerticalOrientationValue; |
| 636 | 616 |
| 637 if (GetState(browserAccessibility_, AccessibilityNodeData::STATE_VERTICAL)) | 617 if (GetState(browserAccessibility_, WebKit::WebAXStateVertical)) |
| 638 return NSAccessibilityVerticalOrientationValue; | 618 return NSAccessibilityVerticalOrientationValue; |
| 639 else | 619 else |
| 640 return NSAccessibilityHorizontalOrientationValue; | 620 return NSAccessibilityHorizontalOrientationValue; |
| 641 } | 621 } |
| 642 | 622 |
| 643 - (NSNumber*)numberOfCharacters { | 623 - (NSNumber*)numberOfCharacters { |
| 644 return [NSNumber numberWithInt:browserAccessibility_->value().length()]; | 624 return [NSNumber numberWithInt:browserAccessibility_->value().length()]; |
| 645 } | 625 } |
| 646 | 626 |
| 647 // The origin of this accessibility object in the page's document. | 627 // The origin of this accessibility object in the page's document. |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 665 return manager->parent_view(); | 645 return manager->parent_view(); |
| 666 } | 646 } |
| 667 } | 647 } |
| 668 | 648 |
| 669 - (NSValue*)position { | 649 - (NSValue*)position { |
| 670 return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]]; | 650 return [NSValue valueWithPoint:[delegate_ accessibilityPointInScreen:self]]; |
| 671 } | 651 } |
| 672 | 652 |
| 673 - (NSNumber*)required { | 653 - (NSNumber*)required { |
| 674 return [NSNumber numberWithBool: | 654 return [NSNumber numberWithBool: |
| 675 GetState(browserAccessibility_, AccessibilityNodeData::STATE_REQUIRED)]; | 655 GetState(browserAccessibility_, WebKit::WebAXStateRequired)]; |
| 676 } | 656 } |
| 677 | 657 |
| 678 // Returns an enum indicating the role from browserAccessibility_. | 658 // Returns an enum indicating the role from browserAccessibility_. |
| 679 - (AccessibilityNodeData::Role)internalRole { | 659 - (WebKit::WebAXRole)internalRole { |
| 680 return static_cast<AccessibilityNodeData::Role>( | 660 return static_cast<WebKit::WebAXRole>(browserAccessibility_->role()); |
| 681 browserAccessibility_->role()); | |
| 682 } | 661 } |
| 683 | 662 |
| 684 // Returns a string indicating the NSAccessibility role of this object. | 663 // Returns a string indicating the NSAccessibility role of this object. |
| 685 - (NSString*)role { | 664 - (NSString*)role { |
| 686 return NativeRoleFromAccessibilityNodeDataRole([self internalRole]); | 665 return NativeRoleFromAccessibilityNodeDataRole([self internalRole]); |
| 687 } | 666 } |
| 688 | 667 |
| 689 // Returns a string indicating the role description of this object. | 668 // Returns a string indicating the role description of this object. |
| 690 - (NSString*)roleDescription { | 669 - (NSString*)roleDescription { |
| 691 NSString* role = [self role]; | 670 NSString* role = [self role]; |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 705 | 684 |
| 706 if ([role isEqualToString:@"AXHeading"]) { | 685 if ([role isEqualToString:@"AXHeading"]) { |
| 707 return base::SysUTF16ToNSString(content_client->GetLocalizedString( | 686 return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
| 708 IDS_AX_ROLE_HEADING)); | 687 IDS_AX_ROLE_HEADING)); |
| 709 } | 688 } |
| 710 | 689 |
| 711 if ([role isEqualToString:NSAccessibilityGroupRole] || | 690 if ([role isEqualToString:NSAccessibilityGroupRole] || |
| 712 [role isEqualToString:NSAccessibilityRadioButtonRole]) { | 691 [role isEqualToString:NSAccessibilityRadioButtonRole]) { |
| 713 std::string role; | 692 std::string role; |
| 714 if (browserAccessibility_->GetHtmlAttribute("role", &role)) { | 693 if (browserAccessibility_->GetHtmlAttribute("role", &role)) { |
| 715 AccessibilityNodeData::Role internalRole = | 694 WebKit::WebAXRole internalRole = [self internalRole]; |
| 716 [self internalRole]; | 695 if ((internalRole != WebKit::WebAXRoleGroup && |
| 717 if ((internalRole != AccessibilityNodeData::ROLE_GROUP && | 696 internalRole != WebKit::WebAXRoleListItem) || |
| 718 internalRole != AccessibilityNodeData::ROLE_LIST_ITEM) || | 697 internalRole == WebKit::WebAXRoleTab) { |
| 719 internalRole == AccessibilityNodeData::ROLE_TAB) { | |
| 720 // TODO(dtseng): This is not localized; see crbug/84814. | 698 // TODO(dtseng): This is not localized; see crbug/84814. |
| 721 return base::SysUTF8ToNSString(role); | 699 return base::SysUTF8ToNSString(role); |
| 722 } | 700 } |
| 723 } | 701 } |
| 724 } | 702 } |
| 725 | 703 |
| 726 switch([self internalRole]) { | 704 switch([self internalRole]) { |
| 727 case AccessibilityNodeData::ROLE_FOOTER: | 705 case WebKit::WebAXRoleFooter: |
| 728 return base::SysUTF16ToNSString(content_client->GetLocalizedString( | 706 return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
| 729 IDS_AX_ROLE_FOOTER)); | 707 IDS_AX_ROLE_FOOTER)); |
| 730 case AccessibilityNodeData::ROLE_SPIN_BUTTON: | 708 case WebKit::WebAXRoleSpinButton: |
| 731 // This control is similar to what VoiceOver calls a "stepper". | 709 // This control is similar to what VoiceOver calls a "stepper". |
| 732 return base::SysUTF16ToNSString(content_client->GetLocalizedString( | 710 return base::SysUTF16ToNSString(content_client->GetLocalizedString( |
| 733 IDS_AX_ROLE_STEPPER)); | 711 IDS_AX_ROLE_STEPPER)); |
| 734 default: | 712 default: |
| 735 break; | 713 break; |
| 736 } | 714 } |
| 737 | 715 |
| 738 return NSAccessibilityRoleDescription(role, nil); | 716 return NSAccessibilityRoleDescription(role, nil); |
| 739 } | 717 } |
| 740 | 718 |
| 741 - (NSArray*)rowHeaders { | 719 - (NSArray*)rowHeaders { |
| 742 if ([self internalRole] != AccessibilityNodeData::ROLE_TABLE && | 720 if ([self internalRole] != WebKit::WebAXRoleTable && |
| 743 [self internalRole] != AccessibilityNodeData::ROLE_GRID) { | 721 [self internalRole] != WebKit::WebAXRoleGrid) { |
| 744 return nil; | 722 return nil; |
| 745 } | 723 } |
| 746 | 724 |
| 747 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; | 725 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; |
| 748 const std::vector<int32>& uniqueCellIds = | 726 const std::vector<int32>& uniqueCellIds = |
| 749 browserAccessibility_->GetIntListAttribute( | 727 browserAccessibility_->GetIntListAttribute( |
| 750 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); | 728 AccessibilityNodeData::ATTR_UNIQUE_CELL_IDS); |
| 751 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { | 729 for (size_t i = 0; i < uniqueCellIds.size(); ++i) { |
| 752 int id = uniqueCellIds[i]; | 730 int id = uniqueCellIds[i]; |
| 753 BrowserAccessibility* cell = | 731 BrowserAccessibility* cell = |
| 754 browserAccessibility_->manager()->GetFromRendererID(id); | 732 browserAccessibility_->manager()->GetFromRendererID(id); |
| 755 if (cell && cell->role() == AccessibilityNodeData::ROLE_ROW_HEADER) | 733 if (cell && cell->role() == WebKit::WebAXRoleRowHeader) |
| 756 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; | 734 [ret addObject:cell->ToBrowserAccessibilityCocoa()]; |
| 757 } | 735 } |
| 758 return ret; | 736 return ret; |
| 759 } | 737 } |
| 760 | 738 |
| 761 - (NSValue*)rowIndexRange { | 739 - (NSValue*)rowIndexRange { |
| 762 if ([self internalRole] != AccessibilityNodeData::ROLE_CELL) | 740 if ([self internalRole] != WebKit::WebAXRoleCell) |
| 763 return nil; | 741 return nil; |
| 764 | 742 |
| 765 int row = -1; | 743 int row = -1; |
| 766 int rowspan = -1; | 744 int rowspan = -1; |
| 767 browserAccessibility_->GetIntAttribute( | 745 browserAccessibility_->GetIntAttribute( |
| 768 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); | 746 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_INDEX, &row); |
| 769 browserAccessibility_->GetIntAttribute( | 747 browserAccessibility_->GetIntAttribute( |
| 770 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan); | 748 AccessibilityNodeData::ATTR_TABLE_CELL_ROW_SPAN, &rowspan); |
| 771 if (row >= 0 && rowspan >= 1) | 749 if (row >= 0 && rowspan >= 1) |
| 772 return [NSValue valueWithRange:NSMakeRange(row, rowspan)]; | 750 return [NSValue valueWithRange:NSMakeRange(row, rowspan)]; |
| 773 return nil; | 751 return nil; |
| 774 } | 752 } |
| 775 | 753 |
| 776 - (NSArray*)rows { | 754 - (NSArray*)rows { |
| 777 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; | 755 NSMutableArray* ret = [[[NSMutableArray alloc] init] autorelease]; |
| 778 | 756 |
| 779 if ([self internalRole] == AccessibilityNodeData::ROLE_TABLE|| | 757 if ([self internalRole] == WebKit::WebAXRoleTable|| |
| 780 [self internalRole] == AccessibilityNodeData::ROLE_GRID) { | 758 [self internalRole] == WebKit::WebAXRoleGrid) { |
| 781 for (BrowserAccessibilityCocoa* child in [self children]) { | 759 for (BrowserAccessibilityCocoa* child in [self children]) { |
| 782 if ([[child role] isEqualToString:NSAccessibilityRowRole]) | 760 if ([[child role] isEqualToString:NSAccessibilityRowRole]) |
| 783 [ret addObject:child]; | 761 [ret addObject:child]; |
| 784 } | 762 } |
| 785 } else if ([self internalRole] == AccessibilityNodeData::ROLE_COLUMN) { | 763 } else if ([self internalRole] == WebKit::WebAXRoleColumn) { |
| 786 const std::vector<int32>& indirectChildIds = | 764 const std::vector<int32>& indirectChildIds = |
| 787 browserAccessibility_->GetIntListAttribute( | 765 browserAccessibility_->GetIntListAttribute( |
| 788 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); | 766 AccessibilityNodeData::ATTR_INDIRECT_CHILD_IDS); |
| 789 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { | 767 for (uint32 i = 0; i < indirectChildIds.size(); ++i) { |
| 790 int id = indirectChildIds[i]; | 768 int id = indirectChildIds[i]; |
| 791 BrowserAccessibility* rowElement = | 769 BrowserAccessibility* rowElement = |
| 792 browserAccessibility_->manager()->GetFromRendererID(id); | 770 browserAccessibility_->manager()->GetFromRendererID(id); |
| 793 if (rowElement) | 771 if (rowElement) |
| 794 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()]; | 772 [ret addObject:rowElement->ToBrowserAccessibilityCocoa()]; |
| 795 } | 773 } |
| 796 } | 774 } |
| 797 | 775 |
| 798 return ret; | 776 return ret; |
| 799 } | 777 } |
| 800 | 778 |
| 801 // Returns the size of this object. | 779 // Returns the size of this object. |
| 802 - (NSValue*)size { | 780 - (NSValue*)size { |
| 803 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect(); | 781 gfx::Rect bounds = browserAccessibility_->GetLocalBoundsRect(); |
| 804 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())]; | 782 return [NSValue valueWithSize:NSMakeSize(bounds.width(), bounds.height())]; |
| 805 } | 783 } |
| 806 | 784 |
| 807 // Returns a subrole based upon the role. | 785 // Returns a subrole based upon the role. |
| 808 - (NSString*) subrole { | 786 - (NSString*) subrole { |
| 809 AccessibilityNodeData::Role browserAccessibilityRole = [self internalRole]; | 787 WebKit::WebAXRole browserAccessibilityRole = [self internalRole]; |
| 810 if (browserAccessibilityRole == AccessibilityNodeData::ROLE_TEXT_FIELD && | 788 if (browserAccessibilityRole == WebKit::WebAXRoleTextField && |
| 811 GetState(browserAccessibility_, AccessibilityNodeData::STATE_PROTECTED)) { | 789 GetState(browserAccessibility_, WebKit::WebAXStateProtected)) { |
| 812 return @"AXSecureTextField"; | 790 return @"AXSecureTextField"; |
| 813 } | 791 } |
| 814 | 792 |
| 815 NSString* htmlTag = NSStringForStringAttribute( | 793 NSString* htmlTag = NSStringForStringAttribute( |
| 816 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG); | 794 browserAccessibility_, AccessibilityNodeData::ATTR_HTML_TAG); |
| 817 | 795 |
| 818 if (browserAccessibilityRole == AccessibilityNodeData::ROLE_LIST) { | 796 if (browserAccessibilityRole == WebKit::WebAXRoleList) { |
| 819 if ([htmlTag isEqualToString:@"ul"] || | 797 if ([htmlTag isEqualToString:@"ul"] || |
| 820 [htmlTag isEqualToString:@"ol"]) { | 798 [htmlTag isEqualToString:@"ol"]) { |
| 821 return @"AXContentList"; | 799 return @"AXContentList"; |
| 822 } else if ([htmlTag isEqualToString:@"dl"]) { | 800 } else if ([htmlTag isEqualToString:@"dl"]) { |
| 823 return @"AXDescriptionList"; | 801 return @"AXDescriptionList"; |
| 824 } | 802 } |
| 825 } | 803 } |
| 826 | 804 |
| 827 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole); | 805 return NativeSubroleFromAccessibilityNodeDataRole(browserAccessibilityRole); |
| 828 } | 806 } |
| 829 | 807 |
| 830 // Returns all tabs in this subtree. | 808 // Returns all tabs in this subtree. |
| 831 - (NSArray*)tabs { | 809 - (NSArray*)tabs { |
| 832 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; | 810 NSMutableArray* tabSubtree = [[[NSMutableArray alloc] init] autorelease]; |
| 833 | 811 |
| 834 if ([self internalRole] == AccessibilityNodeData::ROLE_TAB) | 812 if ([self internalRole] == WebKit::WebAXRoleTab) |
| 835 [tabSubtree addObject:self]; | 813 [tabSubtree addObject:self]; |
| 836 | 814 |
| 837 for (uint i=0; i < [[self children] count]; ++i) { | 815 for (uint i=0; i < [[self children] count]; ++i) { |
| 838 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs]; | 816 NSArray* tabChildren = [[[self children] objectAtIndex:i] tabs]; |
| 839 if ([tabChildren count] > 0) | 817 if ([tabChildren count] > 0) |
| 840 [tabSubtree addObjectsFromArray:tabChildren]; | 818 [tabSubtree addObjectsFromArray:tabChildren]; |
| 841 } | 819 } |
| 842 | 820 |
| 843 return tabSubtree; | 821 return tabSubtree; |
| 844 } | 822 } |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 879 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) { | 857 AccessibilityNodeData::ATTR_HIERARCHICAL_LEVEL, &level)) { |
| 880 return [NSNumber numberWithInt:level]; | 858 return [NSNumber numberWithInt:level]; |
| 881 } | 859 } |
| 882 } else if ([role isEqualToString:NSAccessibilityButtonRole]) { | 860 } else if ([role isEqualToString:NSAccessibilityButtonRole]) { |
| 883 // AXValue does not make sense for pure buttons. | 861 // AXValue does not make sense for pure buttons. |
| 884 return @""; | 862 return @""; |
| 885 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] || | 863 } else if ([role isEqualToString:NSAccessibilityCheckBoxRole] || |
| 886 [role isEqualToString:NSAccessibilityRadioButtonRole]) { | 864 [role isEqualToString:NSAccessibilityRadioButtonRole]) { |
| 887 int value = 0; | 865 int value = 0; |
| 888 value = GetState( | 866 value = GetState( |
| 889 browserAccessibility_, AccessibilityNodeData::STATE_CHECKED) ? 1 : 0; | 867 browserAccessibility_, WebKit::WebAXStateChecked) ? 1 : 0; |
| 890 value = GetState( | 868 value = GetState( |
| 891 browserAccessibility_, AccessibilityNodeData::STATE_SELECTED) ? | 869 browserAccessibility_, WebKit::WebAXStateSelected) ? |
| 892 1 : | 870 1 : |
| 893 value; | 871 value; |
| 894 | 872 |
| 895 if (browserAccessibility_->GetBoolAttribute( | 873 if (browserAccessibility_->GetBoolAttribute( |
| 896 AccessibilityNodeData::ATTR_BUTTON_MIXED)) { | 874 AccessibilityNodeData::ATTR_BUTTON_MIXED)) { |
| 897 value = 2; | 875 value = 2; |
| 898 } | 876 } |
| 899 return [NSNumber numberWithInt:value]; | 877 return [NSNumber numberWithInt:value]; |
| 900 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || | 878 } else if ([role isEqualToString:NSAccessibilityProgressIndicatorRole] || |
| 901 [role isEqualToString:NSAccessibilitySliderRole] || | 879 [role isEqualToString:NSAccessibilitySliderRole] || |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 949 - (NSArray*)visibleColumns { | 927 - (NSArray*)visibleColumns { |
| 950 return [self columns]; | 928 return [self columns]; |
| 951 } | 929 } |
| 952 | 930 |
| 953 - (NSArray*)visibleRows { | 931 - (NSArray*)visibleRows { |
| 954 return [self rows]; | 932 return [self rows]; |
| 955 } | 933 } |
| 956 | 934 |
| 957 - (NSNumber*)visited { | 935 - (NSNumber*)visited { |
| 958 return [NSNumber numberWithBool: | 936 return [NSNumber numberWithBool: |
| 959 GetState(browserAccessibility_, AccessibilityNodeData::STATE_TRAVERSED)]; | 937 GetState(browserAccessibility_, WebKit::WebAXStateVisited)]; |
| 960 } | 938 } |
| 961 | 939 |
| 962 - (id)window { | 940 - (id)window { |
| 963 return [delegate_ window]; | 941 return [delegate_ window]; |
| 964 } | 942 } |
| 965 | 943 |
| 966 - (NSString*)methodNameForAttribute:(NSString*)attribute { | 944 - (NSString*)methodNameForAttribute:(NSString*)attribute { |
| 967 return [attributeToMethodNameMap objectForKey:attribute]; | 945 return [attributeToMethodNameMap objectForKey:attribute]; |
| 968 } | 946 } |
| 969 | 947 |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1047 if (line_index < 0 || line_index >= line_count) | 1025 if (line_index < 0 || line_index >= line_count) |
| 1048 return nil; | 1026 return nil; |
| 1049 int start = line_index > 0 ? line_breaks[line_index - 1] : 0; | 1027 int start = line_index > 0 ? line_breaks[line_index - 1] : 0; |
| 1050 int end = line_index < line_count - 1 ? line_breaks[line_index] : len; | 1028 int end = line_index < line_count - 1 ? line_breaks[line_index] : len; |
| 1051 return [NSValue valueWithRange: | 1029 return [NSValue valueWithRange: |
| 1052 NSMakeRange(start, end - start)]; | 1030 NSMakeRange(start, end - start)]; |
| 1053 } | 1031 } |
| 1054 | 1032 |
| 1055 if ([attribute isEqualToString: | 1033 if ([attribute isEqualToString: |
| 1056 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { | 1034 NSAccessibilityCellForColumnAndRowParameterizedAttribute]) { |
| 1057 if ([self internalRole] != AccessibilityNodeData::ROLE_TABLE && | 1035 if ([self internalRole] != WebKit::WebAXRoleTable && |
| 1058 [self internalRole] != AccessibilityNodeData::ROLE_GRID) { | 1036 [self internalRole] != WebKit::WebAXRoleGrid) { |
| 1059 return nil; | 1037 return nil; |
| 1060 } | 1038 } |
| 1061 if (![parameter isKindOfClass:[NSArray self]]) | 1039 if (![parameter isKindOfClass:[NSArray self]]) |
| 1062 return nil; | 1040 return nil; |
| 1063 NSArray* array = parameter; | 1041 NSArray* array = parameter; |
| 1064 int column = [[array objectAtIndex:0] intValue]; | 1042 int column = [[array objectAtIndex:0] intValue]; |
| 1065 int row = [[array objectAtIndex:1] intValue]; | 1043 int row = [[array objectAtIndex:1] intValue]; |
| 1066 int num_columns = browserAccessibility_->GetIntAttribute( | 1044 int num_columns = browserAccessibility_->GetIntAttribute( |
| 1067 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT); | 1045 AccessibilityNodeData::ATTR_TABLE_COLUMN_COUNT); |
| 1068 int num_rows = browserAccessibility_->GetIntAttribute( | 1046 int num_rows = browserAccessibility_->GetIntAttribute( |
| 1069 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT); | 1047 AccessibilityNodeData::ATTR_TABLE_ROW_COUNT); |
| 1070 if (column < 0 || column >= num_columns || | 1048 if (column < 0 || column >= num_columns || |
| 1071 row < 0 || row >= num_rows) { | 1049 row < 0 || row >= num_rows) { |
| 1072 return nil; | 1050 return nil; |
| 1073 } | 1051 } |
| 1074 for (size_t i = 0; | 1052 for (size_t i = 0; |
| 1075 i < browserAccessibility_->child_count(); | 1053 i < browserAccessibility_->child_count(); |
| 1076 ++i) { | 1054 ++i) { |
| 1077 BrowserAccessibility* child = browserAccessibility_->GetChild(i); | 1055 BrowserAccessibility* child = browserAccessibility_->GetChild(i); |
| 1078 if (child->role() != AccessibilityNodeData::ROLE_ROW) | 1056 if (child->role() != WebKit::WebAXRoleRow) |
| 1079 continue; | 1057 continue; |
| 1080 int rowIndex; | 1058 int rowIndex; |
| 1081 if (!child->GetIntAttribute( | 1059 if (!child->GetIntAttribute( |
| 1082 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) { | 1060 AccessibilityNodeData::ATTR_TABLE_ROW_INDEX, &rowIndex)) { |
| 1083 continue; | 1061 continue; |
| 1084 } | 1062 } |
| 1085 if (rowIndex < row) | 1063 if (rowIndex < row) |
| 1086 continue; | 1064 continue; |
| 1087 if (rowIndex > row) | 1065 if (rowIndex > row) |
| 1088 break; | 1066 break; |
| 1089 for (size_t j = 0; | 1067 for (size_t j = 0; |
| 1090 j < child->child_count(); | 1068 j < child->child_count(); |
| 1091 ++j) { | 1069 ++j) { |
| 1092 BrowserAccessibility* cell = child->GetChild(j); | 1070 BrowserAccessibility* cell = child->GetChild(j); |
| 1093 if (cell->role() != AccessibilityNodeData::ROLE_CELL) | 1071 if (cell->role() != WebKit::WebAXRoleCell) |
| 1094 continue; | 1072 continue; |
| 1095 int colIndex; | 1073 int colIndex; |
| 1096 if (!cell->GetIntAttribute( | 1074 if (!cell->GetIntAttribute( |
| 1097 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, | 1075 AccessibilityNodeData::ATTR_TABLE_CELL_COLUMN_INDEX, |
| 1098 &colIndex)) { | 1076 &colIndex)) { |
| 1099 continue; | 1077 continue; |
| 1100 } | 1078 } |
| 1101 if (colIndex == column) | 1079 if (colIndex == column) |
| 1102 return cell->ToBrowserAccessibilityCocoa(); | 1080 return cell->ToBrowserAccessibilityCocoa(); |
| 1103 if (colIndex > column) | 1081 if (colIndex > column) |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1356 } | 1334 } |
| 1357 | 1335 |
| 1358 // Returns whether or not the specified attribute can be set by the | 1336 // Returns whether or not the specified attribute can be set by the |
| 1359 // accessibility API via |accessibilitySetValue:forAttribute:|. | 1337 // accessibility API via |accessibilitySetValue:forAttribute:|. |
| 1360 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { | 1338 - (BOOL)accessibilityIsAttributeSettable:(NSString*)attribute { |
| 1361 if (!browserAccessibility_) | 1339 if (!browserAccessibility_) |
| 1362 return nil; | 1340 return nil; |
| 1363 | 1341 |
| 1364 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) | 1342 if ([attribute isEqualToString:NSAccessibilityFocusedAttribute]) |
| 1365 return GetState(browserAccessibility_, | 1343 return GetState(browserAccessibility_, |
| 1366 AccessibilityNodeData::STATE_FOCUSABLE); | 1344 WebKit::WebAXStateFocusable); |
| 1367 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { | 1345 if ([attribute isEqualToString:NSAccessibilityValueAttribute]) { |
| 1368 return browserAccessibility_->GetBoolAttribute( | 1346 return browserAccessibility_->GetBoolAttribute( |
| 1369 AccessibilityNodeData::ATTR_CAN_SET_VALUE); | 1347 AccessibilityNodeData::ATTR_CAN_SET_VALUE); |
| 1370 } | 1348 } |
| 1371 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] && | 1349 if ([attribute isEqualToString:NSAccessibilitySelectedTextRangeAttribute] && |
| 1372 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] || | 1350 ([[self role] isEqualToString:NSAccessibilityTextFieldRole] || |
| 1373 [[self role] isEqualToString:NSAccessibilityTextAreaRole])) | 1351 [[self role] isEqualToString:NSAccessibilityTextAreaRole])) |
| 1374 return YES; | 1352 return YES; |
| 1375 | 1353 |
| 1376 return NO; | 1354 return NO; |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1472 return [super hash]; | 1450 return [super hash]; |
| 1473 return browserAccessibility_->renderer_id(); | 1451 return browserAccessibility_->renderer_id(); |
| 1474 } | 1452 } |
| 1475 | 1453 |
| 1476 - (BOOL)accessibilityShouldUseUniqueId { | 1454 - (BOOL)accessibilityShouldUseUniqueId { |
| 1477 return YES; | 1455 return YES; |
| 1478 } | 1456 } |
| 1479 | 1457 |
| 1480 @end | 1458 @end |
| 1481 | 1459 |
| OLD | NEW |