aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMs2ger <ms2ger@gmail.com>2015-06-21 13:06:20 +0200
committerMs2ger <ms2ger@gmail.com>2015-06-22 10:47:21 +0200
commiteb2c508df0ca8a286db9d30d5fb2ba8e47b41fa2 (patch)
tree0dd27854dd7c3e761a75b0d22c2914153f891f7f
parenta217ffb00a844c4396f5abb1d3ead2f2bb520a6c (diff)
downloadservo-eb2c508df0ca8a286db9d30d5fb2ba8e47b41fa2.tar.gz
servo-eb2c508df0ca8a286db9d30d5fb2ba8e47b41fa2.zip
Implement the LayoutData getters on LayoutJS<Node> rather than Node itself.
-rw-r--r--components/layout/data.rs8
-rw-r--r--components/layout/wrapper.rs12
-rw-r--r--components/script/dom/node.rs41
3 files changed, 33 insertions, 28 deletions
diff --git a/components/layout/data.rs b/components/layout/data.rs
index 9146e0110c4..f679435a91f 100644
--- a/components/layout/data.rs
+++ b/components/layout/data.rs
@@ -8,7 +8,7 @@ use construct::{ConstructionItem, ConstructionResult};
use incremental::RestyleDamage;
use msg::constellation_msg::ConstellationChan;
use parallel::DomParallelInfo;
-use script::dom::node::SharedLayoutData;
+use script::dom::node::{LayoutNodeHelpers, SharedLayoutData};
use script::layout_interface::LayoutChan;
use std::cell::{Ref, RefMut};
use std::mem;
@@ -116,20 +116,20 @@ pub trait LayoutDataAccess {
impl<'ln> LayoutDataAccess for LayoutNode<'ln> {
#[inline(always)]
unsafe fn borrow_layout_data_unchecked(&self) -> *const Option<LayoutDataWrapper> {
- mem::transmute(self.get().layout_data_unchecked())
+ mem::transmute(self.get_jsmanaged().layout_data_unchecked())
}
#[inline(always)]
fn borrow_layout_data<'a>(&'a self) -> Ref<'a,Option<LayoutDataWrapper>> {
unsafe {
- mem::transmute(self.get().layout_data())
+ mem::transmute(self.get_jsmanaged().layout_data())
}
}
#[inline(always)]
fn mutate_layout_data<'a>(&'a self) -> RefMut<'a,Option<LayoutDataWrapper>> {
unsafe {
- mem::transmute(self.get().layout_data_mut())
+ mem::transmute(self.get_jsmanaged().layout_data_mut())
}
}
}
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs
index b45162772d3..6db0552d2df 100644
--- a/components/layout/wrapper.rs
+++ b/components/layout/wrapper.rs
@@ -889,11 +889,11 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
layout_data_wrapper_ref.data.after_style.is_some()
}
- /// Borrows the layout data without checking. Fails on a conflicting borrow.
+ /// Borrows the layout data without checking.
#[inline(always)]
fn borrow_layout_data_unchecked<'a>(&'a self) -> *const Option<LayoutDataWrapper> {
unsafe {
- mem::transmute(self.get().layout_data_unchecked())
+ self.node.borrow_layout_data_unchecked()
}
}
@@ -902,9 +902,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
/// TODO(pcwalton): Make this private. It will let us avoid borrow flag checks in some cases.
#[inline(always)]
pub fn borrow_layout_data<'a>(&'a self) -> Ref<'a,Option<LayoutDataWrapper>> {
- unsafe {
- mem::transmute(self.get().layout_data())
- }
+ self.node.borrow_layout_data()
}
/// Borrows the layout data mutably. Fails on a conflicting borrow.
@@ -912,9 +910,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
/// TODO(pcwalton): Make this private. It will let us avoid borrow flag checks in some cases.
#[inline(always)]
pub fn mutate_layout_data<'a>(&'a self) -> RefMut<'a,Option<LayoutDataWrapper>> {
- unsafe {
- mem::transmute(self.get().layout_data_mut())
- }
+ self.node.mutate_layout_data()
}
/// Traverses the tree in postorder.
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index af957f2beca..919136a4afd 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -1091,6 +1091,13 @@ pub trait LayoutNodeHelpers {
unsafe fn get_flag(&self, flag: NodeFlags) -> bool;
#[allow(unsafe_code)]
unsafe fn set_flag(&self, flag: NodeFlags, value: bool);
+
+ #[allow(unsafe_code)]
+ unsafe fn layout_data(&self) -> Ref<Option<LayoutData>>;
+ #[allow(unsafe_code)]
+ unsafe fn layout_data_mut(&self) -> RefMut<Option<LayoutData>>;
+ #[allow(unsafe_code)]
+ unsafe fn layout_data_unchecked(&self) -> *const Option<LayoutData>;
}
impl LayoutNodeHelpers for LayoutJS<Node> {
@@ -1162,6 +1169,24 @@ impl LayoutNodeHelpers for LayoutJS<Node> {
(*this).flags.set(flags);
}
+
+ #[inline]
+ #[allow(unsafe_code)]
+ unsafe fn layout_data(&self) -> Ref<Option<LayoutData>> {
+ (*self.unsafe_get()).layout_data.borrow()
+ }
+
+ #[inline]
+ #[allow(unsafe_code)]
+ unsafe fn layout_data_mut(&self) -> RefMut<Option<LayoutData>> {
+ (*self.unsafe_get()).layout_data.borrow_mut()
+ }
+
+ #[inline]
+ #[allow(unsafe_code)]
+ unsafe fn layout_data_unchecked(&self) -> *const Option<LayoutData> {
+ (*self.unsafe_get()).layout_data.borrow_unchecked()
+ }
}
pub trait RawLayoutNodeHelpers {
@@ -1461,22 +1486,6 @@ impl Node {
}
}
- #[inline]
- pub fn layout_data(&self) -> Ref<Option<LayoutData>> {
- self.layout_data.borrow()
- }
-
- #[inline]
- pub fn layout_data_mut(&self) -> RefMut<Option<LayoutData>> {
- self.layout_data.borrow_mut()
- }
-
- #[inline]
- #[allow(unsafe_code)]
- pub unsafe fn layout_data_unchecked(&self) -> *const Option<LayoutData> {
- self.layout_data.borrow_unchecked()
- }
-
// https://dom.spec.whatwg.org/#concept-node-adopt
pub fn adopt(node: &Node, document: &Document) {
// Step 1.