aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <release+servo@mozilla.com>2014-03-19 18:04:57 -0400
committerbors-servo <release+servo@mozilla.com>2014-03-19 18:04:57 -0400
commit627017862859756231ce28a521b3128c6528b982 (patch)
tree5c5a56881c785ebab8d0af9f45de60e56b69624e
parentb345e9458a316096a7877f3d54b25a9d8d155540 (diff)
parenta2189ee066e32f3dbaa3e583fdd583dffcb1624e (diff)
downloadservo-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.conf2
-rw-r--r--src/components/script/dom/htmldatalistelement.rs12
-rw-r--r--src/test/content/test_document_datalist_options.html20
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>