Use JS_ObjectToOuterObject in wrap callbacks.

This commit is contained in:
Ms2ger 2014-05-15 20:58:51 +02:00
parent 765cea73d9
commit 8182105204
2 changed files with 5 additions and 28 deletions

View file

@ -37,6 +37,7 @@ use js::jsapi::{JSContext, JSObject, JSBool, jsid, JSClass, JSNative};
use js::jsapi::{JSFunctionSpec, JSPropertySpec}; use js::jsapi::{JSFunctionSpec, JSPropertySpec};
use js::jsapi::{JS_NewGlobalObject, JS_InitStandardClasses}; use js::jsapi::{JS_NewGlobalObject, JS_InitStandardClasses};
use js::jsapi::{JSString}; use js::jsapi::{JSString};
use js::jsfriendapi::JS_ObjectToOuterObject;
use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType; use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType;
use js::jsval::JSVal; use js::jsval::JSVal;
use js::jsval::{PrivateValue, ObjectValue, NullValue, ObjectOrNullValue}; use js::jsval::{PrivateValue, ObjectValue, NullValue, ObjectOrNullValue};
@ -594,38 +595,14 @@ pub fn CreateDOMGlobal(cx: *JSContext, class: *JSClass) -> *JSObject {
pub extern fn wrap_for_same_compartment(cx: *JSContext, obj: *JSObject) -> *JSObject { pub extern fn wrap_for_same_compartment(cx: *JSContext, obj: *JSObject) -> *JSObject {
unsafe { unsafe {
let clasp = JS_GetClass(obj); JS_ObjectToOuterObject(cx as *mut _, obj as *mut _) as *_
let clasp = clasp as *js::Class;
match (*clasp).ext.outerObject {
Some(outerize) => {
debug!("found an outerize hook");
let obj = JSHandleObject { unnamed: &obj };
outerize(cx, obj)
}
None => {
debug!("no outerize hook found");
obj
}
}
} }
} }
pub extern fn pre_wrap(cx: *mut JSContext, _scope: *mut JSObject, pub extern fn pre_wrap(cx: *mut JSContext, _scope: *mut JSObject,
obj: *mut JSObject, flags: c_uint) -> *mut JSObject { obj: *mut JSObject, _flags: c_uint) -> *mut JSObject {
unsafe { unsafe {
let clasp = JS_GetClass(obj as *_); JS_ObjectToOuterObject(cx, obj)
let clasp = clasp as *js::Class;
match (*clasp).ext.outerObject {
Some(outerize) => {
debug!("found an outerize hook");
let obj = JSHandleObject { unnamed: &(obj as *_) };
outerize(cx as *_, obj) as *mut _
}
None => {
debug!("no outerize hook found");
obj
}
}
} }
} }

@ -1 +1 @@
Subproject commit 07f19496bd7703b502812a6b4228f08dec59ec0b Subproject commit ff296137c652248138eb7f5a377d8daac52ed233