diff options
author | Adenilson Cavalcanti <cavalcantii@gmail.com> | 2015-03-04 15:45:34 -0800 |
---|---|---|
committer | Adenilson Cavalcanti <cavalcantii@gmail.com> | 2015-03-06 12:27:18 -0800 |
commit | 618f56410db1f18ce05744e45e8f9651152d9ae2 (patch) | |
tree | 897296f1f8ac0e05f89101be365cb67a4e262e4d /components/script/script_task.rs | |
parent | 34289943e354b2ac0e54fd1fe2d65c944f6c8e9d (diff) | |
download | servo-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.rs | 18 |
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 |