aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorGlenn Watson <gw@intuitionlibrary.com>2015-03-11 08:43:47 +1000
committerGlenn Watson <gw@intuitionlibrary.com>2015-03-11 08:43:47 +1000
commit33829c0254d0a239a8f353bafae55fe4ebf599c4 (patch)
tree230cced71538613e6ed382a5bfdc555003c279da /components/script
parente8f1a046c6c704915419cb75181f6e0bc402ef98 (diff)
downloadservo-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.rs4
-rw-r--r--components/script/dom/window.rs6
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);