diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2017-02-14 18:04:22 +0100 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2017-02-15 10:24:02 +0100 |
commit | be000d3833f77d7450624ae68d4ac9e1b3516748 (patch) | |
tree | 86c4b6bc3300a0873f093fb399c2be9fcc632016 /components/script/dom/bindings/iterable.rs | |
parent | 8bcf36b9a59b4f30fd54fceb85eeb51b1d4dee4f (diff) | |
download | servo-be000d3833f77d7450624ae68d4ac9e1b3516748.tar.gz servo-be000d3833f77d7450624ae68d4ac9e1b3516748.zip |
Use #[dom_struct] on IterableIterator<T> (fixes #12811)
Diffstat (limited to 'components/script/dom/bindings/iterable.rs')
-rw-r--r-- | components/script/dom/bindings/iterable.rs | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 15ff439e1eb..08439d16517 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -11,11 +11,11 @@ use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyAndVal use dom::bindings::codegen::Bindings::IterableIteratorBinding::IterableKeyOrValueResult; use dom::bindings::error::Fallible; use dom::bindings::js::{JS, Root}; -use dom::bindings::reflector::{Reflector, DomObject, MutDomObject, reflect_dom_object}; +use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object}; use dom::bindings::trace::JSTraceable; use dom::globalscope::GlobalScope; use js::conversions::ToJSValConvertible; -use js::jsapi::{JSContext, JSObject, MutableHandleValue, MutableHandleObject, HandleValue}; +use js::jsapi::{HandleValue, JSContext, JSObject, MutableHandleObject}; use js::jsval::UndefinedValue; use std::cell::Cell; use std::ptr; @@ -47,9 +47,7 @@ pub trait Iterable { /// An iterator over the iterable entries of a given DOM interface. //FIXME: #12811 prevents dom_struct with type parameters -//#[dom_struct] -#[derive(DenyPublicFields, HeapSizeOf, JSTraceable)] -#[must_root] +#[dom_struct] pub struct IterableIterator<T: DomObject + JSTraceable + Iterable> { reflector: Reflector, iterable: JS<T>, @@ -57,28 +55,6 @@ pub struct IterableIterator<T: DomObject + JSTraceable + Iterable> { index: Cell<u32>, } -impl<T: DomObject + JSTraceable + Iterable> DomObject for IterableIterator<T> { - fn reflector<'a>(&'a self) -> &'a Reflector { - &self.reflector - } -} - -impl<T: DomObject + JSTraceable + Iterable> MutDomObject for IterableIterator<T> { - fn init_reflector(&mut self, obj: *mut JSObject) { - self.reflector.set_jsobject(obj); - } -} - -impl<T: DomObject + JSTraceable + Iterable> ToJSValConvertible for IterableIterator<T> { - #[allow(unsafe_code)] - unsafe fn to_jsval(&self, - cx: *mut JSContext, - rval: MutableHandleValue) { - let object = DomObject::reflector(self).get_jsobject(); - object.to_jsval(cx, rval) - } -} - impl<T: DomObject + JSTraceable + Iterable> IterableIterator<T> { /// Create a new iterator instance for the provided iterable DOM interface. pub fn new(iterable: &T, |