aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout/layout_task.rs
diff options
context:
space:
mode:
authorMs2ger <Ms2ger@gmail.com>2015-11-20 14:13:50 +0100
committerMs2ger <Ms2ger@gmail.com>2015-11-20 14:34:10 +0100
commitb77576f34b334f28eee7055b7592346ff2f7e3f9 (patch)
tree3f1e9a3ea09379b6b17fcfbdd3e6a05119ef6982 /components/layout/layout_task.rs
parent0146751bb227e577f54c4c0574ae36236e2bcdce (diff)
downloadservo-b77576f34b334f28eee7055b7592346ff2f7e3f9.tar.gz
servo-b77576f34b334f28eee7055b7592346ff2f7e3f9.zip
Pass ServoLayoutNode to query functions.
This means we only deal with TrustedNodeAddress in LayoutTask::handle_reflow, which is where the safety of this usage is guaranteed (by the ScriptReflow destructor).
Diffstat (limited to 'components/layout/layout_task.rs')
-rw-r--r--components/layout/layout_task.rs29
1 files changed, 19 insertions, 10 deletions
diff --git a/components/layout/layout_task.rs b/components/layout/layout_task.rs
index 6eced0fd13e..60a0ec80120 100644
--- a/components/layout/layout_task.rs
+++ b/components/layout/layout_task.rs
@@ -1031,18 +1031,27 @@ impl LayoutTask {
if let Some(mut root_flow) = self.root_flow.clone() {
match data.query_type {
- ReflowQueryType::ContentBoxQuery(node) =>
- rw_data.content_box_response = process_content_box_request(node, &mut root_flow),
- ReflowQueryType::ContentBoxesQuery(node) =>
- rw_data.content_boxes_response = process_content_boxes_request(node, &mut root_flow),
- ReflowQueryType::NodeGeometryQuery(node) =>
- rw_data.client_rect_response = process_node_geometry_request(node, &mut root_flow),
+ ReflowQueryType::ContentBoxQuery(node) => {
+ let node = unsafe { ServoLayoutNode::new(&node) };
+ rw_data.content_box_response = process_content_box_request(node, &mut root_flow);
+ },
+ ReflowQueryType::ContentBoxesQuery(node) => {
+ let node = unsafe { ServoLayoutNode::new(&node) };
+ rw_data.content_boxes_response = process_content_boxes_request(node, &mut root_flow);
+ },
+ ReflowQueryType::NodeGeometryQuery(node) => {
+ let node = unsafe { ServoLayoutNode::new(&node) };
+ rw_data.client_rect_response = process_node_geometry_request(node, &mut root_flow);
+ },
ReflowQueryType::ResolvedStyleQuery(node, ref pseudo, ref property) => {
+ let node = unsafe { ServoLayoutNode::new(&node) };
rw_data.resolved_style_response =
- process_resolved_style_request(node, pseudo, property, &mut root_flow)
- }
- ReflowQueryType::OffsetParentQuery(node) =>
- rw_data.offset_parent_response = process_offset_parent_query(node, &mut root_flow),
+ process_resolved_style_request(node, pseudo, property, &mut root_flow);
+ },
+ ReflowQueryType::OffsetParentQuery(node) => {
+ let node = unsafe { ServoLayoutNode::new(&node) };
+ rw_data.offset_parent_response = process_offset_parent_query(node, &mut root_flow);
+ },
ReflowQueryType::NoQuery => {}
}
}