diff options
author | Josh Matthews <josh@joshmatthews.net> | 2014-04-22 17:14:48 -0400 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-05-27 20:43:52 +0200 |
commit | 003e5bcd4674fc0e78b36ecd783f3045cba852d2 (patch) | |
tree | 8206e58c032795db83c392167129483200ff0f2b /src/components/script/dom/bindings/conversions.rs | |
parent | 04931adf70e6dc70d09c2ceb42e2add85f58051d (diff) | |
download | servo-003e5bcd4674fc0e78b36ecd783f3045cba852d2.tar.gz servo-003e5bcd4674fc0e78b36ecd783f3045cba852d2.zip |
Port modern callback handling code from Gecko, and copy related WebIDL parser bits too.
Diffstat (limited to 'src/components/script/dom/bindings/conversions.rs')
-rw-r--r-- | src/components/script/dom/bindings/conversions.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/components/script/dom/bindings/conversions.rs b/src/components/script/dom/bindings/conversions.rs index e1a155fa457..867e07ade30 100644 --- a/src/components/script/dom/bindings/conversions.rs +++ b/src/components/script/dom/bindings/conversions.rs @@ -328,6 +328,12 @@ impl<'a, T: Reflectable> ToJSValConvertible for JSRef<'a, T> { } } +impl<'a, T: Reflectable> ToJSValConvertible for JS<T> { + fn to_jsval(&self, cx: *mut JSContext) -> JSVal { + self.reflector().to_jsval(cx) + } +} + impl<T: ToJSValConvertible> ToJSValConvertible for Option<T> { fn to_jsval(&self, cx: *mut JSContext) -> JSVal { match self { @@ -350,7 +356,11 @@ impl<X: Default, T: FromJSValConvertible<X>> FromJSValConvertible<()> for Option } impl ToJSValConvertible for *mut JSObject { - fn to_jsval(&self, _cx: *mut JSContext) -> JSVal { - ObjectOrNullValue(*self) + fn to_jsval(&self, cx: *mut JSContext) -> JSVal { + let mut wrapped = ObjectOrNullValue(*self); + unsafe { + assert!(JS_WrapValue(cx, &mut wrapped) != 0); + } + wrapped } } |