aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/document.rs38
1 files changed, 10 insertions, 28 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index f383d66c649..7bc0345b279 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -34,7 +34,7 @@ use dom::documentfragment::DocumentFragment;
use dom::documenttype::DocumentType;
use dom::domimplementation::DOMImplementation;
use dom::element::{Element, AttributeHandlers, get_attribute_parts};
-use dom::element::{HTMLHtmlElementTypeId, HTMLHeadElementTypeId, HTMLTitleElementTypeId};
+use dom::element::{HTMLHeadElementTypeId, HTMLTitleElementTypeId};
use dom::element::{HTMLBodyElementTypeId, HTMLFrameSetElementTypeId};
use dom::event::{Event, DoesNotBubble, NotCancelable};
use dom::eventtarget::{EventTarget, NodeTargetTypeId, EventTargetHelpers};
@@ -407,34 +407,20 @@ trait PrivateDocumentHelpers {
impl<'a> PrivateDocumentHelpers for JSRef<'a, Document> {
fn createNodeList(self, callback: |node: JSRef<Node>| -> bool) -> Temporary<NodeList> {
let window = self.window.root();
-
- match self.GetDocumentElement().root() {
- None => {
- NodeList::new_simple_list(*window, vec!())
- },
+ let nodes = match self.GetDocumentElement().root() {
+ None => vec!(),
Some(root) => {
- let mut nodes = vec!();
let root: JSRef<Node> = NodeCast::from_ref(*root);
- for child in root.traverse_preorder() {
- if callback(child) {
- nodes.push(child);
- }
- }
- NodeList::new_simple_list(*window, nodes)
+ root.traverse_preorder().filter(|&node| callback(node)).collect()
}
- }
-
+ };
+ NodeList::new_simple_list(*window, nodes)
}
fn get_html_element(self) -> Option<Temporary<HTMLHtmlElement>> {
- match self.GetDocumentElement().root() {
- Some(ref root) if {
- let root: JSRef<Node> = NodeCast::from_ref(**root);
- root.type_id() == ElementNodeTypeId(HTMLHtmlElementTypeId)
- } => Some(Temporary::from_rooted(HTMLHtmlElementCast::to_ref(**root).unwrap())),
-
- _ => None,
- }
+ self.GetDocumentElement().root().and_then(|element| {
+ HTMLHtmlElementCast::to_ref(*element)
+ }).map(Temporary::from_rooted)
}
}
@@ -742,11 +728,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
self.get_html_element().and_then(|root| {
let root = root.root();
let node: JSRef<Node> = NodeCast::from_ref(*root);
- node.children().find(|child| {
- child.type_id() == ElementNodeTypeId(HTMLHeadElementTypeId)
- }).map(|node| {
- Temporary::from_rooted(HTMLHeadElementCast::to_ref(node).unwrap())
- })
+ node.children().filter_map(HTMLHeadElementCast::to_ref).next().map(Temporary::from_rooted)
})
}