diff options
author | vectorijk <jiangkai@gmail.com> | 2015-08-15 02:49:15 -0700 |
---|---|---|
committer | vectorijk <jiangkai@gmail.com> | 2015-08-16 12:01:51 -0700 |
commit | 59d704b53fd8fbd21fa95539b6b592147dd0dc2f (patch) | |
tree | 5951c2268c87d438e9ae6049a769f6c99356cd7c /components/script/dom/htmlcollection.rs | |
parent | d853aaba65089fd2b207527ccf588b912fe0e3ad (diff) | |
download | servo-59d704b53fd8fbd21fa95539b6b592147dd0dc2f.tar.gz servo-59d704b53fd8fbd21fa95539b6b592147dd0dc2f.zip |
turn enum into struct
pub enum CollectionTypeId -> pub struct Collection
Diffstat (limited to 'components/script/dom/htmlcollection.rs')
-rw-r--r-- | components/script/dom/htmlcollection.rs | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/components/script/dom/htmlcollection.rs b/components/script/dom/htmlcollection.rs index 7f65ad18056..bbac05d5b97 100644 --- a/components/script/dom/htmlcollection.rs +++ b/components/script/dom/htmlcollection.rs @@ -24,27 +24,25 @@ pub trait CollectionFilter : JSTraceable { #[derive(JSTraceable)] #[must_root] -pub enum CollectionTypeId { - Live(JS<Node>, Box<CollectionFilter+'static>) -} +pub struct Collection(JS<Node>, Box<CollectionFilter + 'static>); #[dom_struct] #[derive(HeapSizeOf)] pub struct HTMLCollection { reflector_: Reflector, #[ignore_heap_size_of = "Contains a trait object; can't measure due to #6870"] - collection: CollectionTypeId, + collection: Collection, } impl HTMLCollection { - fn new_inherited(collection: CollectionTypeId) -> HTMLCollection { + fn new_inherited(collection: Collection) -> HTMLCollection { HTMLCollection { reflector_: Reflector::new(), collection: collection, } } - pub fn new(window: &Window, collection: CollectionTypeId) -> Root<HTMLCollection> { + pub fn new(window: &Window, collection: Collection) -> Root<HTMLCollection> { reflect_dom_object(box HTMLCollection::new_inherited(collection), GlobalRef::Window(window), HTMLCollectionBinding::Wrap) } @@ -53,7 +51,7 @@ impl HTMLCollection { impl HTMLCollection { pub fn create(window: &Window, root: &Node, filter: Box<CollectionFilter + 'static>) -> Root<HTMLCollection> { - HTMLCollection::new(window, CollectionTypeId::Live(JS::from_ref(root), filter)) + HTMLCollection::new(window, Collection(JS::from_ref(root), filter)) } fn all_elements(window: &Window, root: &Node, @@ -178,31 +176,28 @@ impl HTMLCollection { impl<'a> HTMLCollectionMethods for &'a HTMLCollection { // https://dom.spec.whatwg.org/#dom-htmlcollection-length + #[allow(unrooted_must_root)] fn Length(self) -> u32 { - match self.collection { - CollectionTypeId::Live(ref root, ref filter) => { - let root = root.root(); - HTMLCollection::traverse(root.r()) - .filter(|element| filter.filter(element.r(), root.r())) - .count() as u32 - } - } + let Collection(ref root, ref filter) = self.collection; + let root = root.root(); + HTMLCollection::traverse(root.r()) + .filter(|element| filter.filter(element.r(), root.r())) + .count() as u32 } // https://dom.spec.whatwg.org/#dom-htmlcollection-item + #[allow(unrooted_must_root)] fn Item(self, index: u32) -> Option<Root<Element>> { let index = index as usize; - match self.collection { - CollectionTypeId::Live(ref root, ref filter) => { - let root = root.root(); - HTMLCollection::traverse(root.r()) - .filter(|element| filter.filter(element.r(), root.r())) - .nth(index) - } - } + let Collection(ref root, ref filter) = self.collection; + let root = root.root(); + HTMLCollection::traverse(root.r()) + .filter(|element| filter.filter(element.r(), root.r())) + .nth(index) } // https://dom.spec.whatwg.org/#dom-htmlcollection-nameditem + #[allow(unrooted_must_root)] fn NamedItem(self, key: DOMString) -> Option<Root<Element>> { // Step 1. if key.is_empty() { @@ -210,16 +205,13 @@ impl<'a> HTMLCollectionMethods for &'a HTMLCollection { } // Step 2. - match self.collection { - CollectionTypeId::Live(ref root, ref filter) => { - let root = root.root(); - HTMLCollection::traverse(root.r()) - .filter(|element| filter.filter(element.r(), root.r())) - .find(|elem| { - elem.r().get_string_attribute(&atom!("name")) == key || - elem.r().get_string_attribute(&atom!("id")) == key }) - } - } + let Collection(ref root, ref filter) = self.collection; + let root = root.root(); + HTMLCollection::traverse(root.r()) + .filter(|element| filter.filter(element.r(), root.r())) + .find(|elem| { + elem.r().get_string_attribute(&atom!("name")) == key || + elem.r().get_string_attribute(&atom!("id")) == key}) } // https://dom.spec.whatwg.org/#dom-htmlcollection-item |