diff options
author | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-01-31 16:10:26 +0100 |
---|---|---|
committer | Fernando Jiménez Moreno <ferjmoreno@gmail.com> | 2019-04-26 10:17:46 +0200 |
commit | 7c9e8aa4cc3131c42a9412e1fa3e4f99b4324763 (patch) | |
tree | d1efcca0aef19a5dd3c00d717e8e7ac8cecf4442 /components/script/dom/node.rs | |
parent | be06f1e9b346d16538ddac5dea468f346cb1f18c (diff) | |
download | servo-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.rs | 15 |
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) } |