mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
Adapt traversals for shadow dom
This commit is contained in:
parent
7c9e8aa4cc
commit
d2e1a3ab33
1 changed files with 17 additions and 2 deletions
|
@ -263,7 +263,11 @@ impl<'ln> TNode for ServoLayoutNode<'ln> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn traversal_parent(&self) -> Option<ServoLayoutElement<'ln>> {
|
fn traversal_parent(&self) -> Option<ServoLayoutElement<'ln>> {
|
||||||
self.parent_element()
|
let parent = self.parent_node()?;
|
||||||
|
if let Some(shadow) = parent.as_shadow_root() {
|
||||||
|
return Some(shadow.host());
|
||||||
|
};
|
||||||
|
parent.as_element()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn opaque(&self) -> OpaqueNode {
|
fn opaque(&self) -> OpaqueNode {
|
||||||
|
@ -442,7 +446,11 @@ impl<'le> TElement for ServoLayoutElement<'le> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn traversal_children(&self) -> LayoutIterator<Self::TraversalChildrenIterator> {
|
fn traversal_children(&self) -> LayoutIterator<Self::TraversalChildrenIterator> {
|
||||||
LayoutIterator(self.as_node().dom_children())
|
LayoutIterator(if let Some(shadow) = self.shadow_root() {
|
||||||
|
shadow.as_node().dom_children()
|
||||||
|
} else {
|
||||||
|
self.as_node().dom_children()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_html_element(&self) -> bool {
|
fn is_html_element(&self) -> bool {
|
||||||
|
@ -1033,6 +1041,13 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn children(&self) -> LayoutIterator<Self::ChildrenIterator> {
|
fn children(&self) -> LayoutIterator<Self::ChildrenIterator> {
|
||||||
|
if let Some(element) = self.node.as_element() {
|
||||||
|
if let Some(shadow) = element.shadow_root() {
|
||||||
|
return LayoutIterator(ThreadSafeLayoutNodeChildrenIterator::new(
|
||||||
|
shadow.as_node().to_threadsafe(),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
LayoutIterator(ThreadSafeLayoutNodeChildrenIterator::new(*self))
|
LayoutIterator(ThreadSafeLayoutNodeChildrenIterator::new(*self))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue