OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2011 Apple Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 { "treegrid", TreeGridRole }, | 123 { "treegrid", TreeGridRole }, |
124 { "treeitem", TreeItemRole } | 124 { "treeitem", TreeItemRole } |
125 }; | 125 }; |
126 ARIARoleMap* roleMap = new ARIARoleMap; | 126 ARIARoleMap* roleMap = new ARIARoleMap; |
127 | 127 |
128 for (size_t i = 0; i < WTF_ARRAY_LENGTH(roles); ++i) | 128 for (size_t i = 0; i < WTF_ARRAY_LENGTH(roles); ++i) |
129 roleMap->set(roles[i].ariaRole, roles[i].webcoreRole); | 129 roleMap->set(roles[i].ariaRole, roles[i].webcoreRole); |
130 return roleMap; | 130 return roleMap; |
131 } | 131 } |
132 | 132 |
133 AXObject::AXObject() | 133 struct RoleNameEntry { |
134 AccessibilityRole webcoreRole; | |
135 String roleName; | |
136 }; | |
137 | |
138 static Vector<AtomicString>* createRoleNameVector() | |
139 { | |
140 const RoleNameEntry roleNames[] = { | |
141 { NoRole, "none" }, | |
dmazzoni
2014/12/09 00:49:51
Actually there is an ARIA role of "none" now, it m
aboxhall
2014/12/13 01:38:36
Good point, although I note it doesn't seem to wor
dmazzoni
2014/12/16 19:18:19
The spec here:
http://www.w3.org/TR/wai-aria-1.1/#
aboxhall
2014/12/16 23:56:37
Ah - I didn't look at the 1.1 spec.
As discussed
| |
142 { AlertDialogRole, "alertDialog" }, | |
143 { AlertRole, "alert" }, | |
144 { AnnotationRole, "annotation" }, | |
145 { ApplicationRole, "application" }, | |
146 { ArticleRole, "article" }, | |
147 { BannerRole, "banner" }, | |
148 { BlockquoteRole, "blockquote" }, | |
149 { BusyIndicatorRole, "busyIndicator" }, | |
150 { ButtonRole, "button" }, | |
151 { CanvasRole, "canvas" }, | |
152 { CellRole, "cell" }, | |
153 { CheckBoxRole, "checkBox" }, | |
154 { ColorWellRole, "colorWell" }, | |
155 { ColumnHeaderRole, "columnHeader" }, | |
156 { ColumnRole, "column" }, | |
157 { ComboBoxRole, "comboBox" }, | |
158 { ComplementaryRole, "complementary" }, | |
159 { ContentInfoRole, "contentInfo" }, | |
160 { DateRole, "date" }, | |
161 { DateTimeRole, "dateTime" }, | |
162 { DefinitionRole, "definition" }, | |
163 { DescriptionListDetailRole, "descriptionListDetail" }, | |
164 { DescriptionListRole, "descriptionList" }, | |
165 { DescriptionListTermRole, "descriptionListTerm" }, | |
166 { DetailsRole, "details" }, | |
167 { DialogRole, "dialog" }, | |
168 { DirectoryRole, "directory" }, | |
169 { DisclosureTriangleRole, "disclosureTriangle" }, | |
170 { DivRole, "div" }, | |
171 { DocumentRole, "document" }, | |
172 { EmbeddedObjectRole, "embeddedObject" }, | |
173 { FigcaptionRole, "figcaption" }, | |
174 { FigureRole, "figure" }, | |
175 { FooterRole, "footer" }, | |
176 { FormRole, "form" }, | |
177 { GridRole, "grid" }, | |
178 { GroupRole, "group" }, | |
179 { HeadingRole, "heading" }, | |
180 { IframeRole, "iframe" }, | |
181 { IgnoredRole, "ignored" }, | |
182 { ImageMapLinkRole, "imageMapLink" }, | |
183 { ImageMapRole, "imageMap" }, | |
184 { ImageRole, "image" }, | |
185 { InlineTextBoxRole, "inlineTextBox" }, | |
186 { LabelRole, "label" }, | |
187 { LegendRole, "legend" }, | |
188 { LinkRole, "link" }, | |
189 { ListBoxOptionRole, "listBoxOption" }, | |
190 { ListBoxRole, "listBox" }, | |
191 { ListItemRole, "listItem" }, | |
192 { ListMarkerRole, "listMarker" }, | |
193 { ListRole, "list" }, | |
194 { LogRole, "log" }, | |
195 { MainRole, "main" }, | |
196 { MarqueeRole, "marquee" }, | |
197 { MathElementRole, "mathElement" }, | |
198 { MathRole, "math" }, | |
199 { MenuBarRole, "menuBar" }, | |
200 { MenuButtonRole, "menuButton" }, | |
201 { MenuItemRole, "menuItem" }, | |
202 { MenuItemCheckBoxRole, "menuItemCheckBox" }, | |
203 { MenuItemRadioRole, "menuItemRadio" }, | |
204 { MenuListOptionRole, "menuListOption" }, | |
205 { MenuListPopupRole, "menuListPopup" }, | |
206 { MenuRole, "menu" }, | |
207 { MeterRole, "meter" }, | |
208 { NavigationRole, "navigation" }, | |
209 { NoneRole, "none" }, | |
210 { NoteRole, "note" }, | |
211 { OutlineRole, "outline" }, | |
212 { ParagraphRole, "paragraph" }, | |
213 { PopUpButtonRole, "popUpButton" }, | |
214 { PreRole, "pre" }, | |
215 { PresentationalRole, "presentational" }, | |
216 { ProgressIndicatorRole, "progressIndicator" }, | |
217 { RadioButtonRole, "radioButton" }, | |
218 { RadioGroupRole, "radioGroup" }, | |
219 { RegionRole, "region" }, | |
220 { RootWebAreaRole, "rootWebArea" }, | |
221 { RowHeaderRole, "rowHeader" }, | |
222 { RowRole, "row" }, | |
223 { RubyRole, "ruby" }, | |
224 { RulerRole, "ruler" }, | |
225 { SVGRootRole, "svgRoot" }, | |
226 { ScrollAreaRole, "scrollArea" }, | |
227 { ScrollBarRole, "scrollBar" }, | |
228 { SeamlessWebAreaRole, "seamlessWebArea" }, | |
229 { SearchRole, "search" }, | |
230 { SliderRole, "slider" }, | |
231 { SliderThumbRole, "sliderThumb" }, | |
232 { SpinButtonPartRole, "spinButtonPart" }, | |
233 { SpinButtonRole, "spinButton" }, | |
234 { SplitterRole, "splitter" }, | |
235 { StaticTextRole, "staticText" }, | |
236 { StatusRole, "status" }, | |
237 { TabGroupRole, "tabGroup" }, | |
238 { TabListRole, "tabList" }, | |
239 { TabPanelRole, "tabPanel" }, | |
240 { TabRole, "tab" }, | |
241 { TableHeaderContainerRole, "tableHeaderContainer" }, | |
242 { TableRole, "table" }, | |
243 { TextAreaRole, "textArea" }, | |
244 { TextFieldRole, "textField" }, | |
245 { TimeRole, "time" }, | |
246 { TimerRole, "timer" }, | |
247 { ToggleButtonRole, "toggleButton" }, | |
248 { ToolbarRole, "toolbar" }, | |
249 { TreeGridRole, "treeGrid" }, | |
250 { TreeItemRole, "treeItem" }, | |
251 { TreeRole, "tree" }, | |
252 { UnknownRole, "unknown" }, | |
253 { UserInterfaceTooltipRole, "userInterfaceTooltip" }, | |
254 { WebAreaRole, "webArea" }, | |
255 { WindowRole, "window" } | |
256 }; | |
257 Vector<AtomicString>* roleNameVector = new Vector<AtomicString>(NumRoles); | |
258 | |
259 for (size_t i = 0; i < WTF_ARRAY_LENGTH(roleNames); ++i) { | |
260 roleNameVector->insert(roleNames[i].webcoreRole, | |
261 AtomicString(roleNames[i].roleName)); | |
262 } | |
263 return roleNameVector; | |
264 } | |
265 | |
266 AXObject::AXObject(AXObjectCache* axObjectCache) | |
134 : m_id(0) | 267 : m_id(0) |
135 , m_haveChildren(false) | 268 , m_haveChildren(false) |
136 , m_role(UnknownRole) | 269 , m_role(UnknownRole) |
137 , m_lastKnownIsIgnoredValue(DefaultBehavior) | 270 , m_lastKnownIsIgnoredValue(DefaultBehavior) |
138 , m_detached(false) | 271 , m_detached(false) |
139 , m_parent(0) | 272 , m_parent(0) |
140 , m_lastModificationCount(-1) | 273 , m_lastModificationCount(-1) |
141 , m_cachedIsIgnored(false) | 274 , m_cachedIsIgnored(false) |
142 , m_cachedLiveRegionRoot(0) | 275 , m_cachedLiveRegionRoot(0) |
276 , m_axObjectCache(toAXObjectCacheImpl(axObjectCache)) | |
143 { | 277 { |
144 } | 278 } |
145 | 279 |
146 AXObject::~AXObject() | 280 AXObject::~AXObject() |
147 { | 281 { |
148 ASSERT(isDetached()); | 282 ASSERT(isDetached()); |
149 } | 283 } |
150 | 284 |
151 void AXObject::detach() | 285 void AXObject::detach() |
152 { | 286 { |
153 // Clear any children and call detachFromParent on them so that | 287 // Clear any children and call detachFromParent on them so that |
154 // no children are left with dangling pointers to their parent. | 288 // no children are left with dangling pointers to their parent. |
155 clearChildren(); | 289 clearChildren(); |
156 | 290 |
157 m_detached = true; | 291 m_detached = true; |
158 } | 292 } |
159 | 293 |
160 bool AXObject::isDetached() const | 294 bool AXObject::isDetached() const |
161 { | 295 { |
162 return m_detached; | 296 return m_detached; |
163 } | 297 } |
164 | 298 |
165 AXObjectCacheImpl* AXObject::axObjectCache() const | 299 AXObjectCacheImpl* AXObject::axObjectCache() const |
166 { | 300 { |
167 Document* doc = document(); | 301 return m_axObjectCache; |
168 if (doc) | |
169 return toAXObjectCacheImpl(doc->axObjectCache()); | |
170 return 0; | |
171 } | 302 } |
172 | 303 |
173 bool AXObject::isARIATextControl() const | 304 bool AXObject::isARIATextControl() const |
174 { | 305 { |
175 return ariaRoleAttribute() == TextAreaRole || ariaRoleAttribute() == TextFie ldRole; | 306 return ariaRoleAttribute() == TextAreaRole || ariaRoleAttribute() == TextFie ldRole; |
176 } | 307 } |
177 | 308 |
178 bool AXObject::isButton() const | 309 bool AXObject::isButton() const |
179 { | 310 { |
180 AccessibilityRole role = roleValue(); | 311 AccessibilityRole role = roleValue(); |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
971 if (ariaPressedIsPresent()) | 1102 if (ariaPressedIsPresent()) |
972 return ToggleButtonRole; | 1103 return ToggleButtonRole; |
973 if (ariaHasPopup()) | 1104 if (ariaHasPopup()) |
974 return PopUpButtonRole; | 1105 return PopUpButtonRole; |
975 // We don't contemplate RadioButtonRole, as it depends on the input | 1106 // We don't contemplate RadioButtonRole, as it depends on the input |
976 // type. | 1107 // type. |
977 | 1108 |
978 return ButtonRole; | 1109 return ButtonRole; |
979 } | 1110 } |
980 | 1111 |
1112 const AtomicString& AXObject::roleName(const AccessibilityRole role) | |
1113 { | |
1114 static const Vector<AtomicString>* roleNameVector = createRoleNameVector(); | |
1115 | |
1116 return roleNameVector->at(role); | |
1117 } | |
1118 | |
981 } // namespace blink | 1119 } // namespace blink |
OLD | NEW |