Implement DocumentFragment XML serialization.

This commit is contained in:
Jack Britton 2019-04-11 14:00:27 -04:00
parent dd2deeabca
commit 1dd1cb4f4f
3 changed files with 11 additions and 2 deletions

View file

@ -10,6 +10,7 @@ use crate::dom::bindings::root::{Dom, DomRoot};
use crate::dom::bindings::trace::JSTraceable;
use crate::dom::characterdata::CharacterData;
use crate::dom::document::Document;
use crate::dom::documentfragment::DocumentFragment;
use crate::dom::documenttype::DocumentType;
use crate::dom::element::Element;
use crate::dom::htmlscriptelement::HTMLScriptElement;
@ -166,7 +167,7 @@ fn rev_children_iter(n: &Node) -> impl Iterator<Item = DomRoot<Node>> {
impl SerializationIterator {
fn new(node: &Node, skip_first: bool) -> SerializationIterator {
let mut ret = SerializationIterator { stack: vec![] };
if skip_first {
if skip_first || node.is::<DocumentFragment>() {
for c in rev_children_iter(node) {
ret.push_node(&*c);
}

View file

@ -642452,7 +642452,7 @@
"support"
],
"domparsing/XMLSerializer-serializeToString.html": [
"cb8ed9372df5e05588cbd593c40a8c13ee868bec",
"23b9ce841f5046f180ce78d92d7ac1132712f999",
"testharness"
],
"domparsing/createContextualFragment.html": [

View file

@ -204,6 +204,14 @@ test(function() {
assert_equals(serialize(root2), '<root xmlns:xl="http://www.w3.org/1999/xlink" xl:type="v"/>');
}, 'Check if no special handling for XLink namespace unlike HTML serializer.');
test(function() {
var root = new DocumentFragment;
root.append(document.createElement('div'));
root.append(document.createElement('span'));
assert_equals(serialize(root), '<div xmlns="http://www.w3.org/1999/xhtml"></div><span xmlns="http://www.w3.org/1999/xhtml"></span>');
}, 'Check if document fragment serializes.');
</script>
</body>
</html>