diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 3a0fa2e7f3b..67371606e59 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -330,6 +330,7 @@ pub trait DocumentMethods { fn Location(&self) -> Temporary; fn Children(&self) -> Temporary; fn QuerySelector(&self, selectors: DOMString) -> Fallible>>; + fn QuerySelectorAll(&self, selectors: DOMString) -> Fallible>; fn GetOnclick(&self) -> Option; fn SetOnclick(&mut self, listener: Option); fn GetOnload(&self) -> Option; @@ -821,6 +822,12 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { root.query_selector(selectors) } + // http://dom.spec.whatwg.org/#dom-parentnode-queryselectorall + fn QuerySelectorAll(&self, selectors: DOMString) -> Fallible> { + let root: &JSRef = NodeCast::from_ref(self); + root.query_selector_all(selectors) + } + fn GetOnclick(&self) -> Option { let eventtarget: &JSRef = EventTargetCast::from_ref(self); eventtarget.get_event_handler_common("click") diff --git a/src/components/script/dom/documentfragment.rs b/src/components/script/dom/documentfragment.rs index bcf9c28e7c1..823b97601a9 100644 --- a/src/components/script/dom/documentfragment.rs +++ b/src/components/script/dom/documentfragment.rs @@ -11,6 +11,7 @@ use dom::element::Element; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; use dom::htmlcollection::HTMLCollection; use dom::node::{DocumentFragmentNodeTypeId, Node, NodeHelpers, window_from_node}; +use dom::nodelist::NodeList; use dom::window::{Window, WindowMethods}; use servo_util::str::DOMString; @@ -49,6 +50,7 @@ impl DocumentFragment { pub trait DocumentFragmentMethods { fn Children(&self) -> Temporary; fn QuerySelector(&self, selectors: DOMString) -> Fallible>>; + fn QuerySelectorAll(&self, selectors: DOMString) -> Fallible>; } impl<'a> DocumentFragmentMethods for JSRef<'a, DocumentFragment> { @@ -63,4 +65,11 @@ impl<'a> DocumentFragmentMethods for JSRef<'a, DocumentFragment> { let root: &JSRef = NodeCast::from_ref(self); root.query_selector(selectors) } + + // http://dom.spec.whatwg.org/#dom-parentnode-queryselectorall + fn QuerySelectorAll(&self, selectors: DOMString) -> Fallible> { + let root: &JSRef = NodeCast::from_ref(self); + root.query_selector_all(selectors) + } + } diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 742463b597e..976ed02c739 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -22,6 +22,7 @@ use dom::htmlcollection::HTMLCollection; use dom::htmlserializer::serialize; use dom::node::{ElementNodeTypeId, Node, NodeHelpers, NodeIterator, document_from_node}; use dom::node::{window_from_node, LayoutNodeHelpers}; +use dom::nodelist::NodeList; use dom::virtualmethods::{VirtualMethods, vtable_for}; use layout_interface::ContentChangedDocumentDamage; use layout_interface::MatchSelectorsDocumentDamage; @@ -430,6 +431,7 @@ pub trait ElementMethods { fn GetOuterHTML(&self) -> Fallible; fn Children(&self) -> Temporary; fn QuerySelector(&self, selectors: DOMString) -> Fallible>>; + fn QuerySelectorAll(&self, selectors: DOMString) -> Fallible>; fn Remove(&self); } @@ -712,6 +714,12 @@ impl<'a> ElementMethods for JSRef<'a, Element> { root.query_selector(selectors) } + // http://dom.spec.whatwg.org/#dom-parentnode-queryselectorall + fn QuerySelectorAll(&self, selectors: DOMString) -> Fallible> { + let root: &JSRef = NodeCast::from_ref(self); + root.query_selector_all(selectors) + } + // http://dom.spec.whatwg.org/#dom-childnode-remove fn Remove(&self) { let node: &JSRef = NodeCast::from_ref(self); diff --git a/src/components/script/dom/webidls/ParentNode.webidl b/src/components/script/dom/webidls/ParentNode.webidl index 70ab892fea8..daa4339611f 100644 --- a/src/components/script/dom/webidls/ParentNode.webidl +++ b/src/components/script/dom/webidls/ParentNode.webidl @@ -24,8 +24,11 @@ interface ParentNode { // void append((Node or DOMString)... nodes); //Element? query(DOMString relativeSelectors); - //[NewObject] Elements queryAll(DOMString relativeSelectors); + //[NewObject] + //Elements queryAll(DOMString relativeSelectors); [Throws] Element? querySelector(DOMString selectors); - //[NewObject] NodeList querySelectorAll(DOMString selectors); + //[NewObject] + [Throws] + NodeList querySelectorAll(DOMString selectors); };