diff options
author | bors-servo <release+servo@mozilla.com> | 2014-03-19 18:04:57 -0400 |
---|---|---|
committer | bors-servo <release+servo@mozilla.com> | 2014-03-19 18:04:57 -0400 |
commit | 627017862859756231ce28a521b3128c6528b982 (patch) | |
tree | 5c5a56881c785ebab8d0af9f45de60e56b69624e | |
parent | b345e9458a316096a7877f3d54b25a9d8d155540 (diff) | |
parent | a2189ee066e32f3dbaa3e583fdd583dffcb1624e (diff) | |
download | servo-627017862859756231ce28a521b3128c6528b982.tar.gz servo-627017862859756231ce28a521b3128c6528b982.zip |
auto merge of #1855 : lpy/servo/issue1842, r=jdm
see #1842
When I tried to use like `datalist.options[0].value`, it returned nothing. So is it implemented?
-rw-r--r-- | src/components/script/dom/bindings/codegen/Bindings.conf | 2 | ||||
-rw-r--r-- | src/components/script/dom/htmldatalistelement.rs | 12 | ||||
-rw-r--r-- | src/test/content/test_document_datalist_options.html | 20 |
3 files changed, 27 insertions, 7 deletions
diff --git a/src/components/script/dom/bindings/codegen/Bindings.conf b/src/components/script/dom/bindings/codegen/Bindings.conf index 0aa60ed606b..eac06e8454d 100644 --- a/src/components/script/dom/bindings/codegen/Bindings.conf +++ b/src/components/script/dom/bindings/codegen/Bindings.conf @@ -142,7 +142,7 @@ addHTMLElement('HTMLBRElement') addHTMLElement('HTMLCanvasElement') addHTMLElement('HTMLDataElement') addHTMLElement('HTMLDivElement') -addHTMLElement('HTMLDataListElement') +addHTMLElement('HTMLDataListElement', needsAbstract=['options']) addHTMLElement('HTMLDirectoryElement') addHTMLElement('HTMLDListElement') addHTMLElement('HTMLElement') diff --git a/src/components/script/dom/htmldatalistelement.rs b/src/components/script/dom/htmldatalistelement.rs index ef3f91f1702..2a81cce1994 100644 --- a/src/components/script/dom/htmldatalistelement.rs +++ b/src/components/script/dom/htmldatalistelement.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::codegen::HTMLDataListElementBinding; -use dom::bindings::codegen::InheritTypes::HTMLDataListElementDerived; +use dom::bindings::codegen::InheritTypes::{HTMLDataListElementDerived, NodeCast}; use dom::bindings::js::JS; use dom::document::Document; use dom::element::HTMLDataListElementTypeId; @@ -41,10 +41,10 @@ impl HTMLDataListElement { } impl HTMLDataListElement { - pub fn Options(&self) -> JS<HTMLCollection> { - // FIXME: https://github.com/mozilla/servo/issues/1842 - let doc = self.htmlelement.element.node.owner_doc(); - let doc = doc.get(); - HTMLCollection::new(&doc.window, ~[]) + pub fn Options(&self, abstract_self: &JS<HTMLDataListElement>) -> JS<HTMLCollection> { + let node: JS<Node> = NodeCast::from(abstract_self); + let doc = &self.htmlelement.element.node.owner_doc(); + let window = &doc.get().window; + HTMLCollection::by_tag_name(window, &node, ~"option") } } diff --git a/src/test/content/test_document_datalist_options.html b/src/test/content/test_document_datalist_options.html new file mode 100644 index 00000000000..770c67a23e4 --- /dev/null +++ b/src/test/content/test_document_datalist_options.html @@ -0,0 +1,20 @@ +<html> + <head> + <script src="harness.js"></script> + </head> + <datalist id="id"> + <option value="A"> + <option value="B"> + <p>P</p> + <div>DIV</div> + <option value="C"> + </datalist> + <script> + var datalist = document.getElementById("id"); + is(datalist.options.length, 3); + is_a(datalist.options[0], HTMLOptionElement); + is_a(datalist.options[1], HTMLOptionElement); + is_a(datalist.options[2], HTMLOptionElement); + finish(); + </script> +</html> |