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

Unified Diff: content/renderer/accessibility/accessibility_node_serializer.cc

Issue 175613002: Include relationship ARIA objects in serialized accessibility tree (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Revert spurious changes Created 6 years, 9 months 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: content/renderer/accessibility/accessibility_node_serializer.cc
diff --git a/content/renderer/accessibility/accessibility_node_serializer.cc b/content/renderer/accessibility/accessibility_node_serializer.cc
index 9912332d63f9613b373cf7d4d5c1f6afd999c386..34ed810ebf86b925d947f265fbac4bada53756bd 100644
--- a/content/renderer/accessibility/accessibility_node_serializer.cc
+++ b/content/renderer/accessibility/accessibility_node_serializer.cc
@@ -158,6 +158,11 @@ void SerializeAccessibilityNode(
dst->AddIntAttribute(ui::AX_ATTR_TITLE_UI_ELEMENT,
src.titleUIElement().axID());
}
+ if (!src.activeDescendant().isDetached()) {
+ dst->AddIntAttribute(ui::AX_ATTR_ACTIVEDESCENDANT_ID,
+ src.activeDescendant().axID());
+ }
+
if (!src.url().isEmpty())
dst->AddStringAttribute(ui::AX_ATTR_URL, src.url().spec());
@@ -409,15 +414,60 @@ void SerializeAccessibilityNode(
// parent is the row, the row adds it as a child, and the column adds it
// as an indirect child.
int child_count = src.childCount();
+ std::vector<int32> indirect_child_ids;
for (int i = 0; i < child_count; ++i) {
WebAXObject child = src.childAt(i);
- std::vector<int32> indirect_child_ids;
if (!is_iframe && !child.isDetached() && !IsParentUnignoredOf(src, child))
indirect_child_ids.push_back(child.axID());
- if (indirect_child_ids.size() > 0) {
- dst->AddIntListAttribute(
- ui::AX_ATTR_INDIRECT_CHILD_IDS, indirect_child_ids);
- }
+ }
+ if (indirect_child_ids.size() > 0) {
+ dst->AddIntListAttribute(ui::AX_ATTR_INDIRECT_CHILD_IDS,
+ indirect_child_ids);
+ }
+
+ WebVector<WebAXObject> controls;
+ if (src.controls(controls)) {
+ std::vector<int32> controls_ids;
+ for(size_t i = 0; i < controls.size(); i++)
+ controls_ids.push_back(controls[i].axID());
+ if (controls_ids.size() > 0)
+ dst->AddIntListAttribute(ui::AX_ATTR_CONTROLS_IDS, controls_ids);
+ }
+
+ WebVector<WebAXObject> describedby;
+ if (src.describedby(describedby)) {
+ std::vector<int32> describedby_ids;
+ for(size_t i = 0; i < describedby.size(); i++)
dmazzoni 2014/03/11 23:37:52 Maybe a helper function here too - that goes from
aboxhall 2014/03/12 17:50:47 Done.
+ describedby_ids.push_back(describedby[i].axID());
+ if (describedby_ids.size() > 0)
+ dst->AddIntListAttribute(ui::AX_ATTR_DESCRIBEDBY_IDS, describedby_ids);
+ }
+
+ WebVector<WebAXObject> flowTo;
+ if (src.flowTo(flowTo)) {
+ std::vector<int32> flowTo_ids;
+ for(size_t i = 0; i < flowTo.size(); i++)
+ flowTo_ids.push_back(flowTo[i].axID());
+ if (flowTo_ids.size() > 0)
+ dst->AddIntListAttribute(ui::AX_ATTR_FLOWTO_IDS, flowTo_ids);
+ }
+
+ WebVector<WebAXObject> labelledby;
+ if (src.labelledby(labelledby)) {
+ std::vector<int32> labelledby_ids;
+ for(size_t i = 0; i < labelledby.size(); i++)
+ labelledby_ids.push_back(labelledby[i].axID());
+ if (labelledby_ids.size() > 0)
+ dst->AddIntListAttribute(ui::AX_ATTR_LABELLEDBY_IDS, labelledby_ids);
+ }
+
+ WebVector<WebAXObject> owns;
+ if (src.owns(owns)) {
+ std::vector<int32> owns_ids;
+ for(size_t i = 0; i < owns.size(); i++)
+ owns_ids.push_back(owns[i].axID());
+ if (owns_ids.size() > 0)
+ dst->AddIntListAttribute(ui::AX_ATTR_OWNS_IDS, owns_ids);
}
}

Powered by Google App Engine
This is Rietveld 408576698