diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 86883c1e428..3d615df43de 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -372,7 +372,7 @@ impl<'a> DocumentHelpers<'a> for JSRef<'a, Document> { /// page content during parsing. fn set_reflow_timeout(self, timeout: u64) { if let Some(existing_timeout) = self.reflow_timeout.get() { - if existing_timeout > timeout { + if existing_timeout < timeout { return } } diff --git a/components/script/dom/htmlbodyelement.rs b/components/script/dom/htmlbodyelement.rs index 5ca1ee7964f..97cd615f910 100644 --- a/components/script/dom/htmlbodyelement.rs +++ b/components/script/dom/htmlbodyelement.rs @@ -100,6 +100,10 @@ impl<'a> VirtualMethods for JSRef<'a, HTMLBodyElement> { s.bind_to_tree(tree_in_doc); } + if !tree_in_doc { + return + } + let window = window_from_node(*self).root(); let document = window.r().Document().root(); document.r().set_reflow_timeout(time::precise_time_ns() + INITIAL_REFLOW_DELAY); diff --git a/components/script/dom/servohtmlparser.rs b/components/script/dom/servohtmlparser.rs index 878e9d1a2ae..1d69b24c5c8 100644 --- a/components/script/dom/servohtmlparser.rs +++ b/components/script/dom/servohtmlparser.rs @@ -303,10 +303,8 @@ impl<'a> PrivateServoHTMLParserHelpers for JSRef<'a, ServoHTMLParser> { break; } - { - let document = self.document.root(); - document.r().reflow_if_reflow_timer_expired(); - } + let document = self.document.root(); + document.r().reflow_if_reflow_timer_expired(); let mut pending_input = self.pending_input.borrow_mut(); if !pending_input.is_empty() {