diff options
Diffstat (limited to 'components/script/dom/bindings/iterable.rs')
-rw-r--r-- | components/script/dom/bindings/iterable.rs | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/components/script/dom/bindings/iterable.rs b/components/script/dom/bindings/iterable.rs index 4e4963399c6..5ee790cf2d3 100644 --- a/components/script/dom/bindings/iterable.rs +++ b/components/script/dom/bindings/iterable.rs @@ -13,6 +13,7 @@ use crate::dom::bindings::reflector::{reflect_dom_object, DomObject, Reflector}; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::trace::{JSTraceable, RootedTraceableBox}; use crate::dom::globalscope::GlobalScope; +use crate::script_runtime::JSContext as SafeJSContext; use dom_struct::dom_struct; use js::conversions::ToJSValConvertible; use js::jsapi::{Heap, JSContext, JSObject}; @@ -62,7 +63,7 @@ impl<T: DomObject + JSTraceable + Iterable> IterableIterator<T> { pub fn new( iterable: &T, type_: IteratorType, - wrap: unsafe fn(*mut JSContext, &GlobalScope, Box<IterableIterator<T>>) -> DomRoot<Self>, + wrap: unsafe fn(SafeJSContext, &GlobalScope, Box<IterableIterator<T>>) -> DomRoot<Self>, ) -> DomRoot<Self> { let iterator = Box::new(IterableIterator { reflector: Reflector::new(), @@ -75,41 +76,41 @@ impl<T: DomObject + JSTraceable + Iterable> IterableIterator<T> { /// Return the next value from the iterable object. #[allow(non_snake_case)] - pub fn Next(&self, cx: *mut JSContext) -> Fallible<NonNull<JSObject>> { + pub fn Next(&self, cx: SafeJSContext) -> Fallible<NonNull<JSObject>> { let index = self.index.get(); - rooted!(in(cx) let mut value = UndefinedValue()); - rooted!(in(cx) let mut rval = ptr::null_mut::<JSObject>()); + rooted!(in(*cx) let mut value = UndefinedValue()); + rooted!(in(*cx) let mut rval = ptr::null_mut::<JSObject>()); let result = if index >= self.iterable.get_iterable_length() { - dict_return(cx, rval.handle_mut(), true, value.handle()) + dict_return(*cx, rval.handle_mut(), true, value.handle()) } else { match self.type_ { IteratorType::Keys => { unsafe { self.iterable .get_key_at_index(index) - .to_jsval(cx, value.handle_mut()); + .to_jsval(*cx, value.handle_mut()); } - dict_return(cx, rval.handle_mut(), false, value.handle()) + dict_return(*cx, rval.handle_mut(), false, value.handle()) }, IteratorType::Values => { unsafe { self.iterable .get_value_at_index(index) - .to_jsval(cx, value.handle_mut()); + .to_jsval(*cx, value.handle_mut()); } - dict_return(cx, rval.handle_mut(), false, value.handle()) + dict_return(*cx, rval.handle_mut(), false, value.handle()) }, IteratorType::Entries => { - rooted!(in(cx) let mut key = UndefinedValue()); + rooted!(in(*cx) let mut key = UndefinedValue()); unsafe { self.iterable .get_key_at_index(index) - .to_jsval(cx, key.handle_mut()); + .to_jsval(*cx, key.handle_mut()); self.iterable .get_value_at_index(index) - .to_jsval(cx, value.handle_mut()); + .to_jsval(*cx, value.handle_mut()); } - key_and_value_return(cx, rval.handle_mut(), key.handle(), value.handle()) + key_and_value_return(*cx, rval.handle_mut(), key.handle(), value.handle()) }, } }; |