From fb11741f20c42e5d831dbd66bd5f2017a444f2f6 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Fri, 25 Feb 2022 21:29:12 +0100 Subject: [PATCH] LibWeb: Use the prefix passed to Document.createElementNS() 1% progression on ACID3. :^) --- Userland/Libraries/LibWeb/DOM/ElementFactory.cpp | 13 ++++++++++--- Userland/Libraries/LibWeb/DOM/ElementFactory.h | 2 +- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/Userland/Libraries/LibWeb/DOM/ElementFactory.cpp b/Userland/Libraries/LibWeb/DOM/ElementFactory.cpp index bd74ecd862..61a1b43f7a 100644 --- a/Userland/Libraries/LibWeb/DOM/ElementFactory.cpp +++ b/Userland/Libraries/LibWeb/DOM/ElementFactory.cpp @@ -89,11 +89,18 @@ namespace Web::DOM { -NonnullRefPtr create_element(Document& document, const FlyString& tag_name, const FlyString& namespace_) +NonnullRefPtr create_element(Document& document, FlyString tag_name, FlyString namespace_) { auto lowercase_tag_name = tag_name.to_lowercase(); - // FIXME: Add prefix when we support it. - auto qualified_name = QualifiedName(tag_name, {}, namespace_); + + FlyString prefix; + auto parts = tag_name.view().split_view(':'); + if (parts.size() > 1) { + prefix = parts[0]; + tag_name = tag_name.view().substring_view_starting_from_substring(parts[1]); + } + + auto qualified_name = QualifiedName(tag_name, prefix, namespace_); if (lowercase_tag_name == HTML::TagNames::a) return adopt_ref(*new HTML::HTMLAnchorElement(document, move(qualified_name))); if (lowercase_tag_name == HTML::TagNames::area) diff --git a/Userland/Libraries/LibWeb/DOM/ElementFactory.h b/Userland/Libraries/LibWeb/DOM/ElementFactory.h index c57fcd544e..8da8e9dec2 100644 --- a/Userland/Libraries/LibWeb/DOM/ElementFactory.h +++ b/Userland/Libraries/LibWeb/DOM/ElementFactory.h @@ -10,6 +10,6 @@ namespace Web::DOM { -NonnullRefPtr create_element(Document&, const FlyString& tag_name, const FlyString& namespace_); +NonnullRefPtr create_element(Document&, FlyString tag_name, FlyString namespace_); }