aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/node.rs
diff options
context:
space:
mode:
authorFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-01-31 16:10:26 +0100
committerFernando Jiménez Moreno <ferjmoreno@gmail.com>2019-04-26 10:17:46 +0200
commit7c9e8aa4cc3131c42a9412e1fa3e4f99b4324763 (patch)
treed1efcca0aef19a5dd3c00d717e8e7ac8cecf4442 /components/script/dom/node.rs
parentbe06f1e9b346d16538ddac5dea468f346cb1f18c (diff)
downloadservo-7c9e8aa4cc3131c42a9412e1fa3e4f99b4324763.tar.gz
servo-7c9e8aa4cc3131c42a9412e1fa3e4f99b4324763.zip
First bits of shadow dom layout
Diffstat (limited to 'components/script/dom/node.rs')
-rw-r--r--components/script/dom/node.rs15
1 files changed, 11 insertions, 4 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index d8c1a2f4d5d..b20f8cf037e 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -295,8 +295,8 @@ impl Node {
if parent_in_shadow_tree {
if let Some(shadow_root) = self.downcast::<ShadowRoot>() {
node.set_owner_shadow_root(&*shadow_root);
- } else {
- node.set_owner_shadow_root(&*self.owner_shadow_root());
+ } else if let Some(shadow_root) = self.owner_shadow_root() {
+ node.set_owner_shadow_root(&*shadow_root);
}
}
let mut is_connected = parent_is_connected;
@@ -946,8 +946,8 @@ impl Node {
self.owner_doc.set(Some(document));
}
- pub fn owner_shadow_root(&self) -> DomRoot<ShadowRoot> {
- self.owner_shadow_root.get().unwrap()
+ pub fn owner_shadow_root(&self) -> Option<DomRoot<ShadowRoot>> {
+ self.owner_shadow_root.get()
}
pub fn set_owner_shadow_root(&self, shadow_root: &ShadowRoot) {
@@ -1184,6 +1184,7 @@ pub trait LayoutNodeHelpers {
unsafe fn next_sibling_ref(&self) -> Option<LayoutDom<Node>>;
unsafe fn owner_doc_for_layout(&self) -> LayoutDom<Document>;
+ unsafe fn owner_shadow_root_for_layout(&self) -> Option<LayoutDom<ShadowRoot>>;
unsafe fn is_element_for_layout(&self) -> bool;
unsafe fn get_flag(&self, flag: NodeFlags) -> bool;
@@ -1262,6 +1263,12 @@ impl LayoutNodeHelpers for LayoutDom<Node> {
#[inline]
#[allow(unsafe_code)]
+ unsafe fn owner_shadow_root_for_layout(&self) -> Option<LayoutDom<ShadowRoot>> {
+ (*self.unsafe_get()).owner_shadow_root.get_inner_as_layout()
+ }
+
+ #[inline]
+ #[allow(unsafe_code)]
unsafe fn get_flag(&self, flag: NodeFlags) -> bool {
(*self.unsafe_get()).flags.get().contains(flag)
}