diff --git a/src/conversions.rs b/src/conversions.rs index bdd5ae82f..e1b77bc6f 100644 --- a/src/conversions.rs +++ b/src/conversions.rs @@ -30,6 +30,7 @@ use core::nonzero::NonZero; use error::throw_type_error; use glue::RUST_JS_NumberValue; +use jsapi::AssertSameCompartment; use jsapi::{ForOfIterator, ForOfIterator_NonIterableBehavior, HandleValue}; use jsapi::{Heap, JS_DefineElement, JS_GetLatin1StringCharsAndLength}; use jsapi::{JS_GetTwoByteStringCharsAndLength, JS_NewArrayObject1}; @@ -184,6 +185,20 @@ impl ToJSValConvertible for () { } } +impl FromJSValConvertible for HandleValue { + type Config = (); + #[inline] + unsafe fn from_jsval(cx: *mut JSContext, + value: HandleValue, + _option: ()) + -> Result, ()> { + if value.is_object() { + AssertSameCompartment(cx, value.to_object()); + } + Ok(ConversionResult::Success(value)) + } +} + impl FromJSValConvertible for JSVal { type Config = (); unsafe fn from_jsval(_cx: *mut JSContext,