aboutsummaryrefslogtreecommitdiffstats
path: root/components/script
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2014-12-04 08:46:02 -0700
committerbors-servo <metajack+bors@gmail.com>2014-12-04 08:46:02 -0700
commit92a8c7a80ccd5721884da96dbd28c6c40ba32b70 (patch)
tree3738b55700d0ce8f5ccffccc2c70b9c0fe6492c7 /components/script
parent90b0369cdfbd62b6c6fa745beffdfd206c825543 (diff)
parent9416e9b11a33a3f9728e19565203919e1088264b (diff)
downloadservo-92a8c7a80ccd5721884da96dbd28c6c40ba32b70.tar.gz
servo-92a8c7a80ccd5721884da96dbd28c6c40ba32b70.zip
auto merge of #4219 : Ms2ger/servo/cleanup-document, r=jdm
Diffstat (limited to 'components/script')
-rw-r--r--components/script/dom/document.rs46
1 files changed, 21 insertions, 25 deletions
diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs
index c3c71cb5101..726e7e69516 100644
--- a/components/script/dom/document.rs
+++ b/components/script/dom/document.rs
@@ -520,18 +520,16 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
// http://dom.spec.whatwg.org/#dom-document-doctype
fn GetDoctype(self) -> Option<Temporary<DocumentType>> {
let node: JSRef<Node> = NodeCast::from_ref(self);
- node.children().find(|child| {
- child.is_doctype()
- }).map(|node| {
- let doctype: JSRef<DocumentType> = DocumentTypeCast::to_ref(node).unwrap();
- Temporary::from_rooted(doctype)
- })
+ node.children()
+ .filter_map(DocumentTypeCast::to_ref)
+ .next()
+ .map(Temporary::from_rooted)
}
// http://dom.spec.whatwg.org/#dom-document-documentelement
fn GetDocumentElement(self) -> Option<Temporary<Element>> {
let node: JSRef<Node> = NodeCast::from_ref(self);
- node.child_elements().next().map(|elem| Temporary::from_rooted(elem))
+ node.child_elements().next().map(Temporary::from_rooted)
}
// http://dom.spec.whatwg.org/#dom-document-getelementsbytagname
@@ -823,21 +821,21 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
// http://www.whatwg.org/specs/web-apps/current-work/#dom-document-body
fn SetBody(self, new_body: Option<JSRef<HTMLElement>>) -> ErrorResult {
// Step 1.
- match new_body {
- Some(ref htmlelem) => {
- let node: JSRef<Node> = NodeCast::from_ref(*htmlelem);
- match node.type_id() {
- ElementNodeTypeId(HTMLBodyElementTypeId) | ElementNodeTypeId(HTMLFrameSetElementTypeId) => {}
- _ => return Err(HierarchyRequest)
- }
- }
- None => return Err(HierarchyRequest)
+ let new_body = match new_body {
+ Some(new_body) => new_body,
+ None => return Err(HierarchyRequest),
+ };
+
+ let node: JSRef<Node> = NodeCast::from_ref(new_body);
+ match node.type_id() {
+ ElementNodeTypeId(HTMLBodyElementTypeId) |
+ ElementNodeTypeId(HTMLFrameSetElementTypeId) => {}
+ _ => return Err(HierarchyRequest)
}
// Step 2.
let old_body = self.GetBody().root();
- //FIXME: covariant lifetime workaround. do not judge.
- if old_body.as_ref().map(|body| body.deref()) == new_body.as_ref().map(|a| &*a) {
+ if old_body.as_ref().map(|body| **body) == Some(new_body) {
return Ok(());
}
@@ -846,8 +844,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
// Step 4.
None => return Err(HierarchyRequest),
Some(ref root) => {
- let new_body_unwrapped = new_body.unwrap();
- let new_body: JSRef<Node> = NodeCast::from_ref(new_body_unwrapped);
+ let new_body: JSRef<Node> = NodeCast::from_ref(new_body);
let root: JSRef<Node> = NodeCast::from_ref(**root);
match old_body {
@@ -866,11 +863,10 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
// http://www.whatwg.org/specs/web-apps/current-work/#dom-document-getelementsbyname
fn GetElementsByName(self, name: DOMString) -> Temporary<NodeList> {
self.createNodeList(|node| {
- if !node.is_element() {
- return false;
- }
-
- let element: JSRef<Element> = ElementCast::to_ref(node).unwrap();
+ let element: JSRef<Element> = match ElementCast::to_ref(node) {
+ Some(element) => element,
+ None => return false,
+ };
element.get_attribute(ns!(""), &atom!("name")).root().map_or(false, |attr| {
attr.value().as_slice() == name.as_slice()
})