diff options
author | Ms2ger <Ms2ger@gmail.com> | 2015-11-20 14:13:50 +0100 |
---|---|---|
committer | Ms2ger <Ms2ger@gmail.com> | 2015-11-20 14:34:10 +0100 |
commit | b77576f34b334f28eee7055b7592346ff2f7e3f9 (patch) | |
tree | 3f1e9a3ea09379b6b17fcfbdd3e6a05119ef6982 /components/layout/layout_task.rs | |
parent | 0146751bb227e577f54c4c0574ae36236e2bcdce (diff) | |
download | servo-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.rs | 29 |
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 => {} } } |