LibWeb: Execute the correct script in XMLDocumentBuilder::element_end()

We were mistakenly executing the current node's script instead of the
document's pending parsing-blocking script.

This caused ~1000 WPT tests to time out, since we never ended up firing
a load event for XHTML pages that load multiple external scripts.
This commit is contained in:
Andreas Kling 2024-07-25 14:08:45 +02:00 committed by Andreas Kling
parent b011d47b86
commit 007c292af3
Notes: github-actions[bot] 2024-07-25 13:06:19 +00:00
7 changed files with 26 additions and 13 deletions

View file

@ -536,7 +536,7 @@ void HTMLScriptElement::prepare_script()
// 5. Otherwise:
else {
// 1. Set el's parser document's pending parsing-blocking script to el.
m_parser_document->set_pending_parsing_blocking_script({}, this);
m_parser_document->set_pending_parsing_blocking_script(this);
// FIXME: 2. Block rendering on el.
@ -563,7 +563,7 @@ void HTMLScriptElement::prepare_script()
&& is_parser_inserted()
&& m_parser_document->has_a_style_sheet_that_is_blocking_scripts()) {
// 1. Set el's parser document's pending parsing-blocking script to el.
m_parser_document->set_pending_parsing_blocking_script({}, this);
m_parser_document->set_pending_parsing_blocking_script(this);
// 2. Set el's ready to be parser-executed to true. (The parser will handle executing the script.)
m_ready_to_be_parser_executed = true;