pub trait LayoutNode<'dom>: Copy + Debug + TNode + Send + Sync {
type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode<'dom>;
// Required methods
fn to_threadsafe(&self) -> Self::ConcreteThreadSafeLayoutNode;
fn type_id(&self) -> LayoutNodeType;
unsafe fn initialize_style_and_layout_data<RequestedLayoutDataType: LayoutDataTrait>(
&self,
);
fn initialize_layout_data<RequestedLayoutDataType: LayoutDataTrait>(&self);
fn style_data(&self) -> Option<&'dom StyleData>;
fn layout_data(&self) -> Option<&'dom GenericLayoutData>;
fn is_connected(&self) -> bool;
// Provided methods
fn rev_children(self) -> LayoutIterator<ReverseChildrenIterator<Self>> { ... }
fn traverse_preorder(self) -> TreeIterator<Self> ⓘ { ... }
}
Expand description
A wrapper so that layout can access only the methods that it should have access to. Layout must
only ever see these and must never see instances of LayoutDom
.
FIXME(mrobinson): Send + Sync
is required here for Layout 2020, but eventually it
should stop sending LayoutNodes to other threads and rely on ThreadSafeLayoutNode
or some other mechanism to ensure thread safety.
Required Associated Types§
Required Methods§
fn to_threadsafe(&self) -> Self::ConcreteThreadSafeLayoutNode
sourcefn type_id(&self) -> LayoutNodeType
fn type_id(&self) -> LayoutNodeType
Returns the type ID of this node.
sourceunsafe fn initialize_style_and_layout_data<RequestedLayoutDataType: LayoutDataTrait>(
&self,
)
unsafe fn initialize_style_and_layout_data<RequestedLayoutDataType: LayoutDataTrait>( &self, )
Initialize this node with empty style and opaque layout data.
§Safety
This method is unsafe because it modifies the given node during layout. Callers should ensure that no other layout thread is attempting to read or modify the opaque layout data of this node.
sourcefn initialize_layout_data<RequestedLayoutDataType: LayoutDataTrait>(&self)
fn initialize_layout_data<RequestedLayoutDataType: LayoutDataTrait>(&self)
Initialize this node with empty opaque layout data.
§Safety
This method is unsafe because it modifies the given node during layout. Callers should ensure that no other layout thread is attempting to read or modify the opaque layout data of this node.
sourcefn style_data(&self) -> Option<&'dom StyleData>
fn style_data(&self) -> Option<&'dom StyleData>
Get the StyleData
for this node. Returns None if the node is unstyled.
sourcefn layout_data(&self) -> Option<&'dom GenericLayoutData>
fn layout_data(&self) -> Option<&'dom GenericLayoutData>
Get the layout data of this node, attempting to downcast it to the desired type. Returns None if there is no layout data or it isn’t of the desired type.
sourcefn is_connected(&self) -> bool
fn is_connected(&self) -> bool
Returns whether the node is connected.