mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Determine the initial state for fragment parsing using the scripting flag of the context element (#37704)
When parsing a html fragment, the initial parser state depends on whether or not scripting is enabled. So far we've used the scripting flag of the parser, but that is wrong - the parser's scripting flag is always false, because the fragment document has no browsing context. Instead we should use the scripting flag of the context element. Testing: A new web platform test passes --------- Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This commit is contained in:
parent
4dded465a4
commit
cbb0407ae6
6 changed files with 48 additions and 35 deletions
|
@ -74,20 +74,22 @@ impl Tokenizer {
|
|||
..Default::default()
|
||||
};
|
||||
|
||||
let inner = if let Some(fc) = fragment_context {
|
||||
let tb = TreeBuilder::new_for_fragment(
|
||||
let inner = if let Some(fragment_context) = fragment_context {
|
||||
let tree_builder = TreeBuilder::new_for_fragment(
|
||||
sink,
|
||||
Dom::from_ref(fc.context_elem),
|
||||
fc.form_elem.map(Dom::from_ref),
|
||||
Dom::from_ref(fragment_context.context_elem),
|
||||
fragment_context.form_elem.map(Dom::from_ref),
|
||||
options,
|
||||
);
|
||||
|
||||
let tok_options = TokenizerOpts {
|
||||
initial_state: Some(tb.tokenizer_state_for_context_elem()),
|
||||
let tokenizer_options = TokenizerOpts {
|
||||
initial_state: Some(tree_builder.tokenizer_state_for_context_elem(
|
||||
fragment_context.context_element_allows_scripting,
|
||||
)),
|
||||
..Default::default()
|
||||
};
|
||||
|
||||
HtmlTokenizer::new(tb, tok_options)
|
||||
HtmlTokenizer::new(tree_builder, tokenizer_options)
|
||||
} else {
|
||||
HtmlTokenizer::new(TreeBuilder::new(sink, options), Default::default())
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue