diff --git a/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.cpp b/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.cpp index a8acbd2559..6c3766c645 100644 --- a/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.cpp +++ b/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.cpp @@ -24,7 +24,7 @@ AccessibilityTreeNode::AccessibilityTreeNode(JS::GCPtr value) m_children = {}; } -void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializer& object) const +void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializer& object, Document const& document) const { if (value()->is_document()) { VERIFY_NOT_REACHED(); @@ -37,6 +37,11 @@ void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializerrole_or_default(); bool has_role = role.has_value() && !ARIA::is_abstract_role(*role); + auto name = MUST(element->accessible_name(document)); + MUST(object.add("name"sv, name)); + auto description = MUST(element->accessible_description(document)); + MUST(object.add("description"sv, description)); + if (has_role) MUST(object.add("role"sv, ARIA::role_name(*role))); else @@ -54,11 +59,11 @@ void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializerhas_child_nodes()) { auto node_children = MUST(object.add_array("children"sv)); - for (auto child : children()) { + for (auto* child : children()) { if (child->value()->is_uninteresting_whitespace_node()) continue; JsonObjectSerializer child_object = MUST(node_children.add_object()); - child->serialize_tree_as_json(child_object); + child->serialize_tree_as_json(child_object, document); MUST(child_object.finish()); } MUST(node_children.finish()); diff --git a/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.h b/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.h index fc0fc9235d..bfa556b4ad 100644 --- a/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.h +++ b/Userland/Libraries/LibWeb/DOM/AccessibilityTreeNode.h @@ -25,7 +25,7 @@ public: Vector children() const { return m_children; } void append_child(AccessibilityTreeNode* child) { m_children.append(child); } - void serialize_tree_as_json(JsonObjectSerializer& object) const; + void serialize_tree_as_json(JsonObjectSerializer& object, Document const&) const; protected: virtual void visit_edges(Visitor&) override; diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 826d7dda9a..940a91954f 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -2362,7 +2362,7 @@ DeprecatedString Document::dump_accessibility_tree_as_json() MUST(json.add("type"sv, "element"sv)); MUST(json.add("role"sv, "document"sv)); } else { - accessibility_tree->serialize_tree_as_json(json); + accessibility_tree->serialize_tree_as_json(json, *this); } MUST(json.finish());