From 7f5b3690f3b2f324a29899feccc2532817f75070 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 26 Mar 2014 09:02:42 -0400 Subject: [PATCH] Support live HTMLCollection for DataListElement.options --- .../script/dom/htmldatalistelement.rs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/components/script/dom/htmldatalistelement.rs b/src/components/script/dom/htmldatalistelement.rs index 2a81cce1994..aab9aff5b94 100644 --- a/src/components/script/dom/htmldatalistelement.rs +++ b/src/components/script/dom/htmldatalistelement.rs @@ -6,11 +6,11 @@ use dom::bindings::codegen::HTMLDataListElementBinding; use dom::bindings::codegen::InheritTypes::{HTMLDataListElementDerived, NodeCast}; use dom::bindings::js::JS; use dom::document::Document; -use dom::element::HTMLDataListElementTypeId; +use dom::element::{Element, HTMLDataListElementTypeId}; use dom::eventtarget::{EventTarget, NodeTargetTypeId}; -use dom::htmlcollection::HTMLCollection; +use dom::htmlcollection::{HTMLCollection, CollectionFilter}; use dom::htmlelement::HTMLElement; -use dom::node::{Node, ElementNodeTypeId}; +use dom::node::{Node, ElementNodeTypeId, window_from_node}; use servo_util::str::DOMString; #[deriving(Encodable)] @@ -42,9 +42,14 @@ impl HTMLDataListElement { impl HTMLDataListElement { pub fn Options(&self, abstract_self: &JS) -> JS { + struct HTMLDataListOptionsFilter; + impl CollectionFilter for HTMLDataListOptionsFilter { + fn filter(&self, elem: &JS, _root: &JS) -> bool { + elem.get().tag_name == ~"option" + } + } let node: JS = NodeCast::from(abstract_self); - let doc = &self.htmlelement.element.node.owner_doc(); - let window = &doc.get().window; - HTMLCollection::by_tag_name(window, &node, ~"option") + let filter = ~HTMLDataListOptionsFilter; + HTMLCollection::create_live(&window_from_node(&node), &node, filter) } }