From 55f58eea99c0429dcc39cd0430fafa60eecf5542 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 17 Oct 2024 11:49:21 +0200 Subject: [PATCH] LibWeb: Use the correct document URL in DOMParser.parseFromString() We were hard-coding "about:blank" as the document URL for parsed HTML documents, which was definitely not correct. This fixes a bunch of WPT tests under /domparsing/ :^) --- ...DOMParser-parseFromString-document-url.txt | 2 ++ ...OMParser-parseFromString-document-url.html | 19 +++++++++++++++++++ Userland/Libraries/LibWeb/DOM/Document.cpp | 3 +-- 3 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 Tests/LibWeb/Text/expected/HTML/DOMParser-parseFromString-document-url.txt create mode 100644 Tests/LibWeb/Text/input/HTML/DOMParser-parseFromString-document-url.html diff --git a/Tests/LibWeb/Text/expected/HTML/DOMParser-parseFromString-document-url.txt b/Tests/LibWeb/Text/expected/HTML/DOMParser-parseFromString-document-url.txt new file mode 100644 index 00000000000..fc9aea9c083 --- /dev/null +++ b/Tests/LibWeb/Text/expected/HTML/DOMParser-parseFromString-document-url.txt @@ -0,0 +1,2 @@ +PASS text/html +PASS application/xhtml+xml diff --git a/Tests/LibWeb/Text/input/HTML/DOMParser-parseFromString-document-url.html b/Tests/LibWeb/Text/input/HTML/DOMParser-parseFromString-document-url.html new file mode 100644 index 00000000000..f3cacc504a3 --- /dev/null +++ b/Tests/LibWeb/Text/input/HTML/DOMParser-parseFromString-document-url.html @@ -0,0 +1,19 @@ + + diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index 4242a0f7b3e..3a69696c545 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -5415,8 +5415,7 @@ void Document::parse_html_from_a_string(StringView html) auto parser = HTML::HTMLParser::create(*this, html, "UTF-8"sv); // 4. Start parser and let it run until it has consumed all the characters just inserted into the input stream. - // FIXME: This is to match the default URL. Instead, pass in this's relevant global object's associated Document's URL. - parser->run("about:blank"sv); + parser->run(verify_cast(HTML::relevant_global_object(*this)).associated_document().url()); } // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsehtmlunsafe