aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/script_task.rs
diff options
context:
space:
mode:
authorAdenilson Cavalcanti <cavalcantii@gmail.com>2015-03-04 15:45:34 -0800
committerAdenilson Cavalcanti <cavalcantii@gmail.com>2015-03-06 12:27:18 -0800
commit618f56410db1f18ce05744e45e8f9651152d9ae2 (patch)
tree897296f1f8ac0e05f89101be365cb67a4e262e4d /components/script/script_task.rs
parent34289943e354b2ac0e54fd1fe2d65c944f6c8e9d (diff)
downloadservo-618f56410db1f18ce05744e45e8f9651152d9ae2.tar.gz
servo-618f56410db1f18ce05744e45e8f9651152d9ae2.zip
Implements reflow events debugging.
Start servo with -Z relayout-event and you should have reflow events printed to the terminal.
Diffstat (limited to 'components/script/script_task.rs')
-rw-r--r--components/script/script_task.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs
index 673dc3510ef..4fa240aa3c1 100644
--- a/components/script/script_task.rs
+++ b/components/script/script_task.rs
@@ -36,7 +36,7 @@ use dom::event::{Event, EventHelpers};
use dom::uievent::UIEvent;
use dom::eventtarget::EventTarget;
use dom::node::{self, Node, NodeHelpers, NodeDamage, window_from_node};
-use dom::window::{Window, WindowHelpers, ScriptHelpers};
+use dom::window::{Window, WindowHelpers, ScriptHelpers, ReflowReason};
use dom::worker::{Worker, TrustedWorkerAddress};
use parse::html::{HTMLInput, parse_html};
use layout_interface::{ScriptLayoutChan, LayoutChan, ReflowGoal, ReflowQueryType};
@@ -697,7 +697,7 @@ impl ScriptTask {
let window = inner_page.window().root();
if window.r().set_page_clip_rect_with_new_viewport(rect) {
let page = get_page(page, id);
- self.force_reflow(&*page);
+ self.force_reflow(&*page, ReflowReason::Viewport);
}
return;
}
@@ -771,7 +771,7 @@ impl ScriptTask {
let needed_reflow = page.set_reflow_status(false);
if needed_reflow {
- self.force_reflow(&*page);
+ self.force_reflow(&*page, ReflowReason::CachedPageNeededReflow);
}
}
@@ -1007,7 +1007,7 @@ impl ScriptTask {
debug!("kicking off initial reflow of {:?}", final_url);
document.r().content_changed(NodeCast::from_ref(document.r()),
NodeDamage::OtherNodeDamage);
- window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery);
+ window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, ReflowReason::FirstLoad);
// No more reflow required
page.set_reflow_status(false);
@@ -1060,11 +1060,11 @@ impl ScriptTask {
}
/// Reflows non-incrementally.
- fn force_reflow(&self, page: &Page) {
+ fn force_reflow(&self, page: &Page, reason: ReflowReason) {
let document = page.document().root();
document.r().dirty_all_nodes();
let window = window_from_node(document.r()).root();
- window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery);
+ window.r().reflow(ReflowGoal::ForDisplay, ReflowQueryType::NoQuery, reason);
}
/// This is the main entry point for receiving and dispatching DOM events.
@@ -1113,7 +1113,7 @@ impl ScriptTask {
let mouse_over_targets = &mut *self.mouse_over_targets.borrow_mut();
if document.r().handle_mouse_move_event(self.js_runtime.ptr, point, mouse_over_targets) {
- self.force_reflow(&page)
+ self.force_reflow(&page, ReflowReason::MouseEvent)
}
}
@@ -1151,7 +1151,7 @@ impl ScriptTask {
let page = get_page(&self.root_page(), pipeline_id);
let window = page.window().root();
window.r().set_window_size(new_size);
- self.force_reflow(&*page);
+ self.force_reflow(&*page, ReflowReason::WindowResize);
let document = page.document().root();
let fragment_node = window.r().steal_fragment_name()
@@ -1177,7 +1177,7 @@ impl ScriptTask {
fn handle_reflow_event(&self, pipeline_id: PipelineId) {
debug!("script got reflow event");
let page = get_page(&self.root_page(), pipeline_id);
- self.force_reflow(&*page);
+ self.force_reflow(&*page, ReflowReason::ReceivedReflowEvent);
}
/// Initiate a non-blocking fetch for a specified resource. Stores the InProgressLoad