Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1261)

Unified Diff: Source/modules/accessibility/AXObject.cpp

Issue 742353004: Implement computedRole and computedName (behind a flag) (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Finished pulling out ScopedAXObjectCache etc. Many fprintfs remain. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/modules/accessibility/AXObject.cpp
diff --git a/Source/modules/accessibility/AXObject.cpp b/Source/modules/accessibility/AXObject.cpp
index 2185677552cafc4a1ddf8fcd6c0d33562d30ccd3..ab78b65a05b074f463473a7c370d40175a4f4628 100644
--- a/Source/modules/accessibility/AXObject.cpp
+++ b/Source/modules/accessibility/AXObject.cpp
@@ -130,7 +130,140 @@ static ARIARoleMap* createARIARoleMap()
return roleMap;
}
-AXObject::AXObject()
+struct RoleNameEntry {
+ AccessibilityRole webcoreRole;
+ String roleName;
+};
+
+static Vector<AtomicString>* createRoleNameVector()
+{
+ const RoleNameEntry roleNames[] = {
+ { 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
+ { AlertDialogRole, "alertDialog" },
+ { AlertRole, "alert" },
+ { AnnotationRole, "annotation" },
+ { ApplicationRole, "application" },
+ { ArticleRole, "article" },
+ { BannerRole, "banner" },
+ { BlockquoteRole, "blockquote" },
+ { BusyIndicatorRole, "busyIndicator" },
+ { ButtonRole, "button" },
+ { CanvasRole, "canvas" },
+ { CellRole, "cell" },
+ { CheckBoxRole, "checkBox" },
+ { ColorWellRole, "colorWell" },
+ { ColumnHeaderRole, "columnHeader" },
+ { ColumnRole, "column" },
+ { ComboBoxRole, "comboBox" },
+ { ComplementaryRole, "complementary" },
+ { ContentInfoRole, "contentInfo" },
+ { DateRole, "date" },
+ { DateTimeRole, "dateTime" },
+ { DefinitionRole, "definition" },
+ { DescriptionListDetailRole, "descriptionListDetail" },
+ { DescriptionListRole, "descriptionList" },
+ { DescriptionListTermRole, "descriptionListTerm" },
+ { DetailsRole, "details" },
+ { DialogRole, "dialog" },
+ { DirectoryRole, "directory" },
+ { DisclosureTriangleRole, "disclosureTriangle" },
+ { DivRole, "div" },
+ { DocumentRole, "document" },
+ { EmbeddedObjectRole, "embeddedObject" },
+ { FigcaptionRole, "figcaption" },
+ { FigureRole, "figure" },
+ { FooterRole, "footer" },
+ { FormRole, "form" },
+ { GridRole, "grid" },
+ { GroupRole, "group" },
+ { HeadingRole, "heading" },
+ { IframeRole, "iframe" },
+ { IgnoredRole, "ignored" },
+ { ImageMapLinkRole, "imageMapLink" },
+ { ImageMapRole, "imageMap" },
+ { ImageRole, "image" },
+ { InlineTextBoxRole, "inlineTextBox" },
+ { LabelRole, "label" },
+ { LegendRole, "legend" },
+ { LinkRole, "link" },
+ { ListBoxOptionRole, "listBoxOption" },
+ { ListBoxRole, "listBox" },
+ { ListItemRole, "listItem" },
+ { ListMarkerRole, "listMarker" },
+ { ListRole, "list" },
+ { LogRole, "log" },
+ { MainRole, "main" },
+ { MarqueeRole, "marquee" },
+ { MathElementRole, "mathElement" },
+ { MathRole, "math" },
+ { MenuBarRole, "menuBar" },
+ { MenuButtonRole, "menuButton" },
+ { MenuItemRole, "menuItem" },
+ { MenuItemCheckBoxRole, "menuItemCheckBox" },
+ { MenuItemRadioRole, "menuItemRadio" },
+ { MenuListOptionRole, "menuListOption" },
+ { MenuListPopupRole, "menuListPopup" },
+ { MenuRole, "menu" },
+ { MeterRole, "meter" },
+ { NavigationRole, "navigation" },
+ { NoneRole, "none" },
+ { NoteRole, "note" },
+ { OutlineRole, "outline" },
+ { ParagraphRole, "paragraph" },
+ { PopUpButtonRole, "popUpButton" },
+ { PreRole, "pre" },
+ { PresentationalRole, "presentational" },
+ { ProgressIndicatorRole, "progressIndicator" },
+ { RadioButtonRole, "radioButton" },
+ { RadioGroupRole, "radioGroup" },
+ { RegionRole, "region" },
+ { RootWebAreaRole, "rootWebArea" },
+ { RowHeaderRole, "rowHeader" },
+ { RowRole, "row" },
+ { RubyRole, "ruby" },
+ { RulerRole, "ruler" },
+ { SVGRootRole, "svgRoot" },
+ { ScrollAreaRole, "scrollArea" },
+ { ScrollBarRole, "scrollBar" },
+ { SeamlessWebAreaRole, "seamlessWebArea" },
+ { SearchRole, "search" },
+ { SliderRole, "slider" },
+ { SliderThumbRole, "sliderThumb" },
+ { SpinButtonPartRole, "spinButtonPart" },
+ { SpinButtonRole, "spinButton" },
+ { SplitterRole, "splitter" },
+ { StaticTextRole, "staticText" },
+ { StatusRole, "status" },
+ { TabGroupRole, "tabGroup" },
+ { TabListRole, "tabList" },
+ { TabPanelRole, "tabPanel" },
+ { TabRole, "tab" },
+ { TableHeaderContainerRole, "tableHeaderContainer" },
+ { TableRole, "table" },
+ { TextAreaRole, "textArea" },
+ { TextFieldRole, "textField" },
+ { TimeRole, "time" },
+ { TimerRole, "timer" },
+ { ToggleButtonRole, "toggleButton" },
+ { ToolbarRole, "toolbar" },
+ { TreeGridRole, "treeGrid" },
+ { TreeItemRole, "treeItem" },
+ { TreeRole, "tree" },
+ { UnknownRole, "unknown" },
+ { UserInterfaceTooltipRole, "userInterfaceTooltip" },
+ { WebAreaRole, "webArea" },
+ { WindowRole, "window" }
+ };
+ Vector<AtomicString>* roleNameVector = new Vector<AtomicString>(NumRoles);
+
+ for (size_t i = 0; i < WTF_ARRAY_LENGTH(roleNames); ++i) {
+ roleNameVector->insert(roleNames[i].webcoreRole,
+ AtomicString(roleNames[i].roleName));
+ }
+ return roleNameVector;
+}
+
+AXObject::AXObject(AXObjectCache* axObjectCache)
: m_id(0)
, m_haveChildren(false)
, m_role(UnknownRole)
@@ -140,6 +273,7 @@ AXObject::AXObject()
, m_lastModificationCount(-1)
, m_cachedIsIgnored(false)
, m_cachedLiveRegionRoot(0)
+ , m_axObjectCache(toAXObjectCacheImpl(axObjectCache))
{
}
@@ -164,10 +298,7 @@ bool AXObject::isDetached() const
AXObjectCacheImpl* AXObject::axObjectCache() const
{
- Document* doc = document();
- if (doc)
- return toAXObjectCacheImpl(doc->axObjectCache());
- return 0;
+ return m_axObjectCache;
}
bool AXObject::isARIATextControl() const
@@ -978,4 +1109,11 @@ AccessibilityRole AXObject::buttonRoleType() const
return ButtonRole;
}
+const AtomicString& AXObject::roleName(const AccessibilityRole role)
+{
+ static const Vector<AtomicString>* roleNameVector = createRoleNameVector();
+
+ return roleNameVector->at(role);
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698