From 1a5e7b7cfb1b6491ffa61d9694df58ff015c70db Mon Sep 17 00:00:00 2001 From: hundredeir Date: Sat, 23 Mar 2019 23:51:37 +0530 Subject: [PATCH] Defer update of dom_content_loaded_event_end Set it's value only after the "DOMContentLoaded" event is really fired --- components/script/dom/document.rs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 012aaecbe4f..b59f9502d63 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -2184,18 +2184,19 @@ impl Document { // Step 4.1. let window = self.window(); + let document = Trusted::new(self); window .task_manager() .dom_manipulation_task_source() - .queue_event( - self.upcast(), - atom!("DOMContentLoaded"), - EventBubbles::Bubbles, - EventCancelable::NotCancelable, - window, - ); - - update_with_current_time_ms(&self.dom_content_loaded_event_end); + .queue( + task!(fire_dom_content_loaded_event: move || { + let document = document.root(); + document.upcast::().fire_bubbling_event(atom!("DOMContentLoaded")); + update_with_current_time_ms(&document.dom_content_loaded_event_end); + }), + window.upcast(), + ) + .unwrap(); // html parsing has finished - set dom content loaded self.interactive_time