mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 03:37:43 +00:00
LibWeb: Serialize Accessible Name and Description for Accessibility Tree
These will get displayed in the DOM inspector.
This commit is contained in:
parent
da5c9189b2
commit
29d724d95c
3 changed files with 10 additions and 5 deletions
|
@ -24,7 +24,7 @@ AccessibilityTreeNode::AccessibilityTreeNode(JS::GCPtr<DOM::Node> value)
|
|||
m_children = {};
|
||||
}
|
||||
|
||||
void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializer<StringBuilder>& object) const
|
||||
void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializer<StringBuilder>& object, Document const& document) const
|
||||
{
|
||||
if (value()->is_document()) {
|
||||
VERIFY_NOT_REACHED();
|
||||
|
@ -37,6 +37,11 @@ void AccessibilityTreeNode::serialize_tree_as_json(JsonObjectSerializer<StringBu
|
|||
auto role = element->role_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(JsonObjectSerializer<StringBu
|
|||
|
||||
if (value()->has_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<StringBuilder> 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());
|
||||
|
|
|
@ -25,7 +25,7 @@ public:
|
|||
Vector<AccessibilityTreeNode*> children() const { return m_children; }
|
||||
void append_child(AccessibilityTreeNode* child) { m_children.append(child); }
|
||||
|
||||
void serialize_tree_as_json(JsonObjectSerializer<StringBuilder>& object) const;
|
||||
void serialize_tree_as_json(JsonObjectSerializer<StringBuilder>& object, Document const&) const;
|
||||
|
||||
protected:
|
||||
virtual void visit_edges(Visitor&) override;
|
||||
|
|
|
@ -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());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue