Simplify processing of deferred scripts

It is now done on-demand when a deferred script finished loading, and when
the page source finished loading.
This commit is contained in:
Anthony Ramine 2017-01-20 16:41:49 +01:00
parent abdb390da8
commit e9feb20775
2 changed files with 11 additions and 6 deletions

View file

@ -1547,9 +1547,15 @@ impl Document {
loader.finish_load(&load); loader.finish_load(&load);
} }
if let LoadType::Stylesheet(_) = load { match load {
LoadType::Stylesheet(_) => {
self.process_deferred_scripts(); self.process_deferred_scripts();
self.process_pending_parsing_blocking_script(); self.process_pending_parsing_blocking_script();
},
LoadType::PageSource(_) => {
self.process_deferred_scripts();
},
_ => {},
} }
if !self.loader.borrow().is_blocked() && !self.loader.borrow().events_inhibited() { if !self.loader.borrow().is_blocked() && !self.loader.borrow().events_inhibited() {
@ -1638,7 +1644,7 @@ impl Document {
} }
/// https://html.spec.whatwg.org/multipage/#the-end step 3. /// https://html.spec.whatwg.org/multipage/#the-end step 3.
pub fn process_deferred_scripts(&self) { fn process_deferred_scripts(&self) {
if self.ready_state.get() != DocumentReadyState::Interactive { if self.ready_state.get() != DocumentReadyState::Interactive {
return; return;
} }

View file

@ -359,9 +359,8 @@ impl ServoParser {
window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::FirstLoad); window.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::FirstLoad);
} }
// Steps 3-12 are in other castles, namely process_deferred_scripts and finish_load. // Steps 3-12 are in another castle, namely finish_load.
let url = self.tokenizer.borrow().url().clone(); let url = self.tokenizer.borrow().url().clone();
self.document.process_deferred_scripts();
self.document.finish_load(LoadType::PageSource(url)); self.document.finish_load(LoadType::PageSource(url));
} }
} }