diff options
author | Glenn Watson <gw@intuitionlibrary.com> | 2015-03-11 08:43:47 +1000 |
---|---|---|
committer | Glenn Watson <gw@intuitionlibrary.com> | 2015-03-11 08:43:47 +1000 |
commit | 33829c0254d0a239a8f353bafae55fe4ebf599c4 (patch) | |
tree | 230cced71538613e6ed382a5bfdc555003c279da /components/script | |
parent | e8f1a046c6c704915419cb75181f6e0bc402ef98 (diff) | |
download | servo-33829c0254d0a239a8f353bafae55fe4ebf599c4.tar.gz servo-33829c0254d0a239a8f353bafae55fe4ebf599c4.zip |
Perform reflow if load events dirty any nodes.
This fixes some test failures that begin occurring when other events (such as resize) are fixed to only occur when needed.
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/dom/document.rs | 4 | ||||
-rw-r--r-- | components/script/dom/window.rs | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index e696e035de2..cc9ab9d3849 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -1387,6 +1387,8 @@ impl DocumentProgressHandler { EventCancelable::NotCancelable).root(); let doctarget: JSRef<EventTarget> = EventTargetCast::from_ref(document.r()); let _ = doctarget.DispatchEvent(event.r()); + + window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::DOMContentLoaded); } fn set_ready_state_complete(&self) { @@ -1418,6 +1420,8 @@ impl DocumentProgressHandler { let target: JSRef<EventTarget> = EventTargetCast::from_ref(frame_element.r()); event.r().fire(target); }); + + window_ref.reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::DocumentLoaded); } } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 1babbfcb2cd..e7b2233cff1 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -75,6 +75,8 @@ pub enum ReflowReason { Timer, Viewport, WindowResize, + DOMContentLoaded, + DocumentLoaded, } #[dom_struct] @@ -510,8 +512,6 @@ impl<'a> WindowHelpers for JSRef<'a, Window> { return } - debug!("script: performing reflow for goal {:?}", goal); - // Layout will let us know when it's done. let (join_chan, join_port) = channel(); @@ -840,6 +840,8 @@ fn debug_reflow_events(goal: &ReflowGoal, query_type: &ReflowQueryType, reason: ReflowReason::Timer => debug_msg.push_str("\tTimer"), ReflowReason::Viewport => debug_msg.push_str("\tViewport"), ReflowReason::WindowResize => debug_msg.push_str("\tWindowResize"), + ReflowReason::DOMContentLoaded => debug_msg.push_str("\tDOMContentLoaded"), + ReflowReason::DocumentLoaded => debug_msg.push_str("\tDocumentLoaded"), } println!("{}", debug_msg); |