mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
auto merge of #4219 : Ms2ger/servo/cleanup-document, r=jdm
This commit is contained in:
commit
92a8c7a80c
1 changed files with 21 additions and 25 deletions
|
@ -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()
|
||||
})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue