diff --git a/Tests/LibWeb/Text/expected/HTML/set-innerHTML-inside-iframe-srcdoc-document.txt b/Tests/LibWeb/Text/expected/HTML/set-innerHTML-inside-iframe-srcdoc-document.txt new file mode 100644 index 00000000000..5db64a560d5 --- /dev/null +++ b/Tests/LibWeb/Text/expected/HTML/set-innerHTML-inside-iframe-srcdoc-document.txt @@ -0,0 +1 @@ + PASS (Didn't crash) diff --git a/Tests/LibWeb/Text/input/HTML/set-innerHTML-inside-iframe-srcdoc-document.html b/Tests/LibWeb/Text/input/HTML/set-innerHTML-inside-iframe-srcdoc-document.html new file mode 100644 index 00000000000..5a979281ec0 --- /dev/null +++ b/Tests/LibWeb/Text/input/HTML/set-innerHTML-inside-iframe-srcdoc-document.html @@ -0,0 +1,14 @@ + + + diff --git a/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp b/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp index 350347461e3..2df5288cea7 100644 --- a/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp +++ b/Userland/Libraries/LibWeb/HTML/Parser/HTMLParser.cpp @@ -4273,6 +4273,10 @@ Vector> HTMLParser::parse_html_fragment(DOM::Element& cont auto temp_document = DOM::Document::create_for_fragment_parsing(context_element.realm()); temp_document->set_document_type(DOM::Document::Type::HTML); + // AD-HOC: We set the about base URL of the document to the same as the context element's document. + // This is required for Document::parse_url() to work inside iframe srcdoc documents. + temp_document->set_about_base_url(context_element.document().about_base_url()); + // 2. If the node document of the context element is in quirks mode, then let the Document be in quirks mode. // Otherwise, the node document of the context element is in limited-quirks mode, then let the Document be in limited-quirks mode. // Otherwise, leave the Document in no-quirks mode.