Implement Document::head()

Implementation details according to the specification below:
http://www.whatwg.org/specs/web-apps/current-work/#dom-document-head

This patch is for:
https://github.com/mozilla/servo/issues/1465
This commit is contained in:
Bruno de Oliveira Abinader 2014-01-07 10:15:49 -04:00
parent 608ee006ab
commit 17b35d52ff
4 changed files with 48 additions and 5 deletions

View file

@ -101,7 +101,7 @@ partial interface Document {
attribute DOMString title;
// attribute DOMString dir;
attribute HTMLElement? body;
//(HTML only)readonly attribute HTMLHeadElement? head;
readonly attribute HTMLHeadElement? head;
//(HTML only)readonly attribute HTMLCollection images;
//(HTML only)readonly attribute HTMLCollection embeds;
//(HTML only)readonly attribute HTMLCollection plugins;

View file

@ -303,6 +303,15 @@ impl Document {
}
}
// http://www.whatwg.org/specs/web-apps/current-work/#dom-document-head
pub fn GetHead(&self) -> Option<AbstractNode> {
self.get_html_element().and_then(|root| {
root.traverse_preorder().find(|child| {
child.type_id() == ElementNodeTypeId(HTMLHeadElementTypeId)
})
})
}
pub fn GetBody(&self, _: AbstractDocument) -> Option<AbstractNode> {
match self.get_html_element() {
None => None,

View file

@ -34,12 +34,11 @@ impl HTMLDocument {
impl HTMLDocument {
pub fn GetHead(&self) -> Option<AbstractNode> {
match self.parent.GetDocumentElement() {
None => None,
Some(root) => root.traverse_preorder().find(|child| {
self.parent.GetDocumentElement().and_then(|root| {
root.traverse_preorder().find(|child| {
child.type_id() == ElementNodeTypeId(HTMLHeadElementTypeId)
})
}
})
}
pub fn Images(&self) -> @mut HTMLCollection {