static JSObject * GetCurrentOuter(JSContext *cx, JSObject *obj) { OBJ_TO_OUTER_OBJECT(cx, obj); if (obj->isWrapper() && !obj->getClass()->ext.innerObject) { obj = obj->unwrap(); NS_ASSERTION(obj->getClass()->ext.innerObject, "weird object, expecting an outer window proxy"); } return obj; }
jsval jsd_GetValueWrappedJSVal(JSDContext* jsdc, JSDValue* jsdval) { JSObject* obj; JSContext* cx; jsval val = jsdval->val; if (!JSVAL_IS_PRIMITIVE(val)) { cx = JSD_GetDefaultJSContext(jsdc); obj = JSVAL_TO_OBJECT(val); OBJ_TO_OUTER_OBJECT(cx, obj); if (!obj) { JS_ClearPendingException(cx); val = JSVAL_NULL; } else val = OBJECT_TO_JSVAL(obj); } return val; }