From 61df035612ba32c18c3a7893e700b9609c9a052d Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sun, 6 Jul 2025 17:28:27 +0200 Subject: [PATCH] LibWeb: Show element namespace URI in DOM tree dumps This is helpful when debugging SVG-in-HTML content. --- Libraries/LibWeb/Dump.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/Libraries/LibWeb/Dump.cpp b/Libraries/LibWeb/Dump.cpp index b142c508120..43118b578e7 100644 --- a/Libraries/LibWeb/Dump.cpp +++ b/Libraries/LibWeb/Dump.cpp @@ -95,7 +95,20 @@ void dump_tree(StringBuilder& builder, DOM::Node const& node) for (int i = 0; i < indent; ++i) builder.append(" "sv); if (is(node)) { - builder.appendff("<{}", as(node).local_name()); + auto short_namespace = [&] -> FlyString { + auto const& namespace_uri = as(node).namespace_uri(); + if (!namespace_uri.has_value()) + return "n/a"_fly_string; + if (namespace_uri == "http://www.w3.org/1999/xhtml"sv) + return "html"_fly_string; + if (namespace_uri == "http://www.w3.org/2000/svg"sv) + return "svg"_fly_string; + if (namespace_uri == "http://www.w3.org/1998/Math/MathML"sv) + return "mathml"_fly_string; + return *namespace_uri; + }(); + + builder.appendff("<{}:{}", short_namespace, as(node).local_name()); as(node).for_each_attribute([&](auto& name, auto& value) { builder.appendff(" {}={}", name, value); });