aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2017-01-17 12:43:09 +0100
committerAnthony Ramine <n.oxyde@gmail.com>2017-01-17 14:24:37 +0100
commit70ed3e700693b6faf25d14f564aa2cfa36c49ff8 (patch)
tree84d8e7dbe28418b7d7bc529b3a6288d63a218074
parentd29726971a1d44c28c2e93debfed6383757c6082 (diff)
downloadservo-70ed3e700693b6faf25d14f564aa2cfa36c49ff8.tar.gz
servo-70ed3e700693b6faf25d14f564aa2cfa36c49ff8.zip
Remove ScriptThread::parsing_complete
-rw-r--r--components/script/dom/servoparser/mod.rs24
-rw-r--r--components/script/script_thread.rs31
2 files changed, 18 insertions, 37 deletions
diff --git a/components/script/dom/servoparser/mod.rs b/components/script/dom/servoparser/mod.rs
index a6c27804295..69dae25ab35 100644
--- a/components/script/dom/servoparser/mod.rs
+++ b/components/script/dom/servoparser/mod.rs
@@ -4,7 +4,7 @@
use document_loader::{DocumentLoader, LoadType};
use dom::bindings::cell::DOMRefCell;
-use dom::bindings::codegen::Bindings::DocumentBinding::DocumentMethods;
+use dom::bindings::codegen::Bindings::DocumentBinding::{DocumentMethods, DocumentReadyState};
use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods;
use dom::bindings::codegen::Bindings::NodeBinding::NodeMethods;
use dom::bindings::codegen::Bindings::ServoParserBinding;
@@ -20,8 +20,9 @@ use dom::globalscope::GlobalScope;
use dom::htmlformelement::HTMLFormElement;
use dom::htmlimageelement::HTMLImageElement;
use dom::htmlscriptelement::{HTMLScriptElement, ScriptResult};
-use dom::node::{Node, NodeSiblingIterator};
+use dom::node::{Node, NodeDamage, 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;
@@ -34,11 +35,13 @@ 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;
@@ -333,19 +336,28 @@ impl ServoParser {
}
}
+ // https://html.spec.whatwg.org/multipage/#the-end
fn finish(&self) {
assert!(!self.suspended.get());
assert!(self.last_chunk_received.get());
assert!(self.script_input.borrow().is_empty());
assert!(self.network_input.borrow().is_empty());
+ // Step 2.
self.tokenizer.borrow_mut().end();
- debug!("finished parsing");
-
self.document.set_current_parser(None);
- if let Some(pipeline) = self.pipeline {
- ScriptThread::parsing_complete(pipeline);
+ if self.pipeline.is_some() {
+ // Step 1.
+ self.document.set_ready_state(DocumentReadyState::Interactive);
+
+ 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);
+
+ // Step 3.
+ self.document.process_deferred_scripts();
}
}
}
diff --git a/components/script/script_thread.rs b/components/script/script_thread.rs
index 65582571025..58a59e2fd91 100644
--- a/components/script/script_thread.rs
+++ b/components/script/script_thread.rs
@@ -583,13 +583,6 @@ impl ScriptThread {
});
}
- pub fn parsing_complete(id: PipelineId) {
- SCRIPT_THREAD_ROOT.with(|root| {
- let script_thread = unsafe { &*root.get().unwrap() };
- script_thread.handle_parsing_complete(id);
- });
- }
-
pub fn process_event(msg: CommonScriptMsg) {
SCRIPT_THREAD_ROOT.with(|root| {
if let Some(script_thread) = root.get() {
@@ -2163,30 +2156,6 @@ impl ScriptThread {
context.process_response_eof(Ok(()));
}
- fn handle_parsing_complete(&self, id: PipelineId) {
- let document = match { self.documents.borrow().find_document(id) } {
- Some(document) => document,
- None => return,
- };
-
- let final_url = document.url();
-
- // https://html.spec.whatwg.org/multipage/#the-end step 1
- document.set_ready_state(DocumentReadyState::Interactive);
-
- // TODO: Execute step 2 here.
-
- // Kick off the initial reflow of the page.
- debug!("kicking off initial reflow of {:?}", final_url);
- document.disarm_reflow_timeout();
- document.upcast::<Node>().dirty(NodeDamage::OtherNodeDamage);
- let window = window_from_node(&*document);
- window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::FirstLoad);
-
- // https://html.spec.whatwg.org/multipage/#the-end steps 3-4.
- document.process_deferred_scripts();
- }
-
fn handle_css_error_reporting(&self, pipeline_id: PipelineId, filename: String,
line: usize, column: usize, msg: String) {
let sender = match self.devtools_chan {