diff --git a/Userland/Libraries/LibWeb/Layout/Node.cpp b/Userland/Libraries/LibWeb/Layout/Node.cpp index d8da6e9be3..910d63f73c 100644 --- a/Userland/Libraries/LibWeb/Layout/Node.cpp +++ b/Userland/Libraries/LibWeb/Layout/Node.cpp @@ -527,6 +527,25 @@ String Node::class_name() const return demangle(typeid(*this).name()); } +String Node::debug_description() const +{ + StringBuilder builder; + builder.append(class_name().substring_view(13)); + if (dom_node()) { + builder.appendff("<{}>", dom_node()->node_name()); + if (dom_node()->is_element()) { + auto& element = static_cast(*dom_node()); + if (auto id = element.get_attribute(HTML::AttributeNames::id); !id.is_null()) + builder.appendff("#{}", id); + for (auto const& class_name : element.class_names()) + builder.appendff(".{}", class_name); + } + } else { + builder.append("(anonymous)"); + } + return builder.to_string(); +} + bool Node::is_inline_block() const { return is_inline() && is(*this); diff --git a/Userland/Libraries/LibWeb/Layout/Node.h b/Userland/Libraries/LibWeb/Layout/Node.h index f427bb80d0..cb9e645456 100644 --- a/Userland/Libraries/LibWeb/Layout/Node.h +++ b/Userland/Libraries/LibWeb/Layout/Node.h @@ -74,6 +74,7 @@ public: bool is_root_element() const; String class_name() const; + String debug_description() const; bool has_style() const { return m_has_style; }