Don't run scripts in documents that don't have a browsing context (#35871)

* Don't run scripts in document that don't have a browsing context

For confirmation that this is correct, refer to the note under
Step 3 of https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring.

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

* Update WPT expectations

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>

---------

Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
Simon Wülker 2025-03-10 17:34:09 +01:00 committed by GitHub
parent 1200617683
commit ccd4b113a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 8 additions and 3 deletions

View file

@ -267,6 +267,7 @@ impl Tokenizer {
// Create new thread for HtmlTokenizer. This is where parser actions
// will be generated from the input provided. These parser actions are then passed
// onto the main thread to be executed.
let scripting_enabled = document.has_browsing_context();
thread::Builder::new()
.name(format!("Parse:{}", tokenizer.url.debug_compact()))
.spawn(move || {
@ -277,6 +278,7 @@ impl Tokenizer {
form_parse_node,
to_tokenizer_sender,
html_tokenizer_receiver,
scripting_enabled,
);
})
.expect("HTML Parser thread spawning failed");
@ -573,9 +575,11 @@ fn run(
form_parse_node: Option<ParseNode>,
sender: Sender<ToTokenizerMsg>,
receiver: Receiver<ToHtmlTokenizerMsg>,
scripting_enabled: bool,
) {
let options = TreeBuilderOpts {
ignore_missing_rules: true,
scripting_enabled,
..Default::default()
};