Cleanup some Document methods.

This commit is contained in:
Ms2ger 2014-10-23 11:39:03 +02:00
parent 2df236376a
commit 32bcc192b0

View file

@ -34,7 +34,7 @@ use dom::documentfragment::DocumentFragment;
use dom::documenttype::DocumentType; use dom::documenttype::DocumentType;
use dom::domimplementation::DOMImplementation; use dom::domimplementation::DOMImplementation;
use dom::element::{Element, AttributeHandlers, get_attribute_parts}; 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::element::{HTMLBodyElementTypeId, HTMLFrameSetElementTypeId};
use dom::event::{Event, DoesNotBubble, NotCancelable}; use dom::event::{Event, DoesNotBubble, NotCancelable};
use dom::eventtarget::{EventTarget, NodeTargetTypeId, EventTargetHelpers}; use dom::eventtarget::{EventTarget, NodeTargetTypeId, EventTargetHelpers};
@ -407,34 +407,20 @@ trait PrivateDocumentHelpers {
impl<'a> PrivateDocumentHelpers for JSRef<'a, Document> { impl<'a> PrivateDocumentHelpers for JSRef<'a, Document> {
fn createNodeList(self, callback: |node: JSRef<Node>| -> bool) -> Temporary<NodeList> { fn createNodeList(self, callback: |node: JSRef<Node>| -> bool) -> Temporary<NodeList> {
let window = self.window.root(); let window = self.window.root();
let nodes = match self.GetDocumentElement().root() {
match self.GetDocumentElement().root() { None => vec!(),
None => {
NodeList::new_simple_list(*window, vec!())
},
Some(root) => { Some(root) => {
let mut nodes = vec!();
let root: JSRef<Node> = NodeCast::from_ref(*root); let root: JSRef<Node> = NodeCast::from_ref(*root);
for child in root.traverse_preorder() { root.traverse_preorder().filter(|&node| callback(node)).collect()
if callback(child) {
nodes.push(child);
}
}
NodeList::new_simple_list(*window, nodes)
} }
} };
NodeList::new_simple_list(*window, nodes)
} }
fn get_html_element(self) -> Option<Temporary<HTMLHtmlElement>> { fn get_html_element(self) -> Option<Temporary<HTMLHtmlElement>> {
match self.GetDocumentElement().root() { self.GetDocumentElement().root().and_then(|element| {
Some(ref root) if { HTMLHtmlElementCast::to_ref(*element)
let root: JSRef<Node> = NodeCast::from_ref(**root); }).map(Temporary::from_rooted)
root.type_id() == ElementNodeTypeId(HTMLHtmlElementTypeId)
} => Some(Temporary::from_rooted(HTMLHtmlElementCast::to_ref(**root).unwrap())),
_ => None,
}
} }
} }
@ -742,11 +728,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
self.get_html_element().and_then(|root| { self.get_html_element().and_then(|root| {
let root = root.root(); let root = root.root();
let node: JSRef<Node> = NodeCast::from_ref(*root); let node: JSRef<Node> = NodeCast::from_ref(*root);
node.children().find(|child| { node.children().filter_map(HTMLHeadElementCast::to_ref).next().map(Temporary::from_rooted)
child.type_id() == ElementNodeTypeId(HTMLHeadElementTypeId)
}).map(|node| {
Temporary::from_rooted(HTMLHeadElementCast::to_ref(node).unwrap())
})
}) })
} }