diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2017-01-25 14:05:01 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2017-01-27 12:12:21 +0100 |
commit | d8238646a018579bfeec260abaadf518093c098f (patch) | |
tree | 8be942195aa8a85f227476fa5174ebe43dd24ed0 | |
parent | 90839305ae46d5be6c729304fd224b3d68681506 (diff) | |
download | servo-d8238646a018579bfeec260abaadf518093c098f.tar.gz servo-d8238646a018579bfeec260abaadf518093c098f.zip |
Kill ServoParser::pipeline
-rw-r--r-- | components/script/dom/document.rs | 14 | ||||
-rw-r--r-- | components/script/dom/domparser.rs | 4 | ||||
-rw-r--r-- | components/script/dom/servoparser/mod.rs | 30 | ||||
-rw-r--r-- | components/script/dom/xmlhttprequest.rs | 8 | ||||
-rw-r--r-- | components/script/script_thread.rs | 12 |
5 files changed, 20 insertions, 48 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 6bf8c841d4d..692c24f052a 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -530,11 +530,6 @@ impl Document { self.reflow_timeout.set(Some(timeout)) } - /// Disables any pending reflow timeouts. - pub fn disarm_reflow_timeout(&self) { - self.reflow_timeout.set(None) - } - /// Remove any existing association between the provided id and any elements in this document. pub fn unregister_named_element(&self, to_unregister: &Element, id: Atom) { debug!("Removing named element from document {:p}: {:p} id={}", @@ -1556,6 +1551,15 @@ impl Document { self.process_deferred_scripts(); }, LoadType::PageSource(_) => { + if self.browsing_context.is_some() { + // Disarm the reflow timer and trigger the initial reflow. + self.reflow_timeout.set(None); + self.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); + self.window.reflow(ReflowGoal::ForDisplay, + ReflowQueryType::NoQuery, + ReflowReason::FirstLoad); + } + // Deferred scripts have to wait for page to finish loading, // this is the first opportunity to process them. diff --git a/components/script/dom/domparser.rs b/components/script/dom/domparser.rs index b379c82d23c..c14bec8b594 100644 --- a/components/script/dom/domparser.rs +++ b/components/script/dom/domparser.rs @@ -69,7 +69,7 @@ impl DOMParserMethods for DOMParser { loader, None, None); - ServoParser::parse_html_document(&document, s, url, None); + ServoParser::parse_html_document(&document, s, url); document.set_ready_state(DocumentReadyState::Complete); Ok(document) } @@ -86,7 +86,7 @@ impl DOMParserMethods for DOMParser { loader, None, None); - ServoParser::parse_xml_document(&document, s, url, None); + ServoParser::parse_xml_document(&document, s, url); Ok(document) } } diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs index 04ba1558bed..aaa36a2098b 100644 --- a/components/script/dom/servoparser/mod.rs +++ b/components/script/dom/servoparser/mod.rs @@ -20,9 +20,8 @@ use dom::globalscope::GlobalScope; use dom::htmlformelement::HTMLFormElement; use dom::htmlimageelement::HTMLImageElement; use dom::htmlscriptelement::{HTMLScriptElement, ScriptResult}; -use dom::node::{Node, NodeDamage, NodeSiblingIterator}; +use dom::node::{Node, NodeSiblingIterator}; use dom::text::Text; -use dom::window::ReflowReason; use encoding::all::UTF_8; use encoding::types::{DecoderTrap, Encoding}; use html5ever::tokenizer::buffer_queue::BufferQueue; @@ -35,13 +34,11 @@ use net_traits::{FetchMetadata, FetchResponseListener, Metadata, NetworkError}; use network_listener::PreInvoke; use profile_traits::time::{TimerMetadata, TimerMetadataFrameType}; use profile_traits::time::{TimerMetadataReflowType, ProfilerCategory, profile}; -use script_layout_interface::message::ReflowQueryType; use script_thread::ScriptThread; use servo_config::resource_files::read_resource_file; use servo_url::ServoUrl; use std::cell::Cell; use std::mem; -use style::context::ReflowGoal; mod html; mod xml; @@ -63,9 +60,6 @@ pub struct ServoParser { reflector: Reflector, /// The document associated with this parser. document: JS<Document>, - /// The pipeline associated with this parse, unavailable if this parse - /// does not correspond to a page load. - pipeline: Option<PipelineId>, /// Input received from network. #[ignore_heap_size_of = "Defined in html5ever"] network_input: DOMRefCell<BufferQueue>, @@ -89,9 +83,8 @@ enum LastChunkState { } impl ServoParser { - pub fn parse_html_document(document: &Document, input: DOMString, url: ServoUrl, owner: Option<PipelineId>) { + pub fn parse_html_document(document: &Document, input: DOMString, url: ServoUrl) { let parser = ServoParser::new(document, - owner, Tokenizer::Html(self::html::Tokenizer::new(document, url, None)), LastChunkState::NotReceived); parser.parse_chunk(String::from(input)); @@ -131,7 +124,6 @@ impl ServoParser { }; let parser = ServoParser::new(&document, - None, Tokenizer::Html(self::html::Tokenizer::new(&document, url.clone(), Some(fragment_context))), @@ -145,9 +137,8 @@ impl ServoParser { } } - pub fn parse_xml_document(document: &Document, input: DOMString, url: ServoUrl, owner: Option<PipelineId>) { + pub fn parse_xml_document(document: &Document, input: DOMString, url: ServoUrl) { let parser = ServoParser::new(document, - owner, Tokenizer::Xml(self::xml::Tokenizer::new(document, url)), LastChunkState::NotReceived); parser.parse_chunk(String::from(input)); @@ -234,14 +225,12 @@ impl ServoParser { #[allow(unrooted_must_root)] fn new_inherited(document: &Document, - pipeline: Option<PipelineId>, tokenizer: Tokenizer, last_chunk_state: LastChunkState) -> Self { ServoParser { reflector: Reflector::new(), document: JS::from_ref(document), - pipeline: pipeline, network_input: DOMRefCell::new(BufferQueue::new()), script_input: DOMRefCell::new(BufferQueue::new()), tokenizer: DOMRefCell::new(tokenizer), @@ -253,11 +242,10 @@ impl ServoParser { #[allow(unrooted_must_root)] fn new(document: &Document, - pipeline: Option<PipelineId>, tokenizer: Tokenizer, last_chunk_state: LastChunkState) -> Root<Self> { - reflect_dom_object(box ServoParser::new_inherited(document, pipeline, tokenizer, last_chunk_state), + reflect_dom_object(box ServoParser::new_inherited(document, tokenizer, last_chunk_state), document.window(), ServoParserBinding::Wrap) } @@ -345,16 +333,6 @@ impl ServoParser { self.tokenizer.borrow_mut().end(); self.document.set_current_parser(None); - if self.pipeline.is_some() { - // Initial reflow. - self.document.disarm_reflow_timeout(); - self.document.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage); - let window = self.document.window(); - window.reflow(ReflowGoal::ForDisplay, - ReflowQueryType::NoQuery, - ReflowReason::FirstLoad); - } - // Steps 3-12 are in another castle, namely finish_load. let url = self.tokenizer.borrow().url().clone(); self.document.finish_load(LoadType::PageSource(url)); diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 96983b36ecf..95a8ba0c3ad 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -1181,7 +1181,7 @@ impl XMLHttpRequest { self.response_json.get() } - fn document_text_html(&self) -> Root<Document>{ + fn document_text_html(&self) -> Root<Document> { let charset = self.final_charset().unwrap_or(UTF_8); let wr = self.global(); let decoded = charset.decode(&self.response.borrow(), DecoderTrap::Replace).unwrap(); @@ -1190,8 +1190,7 @@ impl XMLHttpRequest { ServoParser::parse_html_document( &document, DOMString::from(decoded), - wr.get_url(), - Some(wr.pipeline_id())); + wr.get_url()); document } @@ -1204,8 +1203,7 @@ impl XMLHttpRequest { ServoParser::parse_xml_document( &document, DOMString::from(decoded), - wr.get_url(), - Some(wr.pipeline_id())); + wr.get_url()); document } diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs index 57cdd7044c4..20e4d7041da 100644 --- a/components/script/script_thread.rs +++ b/components/script/script_thread.rs @@ -1849,17 +1849,9 @@ impl ScriptThread { document.set_https_state(metadata.https_state); if is_html_document == IsHTMLDocument::NonHTMLDocument { - ServoParser::parse_xml_document( - &document, - parse_input, - final_url, - Some(incomplete.pipeline_id)); + ServoParser::parse_xml_document(&document, parse_input, final_url); } else { - ServoParser::parse_html_document( - &document, - parse_input, - final_url, - Some(incomplete.pipeline_id)); + ServoParser::parse_html_document(&document, parse_input, final_url); } if incomplete.is_frozen { |