diff options
-rw-r--r-- | components/layout/construct.rs | 9 | ||||
-rw-r--r-- | components/layout/css/matching.rs | 4 | ||||
-rw-r--r-- | components/layout/fragment.rs | 7 | ||||
-rw-r--r-- | components/layout/layout_task.rs | 2 | ||||
-rw-r--r-- | components/layout/opaque_node.rs | 19 | ||||
-rw-r--r-- | components/layout/wrapper.rs | 16 |
6 files changed, 20 insertions, 37 deletions
diff --git a/components/layout/construct.rs b/components/layout/construct.rs index 2742c18d271..d3e568b1076 100644 --- a/components/layout/construct.rs +++ b/components/layout/construct.rs @@ -31,7 +31,6 @@ use incremental::{RECONSTRUCT_FLOW, RestyleDamage}; use inline::{InlineFlow, InlineFragmentNodeInfo}; use list_item::{ListItemFlow, ListStyleTypeContent}; use multicol::MulticolFlow; -use opaque_node::OpaqueNodeMethods; use parallel; use table::TableFlow; use table_caption::TableCaptionFlow; @@ -209,7 +208,7 @@ impl InlineFragmentsAccumulator { InlineFragmentsAccumulator { fragments: IntermediateInlineFragments::new(), enclosing_node: Some(InlineFragmentNodeInfo { - address: OpaqueNodeMethods::from_thread_safe_layout_node(node), + address: node.opaque(), style: node.style().clone(), }), } @@ -690,9 +689,8 @@ impl<'a> FlowConstructor<'a> { } }; - let opaque_node = OpaqueNodeMethods::from_thread_safe_layout_node(node); fragments.fragments - .push_back(Fragment::from_opaque_node_and_style(opaque_node, + .push_back(Fragment::from_opaque_node_and_style(node.opaque(), style.clone(), node.restyle_damage(), specific)) @@ -852,9 +850,8 @@ impl<'a> FlowConstructor<'a> { // // FIXME(#2001, pcwalton): Don't do this if there's padding or borders. if node.is_ignorable_whitespace() { - let opaque_node = OpaqueNodeMethods::from_thread_safe_layout_node(node); return ConstructionResult::ConstructionItem(ConstructionItem::Whitespace( - opaque_node, + node.opaque(), node.style().clone(), node.restyle_damage())) } diff --git a/components/layout/css/matching.rs b/components/layout/css/matching.rs index 29edbd9e9aa..eae14f6a460 100644 --- a/components/layout/css/matching.rs +++ b/components/layout/css/matching.rs @@ -11,7 +11,6 @@ use context::SharedLayoutContext; use css::node_style::StyledNode; use data::LayoutDataWrapper; use incremental::{self, RestyleDamage}; -use opaque_node::OpaqueNodeMethods; use smallvec::SmallVec16; use wrapper::{LayoutElement, LayoutNode}; @@ -480,9 +479,8 @@ impl<'ln> PrivateMatchMethods for LayoutNode<'ln> { // This is a newly-created node; we've nothing to transition from! } Some(ref style) => { - let node = OpaqueNodeMethods::from_layout_node(self); animation::start_transitions_if_applicable(new_animations_sender, - node, + self.opaque(), &**style, &mut this_style); } diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs index a455a4d91b2..c3d471b6c3a 100644 --- a/components/layout/fragment.rs +++ b/components/layout/fragment.rs @@ -404,8 +404,7 @@ impl ReplacedImageFragmentInfo { dom_width: Option<Au>, dom_height: Option<Au>) -> ReplacedImageFragmentInfo { let is_vertical = node.style().writing_mode.is_vertical(); - let opaque_node: OpaqueNode = OpaqueNodeMethods::from_thread_safe_layout_node(node); - let untrusted_node: UntrustedNodeAddress = opaque_node.to_untrusted_node_address(); + let untrusted_node = node.opaque().to_untrusted_node_address(); ReplacedImageFragmentInfo { for_node: untrusted_node, @@ -736,7 +735,7 @@ impl Fragment { let style = node.style().clone(); let writing_mode = style.writing_mode; Fragment { - node: OpaqueNodeMethods::from_thread_safe_layout_node(node), + node: node.opaque(), style: style, restyle_damage: node.restyle_damage(), border_box: LogicalRect::zero(writing_mode), @@ -766,7 +765,7 @@ impl Fragment { let node_style = cascade_anonymous(&**node.style()); let writing_mode = node_style.writing_mode; Fragment { - node: OpaqueNodeMethods::from_thread_safe_layout_node(node), + node: node.opaque(), style: Arc::new(node_style), restyle_damage: node.restyle_damage(), border_box: LogicalRect::zero(writing_mode), diff --git a/components/layout/layout_task.rs b/components/layout/layout_task.rs index 2ba792eeb49..58a12cf9472 100644 --- a/components/layout/layout_task.rs +++ b/components/layout/layout_task.rs @@ -385,7 +385,7 @@ impl LayoutTask { canvas_layers_sender: self.canvas_layers_sender.clone(), stylist: &*rw_data.stylist, url: (*url).clone(), - reflow_root: reflow_root.map(|node| OpaqueNodeMethods::from_layout_node(node)), + reflow_root: reflow_root.map(|node| node.opaque()), dirty: Rect::zero(), visible_rects: rw_data.visible_rects.clone(), generation: rw_data.generation, diff --git a/components/layout/opaque_node.rs b/components/layout/opaque_node.rs index ea22df50668..2b307288afa 100644 --- a/components/layout/opaque_node.rs +++ b/components/layout/opaque_node.rs @@ -10,15 +10,8 @@ use script::dom::bindings::js::LayoutJS; use script::dom::node::Node; use script::layout_interface::{TrustedNodeAddress}; use script_traits::UntrustedNodeAddress; -use wrapper::{LayoutNode, ThreadSafeLayoutNode}; pub trait OpaqueNodeMethods { - /// Converts a DOM node (layout view) to an `OpaqueNode`. - fn from_layout_node(node: &LayoutNode) -> Self; - - /// Converts a thread-safe DOM node (layout view) to an `OpaqueNode`. - fn from_thread_safe_layout_node(node: &ThreadSafeLayoutNode) -> Self; - /// Converts a DOM node (script view) to an `OpaqueNode`. fn from_script_node(node: TrustedNodeAddress) -> Self; @@ -31,18 +24,6 @@ pub trait OpaqueNodeMethods { } impl OpaqueNodeMethods for OpaqueNode { - fn from_layout_node(node: &LayoutNode) -> OpaqueNode { - unsafe { - OpaqueNodeMethods::from_jsmanaged(node.get_jsmanaged()) - } - } - - fn from_thread_safe_layout_node(node: &ThreadSafeLayoutNode) -> OpaqueNode { - unsafe { - OpaqueNodeMethods::from_jsmanaged(node.get_jsmanaged()) - } - } - fn from_script_node(node: TrustedNodeAddress) -> OpaqueNode { unsafe { OpaqueNodeMethods::from_jsmanaged(&LayoutJS::from_trusted_node_address(node)) diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index c4414a55dd6..03140dfd982 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -170,6 +170,11 @@ impl<'ln> LayoutNode<'ln> { &self.node } + /// Converts self into an `OpaqueNode`. + pub fn opaque(&self) -> OpaqueNode { + OpaqueNodeMethods::from_jsmanaged(unsafe { self.get_jsmanaged() }) + } + /// Resets layout data and styles for the node. /// /// FIXME(pcwalton): Do this as part of fragment building instead of in a traversal. @@ -197,8 +202,7 @@ impl<'ln> LayoutNode<'ln> { match shared.reflow_root { None => panic!("layout_parent_node(): This layout has no access to the DOM!"), Some(reflow_root) => { - let opaque_node: OpaqueNode = OpaqueNodeMethods::from_layout_node(&self); - if opaque_node == reflow_root { + if self.opaque() == reflow_root { None } else { self.parent_node() @@ -208,8 +212,7 @@ impl<'ln> LayoutNode<'ln> { } pub fn debug_id(self) -> usize { - let opaque: OpaqueNode = OpaqueNodeMethods::from_layout_node(&self); - opaque.to_untrusted_node_address().0 as usize + self.opaque().to_untrusted_node_address().0 as usize } } @@ -644,6 +647,11 @@ impl<'ln> ThreadSafeLayoutNode<'ln> { self.node.get_jsmanaged() } + /// Converts self into an `OpaqueNode`. + pub fn opaque(&self) -> OpaqueNode { + OpaqueNodeMethods::from_jsmanaged(unsafe { self.get_jsmanaged() }) + } + /// Returns the type ID of this node. /// Returns `None` if this is a pseudo-element; otherwise, returns `Some`. pub fn type_id(&self) -> Option<NodeTypeId> { |