aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/bindings/conversions.rs
diff options
context:
space:
mode:
authorJosh Matthews <josh@joshmatthews.net>2014-04-22 17:14:48 -0400
committerMs2ger <ms2ger@gmail.com>2014-05-27 20:43:52 +0200
commit003e5bcd4674fc0e78b36ecd783f3045cba852d2 (patch)
tree8206e58c032795db83c392167129483200ff0f2b /src/components/script/dom/bindings/conversions.rs
parent04931adf70e6dc70d09c2ceb42e2add85f58051d (diff)
downloadservo-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.rs14
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
}
}