diff options
author | George Roman <george.roman.99@gmail.com> | 2019-01-10 16:07:12 +0200 |
---|---|---|
committer | George Roman <george.roman.99@gmail.com> | 2019-01-10 16:07:12 +0200 |
commit | f7db5743f4f508f611fbdb7e8aa5fb99b41dd30a (patch) | |
tree | a7e8bebe14f27a925325537193583199c4099226 /components/script/dom/servoparser/html.rs | |
parent | d8b025c6ccefd4a81b0dfccb2f4e342b621741cc (diff) | |
download | servo-f7db5743f4f508f611fbdb7e8aa5fb99b41dd30a.tar.gz servo-f7db5743f4f508f611fbdb7e8aa5fb99b41dd30a.zip |
Ignore children of void elements when serializing
Diffstat (limited to 'components/script/dom/servoparser/html.rs')
-rw-r--r-- | components/script/dom/servoparser/html.rs | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/components/script/dom/servoparser/html.rs b/components/script/dom/servoparser/html.rs index 62fe26153ed..45ef625a5ee 100644 --- a/components/script/dom/servoparser/html.rs +++ b/components/script/dom/servoparser/html.rs @@ -153,6 +153,10 @@ struct SerializationIterator { } fn rev_children_iter(n: &Node) -> impl Iterator<Item = DomRoot<Node>> { + if n.downcast::<Element>().map_or(false, |e| e.is_void()) { + return Node::new_document_node().rev_children(); + } + match n.downcast::<HTMLTemplateElement>() { Some(t) => t.Content().upcast::<Node>().rev_children(), None => n.rev_children(), @@ -210,12 +214,6 @@ impl<'a> Serialize for &'a Node { ) -> io::Result<()> { let node = *self; - if let TraversalScope::ChildrenOnly(_) = traversal_scope { - if node.downcast::<Element>().map_or(false, |e| e.is_void()) { - return Ok(()); - } - } - let iter = SerializationIterator::new(node, traversal_scope != IncludeNode); for cmd in iter { |