diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs index 8d86459a068..9f6dd2bdaef 100644 --- a/components/layout/wrapper.rs +++ b/components/layout/wrapper.rs @@ -81,6 +81,8 @@ pub trait LayoutNode: TNode { fn get_style_data(&self) -> Option<&RefCell>; + fn init_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData); + /// Similar to borrow_data*, but returns the full PrivateLayoutData rather /// than only the PrivateStyleData. unsafe fn borrow_layout_data_unchecked(&self) -> Option<*const PrivateLayoutData>; @@ -131,9 +133,7 @@ impl<'ln> ServoLayoutNode<'ln> { let opaque = OpaqueStyleAndLayoutData { ptr: unsafe { NonZero::new(ptr as *mut RefCell) } }; - unsafe { - self.node.init_style_and_layout_data(opaque); - } + self.init_style_and_layout_data(opaque); } } } @@ -308,6 +308,12 @@ impl<'ln> LayoutNode for ServoLayoutNode<'ln> { } } + fn init_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData) { + unsafe { + self.get_jsmanaged().init_style_and_layout_data(data); + } + } + unsafe fn borrow_layout_data_unchecked(&self) -> Option<*const PrivateLayoutData> { self.get_jsmanaged().get_style_and_layout_data().map(|opaque| { let container = *opaque.ptr as NonOpaqueStyleAndLayoutData;