Rename a bunch of style/layout data items

GetLayoutData::get_style_and_layout_data becomes
GetOpaqueStyleAndLayoutData::get_opaque_style_and_layout_data.

GetRawData::get_raw_data becomes GetStyleAndLayoutData::get_style_and_layout_data.

LayoutNode::init_style_and_layout_data becomes
LayoutNode::init_opaque_style_and_layout_data.

LayoutNode::take_style_and_layout_data becomes
LayoutNode::take_opaque_style_and_layout_data.
This commit is contained in:
Anthony Ramine 2020-04-06 12:06:00 +02:00
parent 3df65c02fe
commit e3be136c9b
10 changed files with 105 additions and 95 deletions

View file

@ -1037,13 +1037,16 @@ fn inner_text_collection_steps<'dom>(
}; };
let element_data = { let element_data = {
&node.get_style_and_layout_data().as_ref().map(|opaque| { &node
&opaque .get_opaque_style_and_layout_data()
.downcast_ref::<StyleAndLayoutData>() .as_ref()
.unwrap() .map(|opaque| {
.style_data &opaque
.element_data .downcast_ref::<StyleAndLayoutData>()
}) .unwrap()
.style_data
.element_data
})
}; };
if element_data.is_none() { if element_data.is_none() {

View file

@ -9,7 +9,7 @@ use crate::context::LayoutContext;
use crate::display_list::DisplayListBuildState; use crate::display_list::DisplayListBuildState;
use crate::flow::{Flow, FlowFlags, GetBaseFlow, ImmutableFlowUtils}; use crate::flow::{Flow, FlowFlags, GetBaseFlow, ImmutableFlowUtils};
use crate::wrapper::ThreadSafeLayoutNodeHelpers; use crate::wrapper::ThreadSafeLayoutNodeHelpers;
use crate::wrapper::{GetRawData, LayoutNodeLayoutData}; use crate::wrapper::{GetStyleAndLayoutData, LayoutNodeLayoutData};
use script_layout_interface::wrapper_traits::{LayoutNode, ThreadSafeLayoutNode}; use script_layout_interface::wrapper_traits::{LayoutNode, ThreadSafeLayoutNode};
use servo_config::opts; use servo_config::opts;
use style::context::{SharedStyleContext, StyleContext}; use style::context::{SharedStyleContext, StyleContext};
@ -73,7 +73,7 @@ where
// flow construction: // flow construction:
// (1) They child doesn't yet have layout data (preorder traversal initializes it). // (1) They child doesn't yet have layout data (preorder traversal initializes it).
// (2) The parent element has restyle damage (so the text flow also needs fixup). // (2) The parent element has restyle damage (so the text flow also needs fixup).
node.get_raw_data().is_none() || !parent_data.damage.is_empty() node.get_style_and_layout_data().is_none() || !parent_data.damage.is_empty()
} }
fn shared_context(&self) -> &SharedStyleContext { fn shared_context(&self) -> &SharedStyleContext {

View file

@ -32,7 +32,7 @@
use crate::data::{LayoutData, LayoutDataFlags, StyleAndLayoutData}; use crate::data::{LayoutData, LayoutDataFlags, StyleAndLayoutData};
use atomic_refcell::{AtomicRef, AtomicRefMut}; use atomic_refcell::{AtomicRef, AtomicRefMut};
use script_layout_interface::wrapper_traits::GetLayoutData; use script_layout_interface::wrapper_traits::GetOpaqueStyleAndLayoutData;
use script_layout_interface::wrapper_traits::{ThreadSafeLayoutElement, ThreadSafeLayoutNode}; use script_layout_interface::wrapper_traits::{ThreadSafeLayoutElement, ThreadSafeLayoutNode};
use style::dom::{NodeInfo, TNode}; use style::dom::{NodeInfo, TNode};
use style::selector_parser::RestyleDamage; use style::selector_parser::RestyleDamage;
@ -47,14 +47,16 @@ pub trait LayoutNodeLayoutData<'dom> {
impl<'dom, T> LayoutNodeLayoutData<'dom> for T impl<'dom, T> LayoutNodeLayoutData<'dom> for T
where where
T: GetLayoutData<'dom>, T: GetOpaqueStyleAndLayoutData<'dom>,
{ {
fn borrow_layout_data(self) -> Option<AtomicRef<'dom, LayoutData>> { fn borrow_layout_data(self) -> Option<AtomicRef<'dom, LayoutData>> {
self.get_raw_data().map(|d| d.layout_data.borrow()) self.get_style_and_layout_data()
.map(|d| d.layout_data.borrow())
} }
fn mutate_layout_data(self) -> Option<AtomicRefMut<'dom, LayoutData>> { fn mutate_layout_data(self) -> Option<AtomicRefMut<'dom, LayoutData>> {
self.get_raw_data().map(|d| d.layout_data.borrow_mut()) self.get_style_and_layout_data()
.map(|d| d.layout_data.borrow_mut())
} }
fn flow_debug_id(self) -> usize { fn flow_debug_id(self) -> usize {
@ -63,16 +65,16 @@ where
} }
} }
pub trait GetRawData<'dom> { pub trait GetStyleAndLayoutData<'dom> {
fn get_raw_data(self) -> Option<&'dom StyleAndLayoutData>; fn get_style_and_layout_data(self) -> Option<&'dom StyleAndLayoutData>;
} }
impl<'dom, T> GetRawData<'dom> for T impl<'dom, T> GetStyleAndLayoutData<'dom> for T
where where
T: GetLayoutData<'dom>, T: GetOpaqueStyleAndLayoutData<'dom>,
{ {
fn get_raw_data(self) -> Option<&'dom StyleAndLayoutData> { fn get_style_and_layout_data(self) -> Option<&'dom StyleAndLayoutData> {
self.get_style_and_layout_data() self.get_opaque_style_and_layout_data()
.map(|opaque| opaque.downcast_ref().unwrap()) .map(|opaque| opaque.downcast_ref().unwrap())
} }
} }
@ -143,7 +145,7 @@ where
} }
let damage = { let damage = {
let data = node.get_raw_data().unwrap(); let data = node.get_style_and_layout_data().unwrap();
if !data if !data
.layout_data .layout_data

View file

@ -8,7 +8,7 @@ use crate::element_data::{LayoutBox, LayoutDataForElement};
use crate::geom::PhysicalSize; use crate::geom::PhysicalSize;
use crate::replaced::{CanvasInfo, CanvasSource, ReplacedContent}; use crate::replaced::{CanvasInfo, CanvasSource, ReplacedContent};
use crate::style_ext::{Display, DisplayGeneratingBox, DisplayInside, DisplayOutside}; use crate::style_ext::{Display, DisplayGeneratingBox, DisplayInside, DisplayOutside};
use crate::wrapper::GetRawData; use crate::wrapper::GetStyleAndLayoutData;
use atomic_refcell::AtomicRefMut; use atomic_refcell::AtomicRefMut;
use html5ever::LocalName; use html5ever::LocalName;
use net_traits::image::base::Image as NetImage; use net_traits::image::base::Image as NetImage;
@ -448,7 +448,7 @@ where
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn layout_data_mut(self) -> AtomicRefMut<'dom, LayoutDataForElement> { fn layout_data_mut(self) -> AtomicRefMut<'dom, LayoutDataForElement> {
self.get_raw_data() self.get_style_and_layout_data()
.map(|d| d.layout_data.borrow_mut()) .map(|d| d.layout_data.borrow_mut())
.unwrap() .unwrap()
} }

View file

@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */ * file, You can obtain one at https://mozilla.org/MPL/2.0/. */
use crate::context::LayoutContext; use crate::context::LayoutContext;
use crate::wrapper::GetRawData; use crate::wrapper::GetStyleAndLayoutData;
use script_layout_interface::wrapper_traits::LayoutNode; use script_layout_interface::wrapper_traits::LayoutNode;
use style::context::{SharedStyleContext, StyleContext}; use style::context::{SharedStyleContext, StyleContext};
use style::data::ElementData; use style::data::ElementData;
@ -63,7 +63,7 @@ where
} }
fn text_node_needs_traversal(node: E::ConcreteNode, parent_data: &ElementData) -> bool { fn text_node_needs_traversal(node: E::ConcreteNode, parent_data: &ElementData) -> bool {
node.get_raw_data().is_none() || !parent_data.damage.is_empty() node.get_style_and_layout_data().is_none() || !parent_data.damage.is_empty()
} }
fn shared_context(&self) -> &SharedStyleContext { fn shared_context(&self) -> &SharedStyleContext {

View file

@ -5,18 +5,18 @@
#![allow(unsafe_code)] #![allow(unsafe_code)]
use crate::data::StyleAndLayoutData; use crate::data::StyleAndLayoutData;
use script_layout_interface::wrapper_traits::GetLayoutData; use script_layout_interface::wrapper_traits::GetOpaqueStyleAndLayoutData;
pub trait GetRawData<'dom> { pub trait GetStyleAndLayoutData<'dom> {
fn get_raw_data(self) -> Option<&'dom StyleAndLayoutData>; fn get_style_and_layout_data(self) -> Option<&'dom StyleAndLayoutData>;
} }
impl<'dom, T> GetRawData<'dom> for T impl<'dom, T> GetStyleAndLayoutData<'dom> for T
where where
T: GetLayoutData<'dom>, T: GetOpaqueStyleAndLayoutData<'dom>,
{ {
fn get_raw_data(self) -> Option<&'dom StyleAndLayoutData> { fn get_style_and_layout_data(self) -> Option<&'dom StyleAndLayoutData> {
self.get_style_and_layout_data() self.get_opaque_style_and_layout_data()
.map(|opaque| opaque.downcast_ref().unwrap()) .map(|opaque| opaque.downcast_ref().unwrap())
} }
} }

View file

@ -34,7 +34,7 @@ use atomic_refcell::{AtomicRef, AtomicRefMut};
use gfx_traits::ByteIndex; use gfx_traits::ByteIndex;
use html5ever::{LocalName, Namespace}; use html5ever::{LocalName, Namespace};
use layout::data::StyleAndLayoutData; use layout::data::StyleAndLayoutData;
use layout::wrapper::GetRawData; use layout::wrapper::GetStyleAndLayoutData;
use msg::constellation_msg::{BrowsingContextId, PipelineId}; use msg::constellation_msg::{BrowsingContextId, PipelineId};
use net_traits::image::base::{Image, ImageMetadata}; use net_traits::image::base::{Image, ImageMetadata};
use range::Range; use range::Range;
@ -50,7 +50,7 @@ use script::layout_exports::{
LayoutDom, LayoutElementHelpers, LayoutNodeHelpers, LayoutShadowRootHelpers, LayoutDom, LayoutElementHelpers, LayoutNodeHelpers, LayoutShadowRootHelpers,
}; };
use script_layout_interface::wrapper_traits::{ use script_layout_interface::wrapper_traits::{
DangerousThreadSafeLayoutNode, GetLayoutData, LayoutNode, DangerousThreadSafeLayoutNode, GetOpaqueStyleAndLayoutData, LayoutNode,
}; };
use script_layout_interface::wrapper_traits::{ use script_layout_interface::wrapper_traits::{
PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode, PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
@ -268,18 +268,18 @@ impl<'ln> LayoutNode<'ln> for ServoLayoutNode<'ln> {
} }
unsafe fn initialize_data(&self) { unsafe fn initialize_data(&self) {
if self.get_raw_data().is_none() { if self.get_style_and_layout_data().is_none() {
let opaque = OpaqueStyleAndLayoutData::new(StyleAndLayoutData::new()); let opaque = OpaqueStyleAndLayoutData::new(StyleAndLayoutData::new());
self.init_style_and_layout_data(opaque); self.init_opaque_style_and_layout_data(opaque);
}; };
} }
unsafe fn init_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData) { unsafe fn init_opaque_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData) {
self.get_jsmanaged().init_style_and_layout_data(data); self.get_jsmanaged().init_opaque_style_and_layout_data(data);
} }
unsafe fn take_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData { unsafe fn take_opaque_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData {
self.get_jsmanaged().take_style_and_layout_data() self.get_jsmanaged().take_opaque_style_and_layout_data()
} }
fn is_connected(&self) -> bool { fn is_connected(&self) -> bool {
@ -287,27 +287,27 @@ impl<'ln> LayoutNode<'ln> for ServoLayoutNode<'ln> {
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoLayoutNode<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoLayoutNode<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.get_jsmanaged().get_style_and_layout_data() self.get_jsmanaged().get_opaque_style_and_layout_data()
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoLayoutElement<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoLayoutElement<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.as_node().get_style_and_layout_data() self.as_node().get_opaque_style_and_layout_data()
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoThreadSafeLayoutNode<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoThreadSafeLayoutNode<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.node.get_style_and_layout_data() self.node.get_opaque_style_and_layout_data()
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoThreadSafeLayoutElement<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoThreadSafeLayoutElement<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.element.as_node().get_style_and_layout_data() self.element.as_node().get_opaque_style_and_layout_data()
} }
} }
@ -536,8 +536,8 @@ impl<'le> TElement for ServoLayoutElement<'le> {
} }
unsafe fn clear_data(&self) { unsafe fn clear_data(&self) {
if self.get_raw_data().is_some() { if self.get_style_and_layout_data().is_some() {
drop(self.as_node().take_style_and_layout_data()); drop(self.as_node().take_opaque_style_and_layout_data());
} }
} }
@ -695,7 +695,7 @@ impl<'le> ServoLayoutElement<'le> {
} }
fn get_style_data(&self) -> Option<&StyleData> { fn get_style_data(&self) -> Option<&StyleData> {
self.get_style_and_layout_data().map(|opaque| { self.get_opaque_style_and_layout_data().map(|opaque| {
&opaque &opaque
.downcast_ref::<StyleAndLayoutData>() .downcast_ref::<StyleAndLayoutData>()
.unwrap() .unwrap()
@ -1045,8 +1045,8 @@ impl<'ln> ThreadSafeLayoutNode<'ln> for ServoThreadSafeLayoutNode<'ln> {
}) })
} }
fn get_style_and_layout_data(self) -> Option<&'ln OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'ln OpaqueStyleAndLayoutData> {
self.node.get_style_and_layout_data() self.node.get_opaque_style_and_layout_data()
} }
fn is_ignorable_whitespace(&self, context: &SharedStyleContext) -> bool { fn is_ignorable_whitespace(&self, context: &SharedStyleContext) -> bool {

View file

@ -34,7 +34,7 @@ use atomic_refcell::{AtomicRef, AtomicRefMut};
use gfx_traits::ByteIndex; use gfx_traits::ByteIndex;
use html5ever::{LocalName, Namespace}; use html5ever::{LocalName, Namespace};
use layout::data::StyleAndLayoutData; use layout::data::StyleAndLayoutData;
use layout::wrapper::GetRawData; use layout::wrapper::GetStyleAndLayoutData;
use msg::constellation_msg::{BrowsingContextId, PipelineId}; use msg::constellation_msg::{BrowsingContextId, PipelineId};
use net_traits::image::base::{Image, ImageMetadata}; use net_traits::image::base::{Image, ImageMetadata};
use range::Range; use range::Range;
@ -50,7 +50,7 @@ use script::layout_exports::{
LayoutDom, LayoutElementHelpers, LayoutNodeHelpers, LayoutShadowRootHelpers, LayoutDom, LayoutElementHelpers, LayoutNodeHelpers, LayoutShadowRootHelpers,
}; };
use script_layout_interface::wrapper_traits::{ use script_layout_interface::wrapper_traits::{
DangerousThreadSafeLayoutNode, GetLayoutData, LayoutNode, DangerousThreadSafeLayoutNode, GetOpaqueStyleAndLayoutData, LayoutNode,
}; };
use script_layout_interface::wrapper_traits::{ use script_layout_interface::wrapper_traits::{
PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode, PseudoElementType, ThreadSafeLayoutElement, ThreadSafeLayoutNode,
@ -275,18 +275,18 @@ impl<'ln> LayoutNode<'ln> for ServoLayoutNode<'ln> {
} }
unsafe fn initialize_data(&self) { unsafe fn initialize_data(&self) {
if self.get_raw_data().is_none() { if self.get_style_and_layout_data().is_none() {
let opaque = OpaqueStyleAndLayoutData::new(StyleAndLayoutData::new()); let opaque = OpaqueStyleAndLayoutData::new(StyleAndLayoutData::new());
self.init_style_and_layout_data(opaque); self.init_opaque_style_and_layout_data(opaque);
}; };
} }
unsafe fn init_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData) { unsafe fn init_opaque_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData) {
self.get_jsmanaged().init_style_and_layout_data(data); self.get_jsmanaged().init_opaque_style_and_layout_data(data);
} }
unsafe fn take_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData { unsafe fn take_opaque_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData {
self.get_jsmanaged().take_style_and_layout_data() self.get_jsmanaged().take_opaque_style_and_layout_data()
} }
fn is_connected(&self) -> bool { fn is_connected(&self) -> bool {
@ -294,27 +294,27 @@ impl<'ln> LayoutNode<'ln> for ServoLayoutNode<'ln> {
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoLayoutNode<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoLayoutNode<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
unsafe { self.get_jsmanaged().get_style_and_layout_data() } unsafe { self.get_jsmanaged().get_opaque_style_and_layout_data() }
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoLayoutElement<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoLayoutElement<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.as_node().get_style_and_layout_data() self.as_node().get_opaque_style_and_layout_data()
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoThreadSafeLayoutNode<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoThreadSafeLayoutNode<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.node.get_style_and_layout_data() self.node.get_opaque_style_and_layout_data()
} }
} }
impl<'dom> GetLayoutData<'dom> for ServoThreadSafeLayoutElement<'dom> { impl<'dom> GetOpaqueStyleAndLayoutData<'dom> for ServoThreadSafeLayoutElement<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
self.element.as_node().get_style_and_layout_data() self.element.as_node().get_opaque_style_and_layout_data()
} }
} }
@ -544,8 +544,8 @@ impl<'le> TElement for ServoLayoutElement<'le> {
} }
unsafe fn clear_data(&self) { unsafe fn clear_data(&self) {
if self.get_raw_data().is_some() { if self.get_style_and_layout_data().is_some() {
drop(self.as_node().take_style_and_layout_data()); drop(self.as_node().take_opaque_style_and_layout_data());
} }
} }
@ -703,7 +703,7 @@ impl<'le> ServoLayoutElement<'le> {
} }
fn get_style_data(&self) -> Option<&StyleData> { fn get_style_data(&self) -> Option<&StyleData> {
self.get_style_and_layout_data().map(|opaque| { self.get_opaque_style_and_layout_data().map(|opaque| {
&opaque &opaque
.downcast_ref::<StyleAndLayoutData>() .downcast_ref::<StyleAndLayoutData>()
.unwrap() .unwrap()
@ -1053,8 +1053,8 @@ impl<'ln> ThreadSafeLayoutNode<'ln> for ServoThreadSafeLayoutNode<'ln> {
}) })
} }
fn get_style_and_layout_data(self) -> Option<&'ln OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'ln OpaqueStyleAndLayoutData> {
self.node.get_style_and_layout_data() self.node.get_opaque_style_and_layout_data()
} }
fn is_ignorable_whitespace(&self, context: &SharedStyleContext) -> bool { fn is_ignorable_whitespace(&self, context: &SharedStyleContext) -> bool {

View file

@ -1282,9 +1282,9 @@ pub trait LayoutNodeHelpers<'dom> {
fn children_count(self) -> u32; fn children_count(self) -> u32;
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData>; fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData>;
unsafe fn init_style_and_layout_data(self, data: OpaqueStyleAndLayoutData); unsafe fn init_opaque_style_and_layout_data(self, data: OpaqueStyleAndLayoutData);
unsafe fn take_style_and_layout_data(self) -> OpaqueStyleAndLayoutData; unsafe fn take_opaque_style_and_layout_data(self) -> OpaqueStyleAndLayoutData;
fn text_content(self) -> Cow<'dom, str>; fn text_content(self) -> Cow<'dom, str>;
fn selection(self) -> Option<Range<usize>>; fn selection(self) -> Option<Range<usize>>;
@ -1410,13 +1410,13 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> {
#[inline] #[inline]
#[allow(unsafe_code)] #[allow(unsafe_code)]
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> { fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData> {
unsafe { (*self.unsafe_get().style_and_layout_data.get()).as_ref() } unsafe { (*self.unsafe_get().style_and_layout_data.get()).as_ref() }
} }
#[inline] #[inline]
#[allow(unsafe_code)] #[allow(unsafe_code)]
unsafe fn init_style_and_layout_data(self, val: OpaqueStyleAndLayoutData) { unsafe fn init_opaque_style_and_layout_data(self, val: OpaqueStyleAndLayoutData) {
let data = &mut *self.unsafe_get().style_and_layout_data.get(); let data = &mut *self.unsafe_get().style_and_layout_data.get();
debug_assert!(data.is_none()); debug_assert!(data.is_none());
*data = Some(val); *data = Some(val);
@ -1424,7 +1424,7 @@ impl<'dom> LayoutNodeHelpers<'dom> for LayoutDom<'dom, Node> {
#[inline] #[inline]
#[allow(unsafe_code)] #[allow(unsafe_code)]
unsafe fn take_style_and_layout_data(self) -> OpaqueStyleAndLayoutData { unsafe fn take_opaque_style_and_layout_data(self) -> OpaqueStyleAndLayoutData {
(*self.unsafe_get().style_and_layout_data.get()) (*self.unsafe_get().style_and_layout_data.get())
.take() .take()
.unwrap() .unwrap()

View file

@ -79,13 +79,13 @@ impl PseudoElementType {
} }
/// Trait to abstract access to layout data across various data structures. /// Trait to abstract access to layout data across various data structures.
pub trait GetLayoutData<'dom> { pub trait GetOpaqueStyleAndLayoutData<'dom> {
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData>; fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData>;
} }
/// A wrapper so that layout can access only the methods that it should have access to. Layout must /// 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`. /// only ever see these and must never see instances of `LayoutDom`.
pub trait LayoutNode<'dom>: Debug + GetLayoutData<'dom> + TNode { pub trait LayoutNode<'dom>: Debug + GetOpaqueStyleAndLayoutData<'dom> + TNode {
type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode<'dom>; type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode<'dom>;
fn to_threadsafe(&self) -> Self::ConcreteThreadSafeLayoutNode; fn to_threadsafe(&self) -> Self::ConcreteThreadSafeLayoutNode;
@ -93,8 +93,8 @@ pub trait LayoutNode<'dom>: Debug + GetLayoutData<'dom> + TNode {
fn type_id(&self) -> LayoutNodeType; fn type_id(&self) -> LayoutNodeType;
unsafe fn initialize_data(&self); unsafe fn initialize_data(&self);
unsafe fn init_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData); unsafe fn init_opaque_style_and_layout_data(&self, data: OpaqueStyleAndLayoutData);
unsafe fn take_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData; unsafe fn take_opaque_style_and_layout_data(&self) -> OpaqueStyleAndLayoutData;
fn rev_children(self) -> LayoutIterator<ReverseChildrenIterator<Self>> { fn rev_children(self) -> LayoutIterator<ReverseChildrenIterator<Self>> {
LayoutIterator(ReverseChildrenIterator { LayoutIterator(ReverseChildrenIterator {
@ -160,7 +160,7 @@ where
/// A thread-safe version of `LayoutNode`, used during flow construction. This type of layout /// A thread-safe version of `LayoutNode`, used during flow construction. This type of layout
/// node does not allow any parents or siblings of nodes to be accessed, to avoid races. /// node does not allow any parents or siblings of nodes to be accessed, to avoid races.
pub trait ThreadSafeLayoutNode<'dom>: pub trait ThreadSafeLayoutNode<'dom>:
Clone + Copy + Debug + GetLayoutData<'dom> + NodeInfo + PartialEq + Sized Clone + Copy + Debug + GetOpaqueStyleAndLayoutData<'dom> + NodeInfo + PartialEq + Sized
{ {
type ConcreteNode: LayoutNode<'dom, ConcreteThreadSafeLayoutNode = Self>; type ConcreteNode: LayoutNode<'dom, ConcreteThreadSafeLayoutNode = Self>;
type ConcreteElement: TElement; type ConcreteElement: TElement;
@ -224,7 +224,7 @@ pub trait ThreadSafeLayoutNode<'dom>:
.map_or(PseudoElementType::Normal, |el| el.get_pseudo_element_type()) .map_or(PseudoElementType::Normal, |el| el.get_pseudo_element_type())
} }
fn get_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData>; fn get_opaque_style_and_layout_data(self) -> Option<&'dom OpaqueStyleAndLayoutData>;
fn style(&self, context: &SharedStyleContext) -> Arc<ComputedValues> { fn style(&self, context: &SharedStyleContext) -> Arc<ComputedValues> {
if let Some(el) = self.as_element() { if let Some(el) = self.as_element() {
@ -314,7 +314,12 @@ pub trait DangerousThreadSafeLayoutNode<'dom>: ThreadSafeLayoutNode<'dom> {
} }
pub trait ThreadSafeLayoutElement<'dom>: pub trait ThreadSafeLayoutElement<'dom>:
Clone + Copy + Sized + Debug + ::selectors::Element<Impl = SelectorImpl> + GetLayoutData<'dom> Clone
+ Copy
+ Sized
+ Debug
+ ::selectors::Element<Impl = SelectorImpl>
+ GetOpaqueStyleAndLayoutData<'dom>
{ {
type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode< type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode<
'dom, 'dom,