Index: Source/modules/accessibility/AXRenderObject.cpp |
diff --git a/Source/modules/accessibility/AXRenderObject.cpp b/Source/modules/accessibility/AXRenderObject.cpp |
index dad5bff6c5d340eb100d5258322fc909b5d6ecb4..800231211eb824ed60199112614cf6145c27cdb6 100644 |
--- a/Source/modules/accessibility/AXRenderObject.cpp |
+++ b/Source/modules/accessibility/AXRenderObject.cpp |
@@ -264,36 +264,23 @@ AccessibilityRole AXRenderObject::determineAccessibilityRole() |
Node* node = m_renderer->node(); |
RenderBoxModelObject* cssBox = renderBoxModelObject(); |
- if (node && node->isLink()) { |
- if (cssBox && cssBox->isImage()) |
- return ImageMapRole; |
- return LinkRole; |
- } |
if ((cssBox && cssBox->isListItem()) || isHTMLLIElement(node)) |
return ListItemRole; |
if (m_renderer->isListMarker()) |
return ListMarkerRole; |
- if (isHTMLButtonElement(node)) |
- return buttonRoleType(); |
- if (isHTMLDetailsElement(node)) |
- return DetailsRole; |
- if (isHTMLSummaryElement(node)) { |
- if (node->parentElement() && isHTMLDetailsElement(node->parentElement())) |
- return DisclosureTriangleRole; |
- return UnknownRole; |
- } |
if (isHTMLLegendElement(node)) |
return LegendRole; |
if (m_renderer->isText()) |
return StaticTextRole; |
if (cssBox && cssBox->isImage()) { |
+ if (node && node->isLink()) |
+ return ImageMapRole; |
if (isHTMLInputElement(node)) |
return ariaHasPopup() ? PopUpButtonRole : ButtonRole; |
if (isSVGImage()) |
return SVGRootRole; |
return ImageRole; |
} |
- |
// Note: if JavaScript is disabled, the renderer won't be a RenderHTMLCanvas. |
if (isHTMLCanvasElement(node) && m_renderer->isCanvas()) |
return CanvasRole; |
@@ -301,53 +288,6 @@ AccessibilityRole AXRenderObject::determineAccessibilityRole() |
if (cssBox && cssBox->isRenderView()) |
return WebAreaRole; |
- if (cssBox && cssBox->isTextArea()) |
- return TextAreaRole; |
- |
- if (isHTMLInputElement(node)) { |
- HTMLInputElement& input = toHTMLInputElement(*node); |
- const AtomicString& type = input.type(); |
- if (type == InputTypeNames::button) { |
- if ((node->parentNode() && isHTMLMenuElement(node->parentNode())) || (parentObject() && parentObject()->roleValue() == MenuRole)) |
- return MenuItemRole; |
- return buttonRoleType(); |
- } |
- if (type == InputTypeNames::checkbox) { |
- if ((node->parentNode() && isHTMLMenuElement(node->parentNode())) || (parentObject() && parentObject()->roleValue() == MenuRole)) |
- return MenuItemCheckBoxRole; |
- return CheckBoxRole; |
- } |
- if (type == InputTypeNames::date) |
- return DateRole; |
- if (type == InputTypeNames::datetime |
- || type == InputTypeNames::datetime_local |
- || type == InputTypeNames::month |
- || type == InputTypeNames::week) |
- return DateTimeRole; |
- if (type == InputTypeNames::radio) { |
- if ((node->parentNode() && isHTMLMenuElement(node->parentNode())) || (parentObject() && parentObject()->roleValue() == MenuRole)) |
- return MenuItemRadioRole; |
- return RadioButtonRole; |
- } |
- if (type == InputTypeNames::file) |
- return ButtonRole; |
- if (type == InputTypeNames::number) |
- return SpinButtonRole; |
- if (input.isTextButton()) |
- return buttonRoleType(); |
- if (type == InputTypeNames::color) |
- return ColorWellRole; |
- if (type == InputTypeNames::time) |
- return TimeRole; |
- return TextFieldRole; |
- } |
- |
- if (cssBox && cssBox->isMenuList()) |
- return PopUpButtonRole; |
- |
- if (headingLevel()) |
- return HeadingRole; |
- |
if (m_renderer->isSVGImage()) |
return ImageRole; |
if (m_renderer->isSVGRoot()) |
@@ -356,9 +296,6 @@ AccessibilityRole AXRenderObject::determineAccessibilityRole() |
if (node && node->hasTagName(ddTag)) |
return DescriptionListDetailRole; |
- if (node && node->hasTagName(dlTag)) |
- return DescriptionListRole; |
- |
if (node && node->hasTagName(dtTag)) |
return DescriptionListTermRole; |
@@ -375,33 +312,12 @@ AccessibilityRole AXRenderObject::determineAccessibilityRole() |
if (m_renderer->isHR()) |
return SplitterRole; |
- if (isHTMLOutputElement(node)) |
- return StatusRole; |
- |
- if (isHTMLParagraphElement(node)) |
- return ParagraphRole; |
- |
- if (isHTMLLabelElement(node)) |
- return LabelRole; |
- |
- if (isHTMLRubyElement(node)) |
- return RubyRole; |
- |
- if (isHTMLDivElement(node)) |
- return DivRole; |
- |
- if (isHTMLMeterElement(node)) |
- return MeterRole; |
- |
if (isHTMLFormElement(node)) |
return FormRole; |
if (node && node->hasTagName(articleTag)) |
return ArticleRole; |
- if (node && node->hasTagName(blockquoteTag)) |
- return BlockquoteRole; |
- |
if (node && node->hasTagName(mainTag)) |
return MainRole; |
@@ -434,15 +350,6 @@ AccessibilityRole AXRenderObject::determineAccessibilityRole() |
return IframeRole; |
} |
- if (isEmbeddedObject()) |
- return EmbeddedObjectRole; |
- |
- if (node && node->hasTagName(figcaptionTag)) |
- return FigcaptionRole; |
- |
- if (node && node->hasTagName(figureTag)) |
- return FigureRole; |
- |
// There should only be one banner/contentInfo per page. If header/footer are being used within an article or section |
// then it should not be exposed as whole page's banner/contentInfo |
if (node && node->hasTagName(headerTag) && !isDescendantOfElementType(articleTag) && !isDescendantOfElementType(sectionTag)) |
@@ -450,8 +357,9 @@ AccessibilityRole AXRenderObject::determineAccessibilityRole() |
if (node && node->hasTagName(footerTag) && !isDescendantOfElementType(articleTag) && !isDescendantOfElementType(sectionTag)) |
return FooterRole; |
- if (isHTMLAnchorElement(node) && isClickable()) |
- return LinkRole; |
+ AccessibilityRole role = AXNodeObject::determineAccessibilityRoleUtil(); |
+ if (role != UnknownRole) |
+ return role; |
if (m_renderer->isRenderBlockFlow()) |
return GroupRole; |