mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +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
|
// http://dom.spec.whatwg.org/#dom-document-doctype
|
||||||
fn GetDoctype(self) -> Option<Temporary<DocumentType>> {
|
fn GetDoctype(self) -> Option<Temporary<DocumentType>> {
|
||||||
let node: JSRef<Node> = NodeCast::from_ref(self);
|
let node: JSRef<Node> = NodeCast::from_ref(self);
|
||||||
node.children().find(|child| {
|
node.children()
|
||||||
child.is_doctype()
|
.filter_map(DocumentTypeCast::to_ref)
|
||||||
}).map(|node| {
|
.next()
|
||||||
let doctype: JSRef<DocumentType> = DocumentTypeCast::to_ref(node).unwrap();
|
.map(Temporary::from_rooted)
|
||||||
Temporary::from_rooted(doctype)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// http://dom.spec.whatwg.org/#dom-document-documentelement
|
// http://dom.spec.whatwg.org/#dom-document-documentelement
|
||||||
fn GetDocumentElement(self) -> Option<Temporary<Element>> {
|
fn GetDocumentElement(self) -> Option<Temporary<Element>> {
|
||||||
let node: JSRef<Node> = NodeCast::from_ref(self);
|
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
|
// 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
|
// http://www.whatwg.org/specs/web-apps/current-work/#dom-document-body
|
||||||
fn SetBody(self, new_body: Option<JSRef<HTMLElement>>) -> ErrorResult {
|
fn SetBody(self, new_body: Option<JSRef<HTMLElement>>) -> ErrorResult {
|
||||||
// Step 1.
|
// Step 1.
|
||||||
match new_body {
|
let new_body = match new_body {
|
||||||
Some(ref htmlelem) => {
|
Some(new_body) => new_body,
|
||||||
let node: JSRef<Node> = NodeCast::from_ref(*htmlelem);
|
None => return Err(HierarchyRequest),
|
||||||
match node.type_id() {
|
};
|
||||||
ElementNodeTypeId(HTMLBodyElementTypeId) | ElementNodeTypeId(HTMLFrameSetElementTypeId) => {}
|
|
||||||
_ => return Err(HierarchyRequest)
|
let node: JSRef<Node> = NodeCast::from_ref(new_body);
|
||||||
}
|
match node.type_id() {
|
||||||
}
|
ElementNodeTypeId(HTMLBodyElementTypeId) |
|
||||||
None => return Err(HierarchyRequest)
|
ElementNodeTypeId(HTMLFrameSetElementTypeId) => {}
|
||||||
|
_ => return Err(HierarchyRequest)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Step 2.
|
// Step 2.
|
||||||
let old_body = self.GetBody().root();
|
let old_body = self.GetBody().root();
|
||||||
//FIXME: covariant lifetime workaround. do not judge.
|
if old_body.as_ref().map(|body| **body) == Some(new_body) {
|
||||||
if old_body.as_ref().map(|body| body.deref()) == new_body.as_ref().map(|a| &*a) {
|
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -846,8 +844,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> {
|
||||||
// Step 4.
|
// Step 4.
|
||||||
None => return Err(HierarchyRequest),
|
None => return Err(HierarchyRequest),
|
||||||
Some(ref root) => {
|
Some(ref root) => {
|
||||||
let new_body_unwrapped = new_body.unwrap();
|
let new_body: JSRef<Node> = NodeCast::from_ref(new_body);
|
||||||
let new_body: JSRef<Node> = NodeCast::from_ref(new_body_unwrapped);
|
|
||||||
|
|
||||||
let root: JSRef<Node> = NodeCast::from_ref(**root);
|
let root: JSRef<Node> = NodeCast::from_ref(**root);
|
||||||
match old_body {
|
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
|
// http://www.whatwg.org/specs/web-apps/current-work/#dom-document-getelementsbyname
|
||||||
fn GetElementsByName(self, name: DOMString) -> Temporary<NodeList> {
|
fn GetElementsByName(self, name: DOMString) -> Temporary<NodeList> {
|
||||||
self.createNodeList(|node| {
|
self.createNodeList(|node| {
|
||||||
if !node.is_element() {
|
let element: JSRef<Element> = match ElementCast::to_ref(node) {
|
||||||
return false;
|
Some(element) => element,
|
||||||
}
|
None => return false,
|
||||||
|
};
|
||||||
let element: JSRef<Element> = ElementCast::to_ref(node).unwrap();
|
|
||||||
element.get_attribute(ns!(""), &atom!("name")).root().map_or(false, |attr| {
|
element.get_attribute(ns!(""), &atom!("name")).root().map_or(false, |attr| {
|
||||||
attr.value().as_slice() == name.as_slice()
|
attr.value().as_slice() == name.as_slice()
|
||||||
})
|
})
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue