| Index: Source/modules/accessibility/AXObject.cpp
|
| diff --git a/Source/modules/accessibility/AXObject.cpp b/Source/modules/accessibility/AXObject.cpp
|
| index d4d99c2affaec06beb3b5ba635a6332c91b0ebb0..ad17c20560853f32c9bdf80c8068637092c48790 100644
|
| --- a/Source/modules/accessibility/AXObject.cpp
|
| +++ b/Source/modules/accessibility/AXObject.cpp
|
| @@ -49,80 +49,81 @@ namespace blink {
|
|
|
| using namespace HTMLNames;
|
|
|
| +namespace {
|
| typedef HashMap<String, AccessibilityRole, CaseFoldingHash> ARIARoleMap;
|
|
|
| struct RoleEntry {
|
| - String ariaRole;
|
| + const char* ariaRole;
|
| AccessibilityRole webcoreRole;
|
| };
|
|
|
| +const RoleEntry roles[] = {
|
| + { "alert", AlertRole },
|
| + { "alertdialog", AlertDialogRole },
|
| + { "application", ApplicationRole },
|
| + { "article", ArticleRole },
|
| + { "banner", BannerRole },
|
| + { "button", ButtonRole },
|
| + { "checkbox", CheckBoxRole },
|
| + { "complementary", ComplementaryRole },
|
| + { "contentinfo", ContentInfoRole },
|
| + { "dialog", DialogRole },
|
| + { "directory", DirectoryRole },
|
| + { "grid", GridRole },
|
| + { "gridcell", CellRole },
|
| + { "columnheader", ColumnHeaderRole },
|
| + { "combobox", ComboBoxRole },
|
| + { "definition", DefinitionRole },
|
| + { "document", DocumentRole },
|
| + { "rowheader", RowHeaderRole },
|
| + { "form", FormRole },
|
| + { "group", GroupRole },
|
| + { "heading", HeadingRole },
|
| + { "img", ImageRole },
|
| + { "link", LinkRole },
|
| + { "list", ListRole },
|
| + { "listitem", ListItemRole },
|
| + { "listbox", ListBoxRole },
|
| + { "log", LogRole },
|
| + { "main", MainRole },
|
| + { "marquee", MarqueeRole },
|
| + { "math", MathRole },
|
| + { "menu", MenuRole },
|
| + { "menubar", MenuBarRole },
|
| + { "menuitem", MenuItemRole },
|
| + { "menuitemcheckbox", MenuItemCheckBoxRole },
|
| + { "menuitemradio", MenuItemRadioRole },
|
| + { "note", NoteRole },
|
| + { "navigation", NavigationRole },
|
| + { "none", NoneRole },
|
| + { "option", ListBoxOptionRole },
|
| + { "presentation", PresentationalRole },
|
| + { "progressbar", ProgressIndicatorRole },
|
| + { "radio", RadioButtonRole },
|
| + { "radiogroup", RadioGroupRole },
|
| + { "region", RegionRole },
|
| + { "row", RowRole },
|
| + { "scrollbar", ScrollBarRole },
|
| + { "search", SearchRole },
|
| + { "separator", SplitterRole },
|
| + { "slider", SliderRole },
|
| + { "spinbutton", SpinButtonRole },
|
| + { "status", StatusRole },
|
| + { "tab", TabRole },
|
| + { "tablist", TabListRole },
|
| + { "tabpanel", TabPanelRole },
|
| + { "text", StaticTextRole },
|
| + { "textbox", TextAreaRole },
|
| + { "timer", TimerRole },
|
| + { "toolbar", ToolbarRole },
|
| + { "tooltip", UserInterfaceTooltipRole },
|
| + { "tree", TreeRole },
|
| + { "treegrid", TreeGridRole },
|
| + { "treeitem", TreeItemRole }
|
| +};
|
| +
|
| static ARIARoleMap* createARIARoleMap()
|
| {
|
| - const RoleEntry roles[] = {
|
| - { "alert", AlertRole },
|
| - { "alertdialog", AlertDialogRole },
|
| - { "application", ApplicationRole },
|
| - { "article", ArticleRole },
|
| - { "banner", BannerRole },
|
| - { "button", ButtonRole },
|
| - { "checkbox", CheckBoxRole },
|
| - { "complementary", ComplementaryRole },
|
| - { "contentinfo", ContentInfoRole },
|
| - { "dialog", DialogRole },
|
| - { "directory", DirectoryRole },
|
| - { "grid", GridRole },
|
| - { "gridcell", CellRole },
|
| - { "columnheader", ColumnHeaderRole },
|
| - { "combobox", ComboBoxRole },
|
| - { "definition", DefinitionRole },
|
| - { "document", DocumentRole },
|
| - { "rowheader", RowHeaderRole },
|
| - { "form", FormRole },
|
| - { "group", GroupRole },
|
| - { "heading", HeadingRole },
|
| - { "img", ImageRole },
|
| - { "link", LinkRole },
|
| - { "list", ListRole },
|
| - { "listitem", ListItemRole },
|
| - { "listbox", ListBoxRole },
|
| - { "log", LogRole },
|
| - // "option" isn't here because it may map to different roles depending on the parent element's role
|
| - { "main", MainRole },
|
| - { "marquee", MarqueeRole },
|
| - { "math", MathRole },
|
| - { "menu", MenuRole },
|
| - { "menubar", MenuBarRole },
|
| - { "menuitem", MenuItemRole },
|
| - { "menuitemcheckbox", MenuItemCheckBoxRole },
|
| - { "menuitemradio", MenuItemRadioRole },
|
| - { "note", NoteRole },
|
| - { "navigation", NavigationRole },
|
| - { "none", NoneRole },
|
| - { "option", ListBoxOptionRole },
|
| - { "presentation", PresentationalRole },
|
| - { "progressbar", ProgressIndicatorRole },
|
| - { "radio", RadioButtonRole },
|
| - { "radiogroup", RadioGroupRole },
|
| - { "region", RegionRole },
|
| - { "row", RowRole },
|
| - { "scrollbar", ScrollBarRole },
|
| - { "search", SearchRole },
|
| - { "separator", SplitterRole },
|
| - { "slider", SliderRole },
|
| - { "spinbutton", SpinButtonRole },
|
| - { "status", StatusRole },
|
| - { "tab", TabRole },
|
| - { "tablist", TabListRole },
|
| - { "tabpanel", TabPanelRole },
|
| - { "text", StaticTextRole },
|
| - { "textbox", TextAreaRole },
|
| - { "timer", TimerRole },
|
| - { "toolbar", ToolbarRole },
|
| - { "tooltip", UserInterfaceTooltipRole },
|
| - { "tree", TreeRole },
|
| - { "treegrid", TreeGridRole },
|
| - { "treeitem", TreeItemRole }
|
| - };
|
| ARIARoleMap* roleMap = new ARIARoleMap;
|
|
|
| for (size_t i = 0; i < WTF_ARRAY_LENGTH(roles); ++i)
|
| @@ -130,6 +131,20 @@ static ARIARoleMap* createARIARoleMap()
|
| return roleMap;
|
| }
|
|
|
| +static Vector<AtomicString>* createRoleNameVector()
|
| +{
|
| + Vector<AtomicString>* roleNameVector = new Vector<AtomicString>(NumRoles);
|
| + for (int i = 0; i < NumRoles; i++)
|
| + (*roleNameVector)[i] = nullAtom;
|
| +
|
| + for (size_t i = 0; i < WTF_ARRAY_LENGTH(roles); ++i)
|
| + (*roleNameVector)[roles[i].webcoreRole] = AtomicString(roles[i].ariaRole);
|
| +
|
| + return roleNameVector;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| AXObject::AXObject(AXObjectCacheImpl* axObjectCache)
|
| : m_id(0)
|
| , m_haveChildren(false)
|
| @@ -954,4 +969,11 @@ AccessibilityRole AXObject::buttonRoleType() const
|
| return ButtonRole;
|
| }
|
|
|
| +const AtomicString& AXObject::roleName(AccessibilityRole role)
|
| +{
|
| + static const Vector<AtomicString>* roleNameVector = createRoleNameVector();
|
| +
|
| + return roleNameVector->at(role);
|
| +}
|
| +
|
| } // namespace blink
|
|
|