Index: Source/modules/accessibility/AXListBoxOption.cpp |
diff --git a/Source/modules/accessibility/AXListBoxOption.cpp b/Source/modules/accessibility/AXListBoxOption.cpp |
index 58a91d3a8961d74c081a87413373c69a193e9678..6f18a7a174ded7ef03bd9591ea8302b28057f85f 100644 |
--- a/Source/modules/accessibility/AXListBoxOption.cpp |
+++ b/Source/modules/accessibility/AXListBoxOption.cpp |
@@ -58,9 +58,36 @@ AccessibilityRole AXListBoxOption::roleValue() const |
AccessibilityRole ariaRole = ariaRoleAttribute(); |
if (ariaRole != UnknownRole) |
return ariaRole; |
+ |
+ // Generally, the presentation role is handled in computeAccessibilityIsIgnored(). |
dmazzoni
2015/04/02 06:22:18
Let's delete the first three lines of this comment
je_julie(Not used)
2015/04/02 13:38:08
Done.
|
+ // In case of ListBoxOption, if it just marked as ignored in computeAccessibilityIsIgnored(), |
+ // we can't see listboxoption on tree without any text. |
+ // 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 (isParentPresentationRole()) |
+ return StaticTextRole; |
+ |
return ListBoxOptionRole; |
} |
+bool AXListBoxOption::isParentPresentationRole() 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()) |