| Index: Source/modules/accessibility/AXListBoxOption.cpp
|
| diff --git a/Source/modules/accessibility/AXListBoxOption.cpp b/Source/modules/accessibility/AXListBoxOption.cpp
|
| index 58a91d3a8961d74c081a87413373c69a193e9678..ae3e4afc062ed7ef56f56429f8d4ca5289a46083 100644
|
| --- a/Source/modules/accessibility/AXListBoxOption.cpp
|
| +++ b/Source/modules/accessibility/AXListBoxOption.cpp
|
| @@ -58,9 +58,33 @@ AccessibilityRole AXListBoxOption::roleValue() const
|
| AccessibilityRole ariaRole = ariaRoleAttribute();
|
| if (ariaRole != UnknownRole)
|
| return ariaRole;
|
| +
|
| + // http://www.w3.org/TR/wai-aria/complete#presentation
|
| + // ARIA spec says that the presentation role causes a given element to be treated
|
| + // as having no role or to be removed from the accessibility tree, but does not cause the
|
| + // content contained within the element to be removed from the accessibility tree.
|
| + if (isParentPresentationalRole())
|
| + return StaticTextRole;
|
| +
|
| return ListBoxOptionRole;
|
| }
|
|
|
| +bool AXListBoxOption::isParentPresentationalRole() const
|
| +{
|
| + AXObject* parent = parentObject();
|
| + if (!parent)
|
| + return false;
|
| +
|
| + LayoutObject* layoutObject = parent->layoutObject();
|
| + if (!layoutObject)
|
| + return false;
|
| +
|
| + if (layoutObject->isListBox() && parent->hasInheritedPresentationalRole())
|
| + return true;
|
| +
|
| + return false;
|
| +}
|
| +
|
| bool AXListBoxOption::isEnabled() const
|
| {
|
| if (!node())
|
|
|