diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2017-01-10 03:51:47 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-10 03:51:47 -0800 |
commit | f54dd0112bd9e51b21e9a5ee38bb2cfc0326e071 (patch) | |
tree | 23ebe0ac98d51000a788639ae3ed88d5630154e2 /components/script/dom/servoparser/html.rs | |
parent | 43a537a1ba8d62a39e062a21df9d5c771631411b (diff) | |
parent | d853e7fee943b6e0b677da82f805841a9d422d8c (diff) | |
download | servo-f54dd0112bd9e51b21e9a5ee38bb2cfc0326e071.tar.gz servo-f54dd0112bd9e51b21e9a5ee38bb2cfc0326e071.zip |
Auto merge of #14928 - nox:insert, r=SimonSapin
Unify text insertion when parsing HTML and XML
<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/14928)
<!-- Reviewable:end -->
Diffstat (limited to 'components/script/dom/servoparser/html.rs')
-rw-r--r-- | components/script/dom/servoparser/html.rs | 23 |
1 files changed, 2 insertions, 21 deletions
diff --git a/components/script/dom/servoparser/html.rs b/components/script/dom/servoparser/html.rs index 4a8f01d639e..d4b53175b49 100644 --- a/components/script/dom/servoparser/html.rs +++ b/components/script/dom/servoparser/html.rs @@ -19,7 +19,6 @@ use dom::htmlscriptelement::HTMLScriptElement; use dom::htmltemplateelement::HTMLTemplateElement; use dom::node::Node; use dom::processinginstruction::ProcessingInstruction; -use dom::text::Text; use dom::virtualmethods::vtable_for; use html5ever::Attribute; use html5ever::serialize::{AttrRef, Serializable, Serializer}; @@ -180,7 +179,7 @@ impl TreeSink for Sink { None => return Err(new_node), }; - insert(&parent, Some(&*sibling), new_node); + super::insert(&parent, Some(&*sibling), new_node); Ok(()) } @@ -198,8 +197,7 @@ impl TreeSink for Sink { } fn append(&mut self, parent: JS<Node>, child: NodeOrText<JS<Node>>) { - // FIXME(#3701): Use a simpler algorithm and merge adjacent text nodes - insert(&parent, None, child); + super::insert(&parent, None, child); } fn append_doctype_to_document(&mut self, name: StrTendril, public_id: StrTendril, @@ -242,23 +240,6 @@ impl TreeSink for Sink { } } -fn insert(parent: &Node, reference_child: Option<&Node>, child: NodeOrText<JS<Node>>) { - match child { - NodeOrText::AppendNode(n) => { - assert!(parent.InsertBefore(&n, reference_child).is_ok()); - }, - NodeOrText::AppendText(t) => { - if let Some(text) = parent.GetLastChild().and_then(Root::downcast::<Text>) { - text.upcast::<CharacterData>().append_data(&t); - } else { - let s: String = t.into(); - let text = Text::new(DOMString::from(s), &parent.owner_doc()); - parent.InsertBefore(text.upcast(), reference_child).unwrap(); - } - } - } -} - impl<'a> Serializable for &'a Node { fn serialize<'wr, Wr: Write>(&self, serializer: &mut Serializer<'wr, Wr>, traversal_scope: TraversalScope) -> io::Result<()> { |