diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/document.rs | 6 | ||||
-rw-r--r-- | components/script/dom/servoparser/html.rs | 13 |
2 files changed, 17 insertions, 2 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 02bdd343d89..1e2a3747751 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -1108,6 +1108,12 @@ impl Document { self.scripting_enabled } + /// Return whether scripting is enabled or not + /// <https://html.spec.whatwg.org/multipage/#concept-n-noscript> + pub(crate) fn scripting_enabled(&self) -> bool { + self.has_browsing_context() + } + /// Return the element that currently has focus. // https://w3c.github.io/uievents/#events-focusevent-doc-focus pub(crate) fn get_focused_element(&self) -> Option<DomRoot<Element>> { diff --git a/components/script/dom/servoparser/html.rs b/components/script/dom/servoparser/html.rs index 97856256268..07848c87678 100644 --- a/components/script/dom/servoparser/html.rs +++ b/components/script/dom/servoparser/html.rs @@ -11,11 +11,12 @@ use html5ever::buffer_queue::BufferQueue; use html5ever::serialize::TraversalScope::IncludeNode; use html5ever::serialize::{AttrRef, Serialize, Serializer, TraversalScope}; use html5ever::tokenizer::{Tokenizer as HtmlTokenizer, TokenizerOpts}; -use html5ever::tree_builder::{TreeBuilder, TreeBuilderOpts}; +use html5ever::tree_builder::{QuirksMode as HTML5EverQuirksMode, TreeBuilder, TreeBuilderOpts}; use html5ever::{QualName, local_name, ns}; use markup5ever::TokenizerResult; use script_bindings::trace::CustomTraceable; use servo_url::ServoUrl; +use style::context::QuirksMode as StyleContextQuirksMode; use xml5ever::LocalName; use crate::dom::bindings::codegen::Bindings::HTMLTemplateElementBinding::HTMLTemplateElementMethods; @@ -58,9 +59,17 @@ impl Tokenizer { parsing_algorithm, }; + let quirks_mode = match document.quirks_mode() { + StyleContextQuirksMode::Quirks => HTML5EverQuirksMode::Quirks, + StyleContextQuirksMode::LimitedQuirks => HTML5EverQuirksMode::LimitedQuirks, + StyleContextQuirksMode::NoQuirks => HTML5EverQuirksMode::NoQuirks, + }; + let options = TreeBuilderOpts { ignore_missing_rules: true, - scripting_enabled: document.has_browsing_context(), + scripting_enabled: document.scripting_enabled(), + iframe_srcdoc: document.url().as_str() == "about:srcdoc", + quirks_mode, ..Default::default() }; |