aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-07-16 07:21:06 -0600
committerbors-servo <metajack+bors@gmail.com>2015-07-16 07:21:06 -0600
commit9534e8143f52ef091595c18caeb82cfc46cc20a4 (patch)
tree147d43ba88415e616ee0db6a9ed5fbf83329195f /components/script
parent2ef1fd342e3636c03cff26a2cec146b155a2d623 (diff)
parent2752d3398e3a22232ac4acc39f635012b7d581cd (diff)
downloadservo-9534e8143f52ef091595c18caeb82cfc46cc20a4.tar.gz
servo-9534e8143f52ef091595c18caeb82cfc46cc20a4.zip
Auto merge of #6641 - michaelwu:direct-output, r=Ms2ger
Directly append children to output node in parse_html_fragment <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6641) <!-- Reviewable:end -->
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/node.rs12
-rw-r--r--components/script/parse/html.rs5
2 files changed, 5 insertions, 12 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs
index 20fb38fa00a..caa2e86f674 100644
--- a/components/script/dom/node.rs
+++ b/components/script/dom/node.rs
@@ -1023,20 +1023,14 @@ impl<'a> NodeHelpers for &'a Node {
fn parse_fragment(self, markup: DOMString) -> Fallible<Root<DocumentFragment>> {
let context_node: &Node = NodeCast::from_ref(self);
let context_document = document_from_node(self);
- let mut new_children: RootedVec<JS<Node>> = RootedVec::new();
+ let fragment = DocumentFragment::new(context_document.r());
if context_document.r().is_html_document() {
- parse_html_fragment(context_node, markup, &mut new_children);
+ let fragment_node = NodeCast::from_ref(fragment.r());
+ parse_html_fragment(context_node, markup, fragment_node);
} else {
// FIXME: XML case
unimplemented!();
}
- let fragment = DocumentFragment::new(context_document.r());
- {
- let fragment_node = NodeCast::from_ref(fragment.r());
- for node in new_children.iter() {
- fragment_node.AppendChild(node.root().r()).unwrap();
- }
- }
Ok(fragment)
}
}
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs
index 3401239382f..6ea2dc443f8 100644
--- a/components/script/parse/html.rs
+++ b/components/script/parse/html.rs
@@ -14,7 +14,6 @@ use dom::bindings::codegen::InheritTypes::{HTMLFormElementDerived, NodeCast};
use dom::bindings::codegen::InheritTypes::ProcessingInstructionCast;
use dom::bindings::js::{JS, Root};
use dom::bindings::js::{RootedReference};
-use dom::bindings::trace::RootedVec;
use dom::characterdata::{CharacterDataHelpers, CharacterDataTypeId};
use dom::comment::Comment;
use dom::document::{Document, DocumentHelpers};
@@ -284,7 +283,7 @@ pub fn parse_html(document: &Document,
// https://html.spec.whatwg.org/multipage/#parsing-html-fragments
pub fn parse_html_fragment(context_node: &Node,
input: DOMString,
- output: &mut RootedVec<JS<Node>>) {
+ output: &Node) {
let window = window_from_node(context_node);
let context_document = document_from_node(context_node);
let context_document = context_document.r();
@@ -314,6 +313,6 @@ pub fn parse_html_fragment(context_node: &Node,
let root_element = document.r().GetDocumentElement().expect("no document element");
let root_node = NodeCast::from_ref(root_element.r());
for child in root_node.children() {
- output.push(JS::from_rooted(&child));
+ output.AppendChild(child.r()).unwrap();
}
}