void js_register_cocos2dx_DrawNode3D(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_DrawNode3D_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_DrawNode3D_class->name = "DrawNode3D"; jsb_cocos2d_DrawNode3D_class->addProperty = JS_PropertyStub; jsb_cocos2d_DrawNode3D_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_DrawNode3D_class->getProperty = JS_PropertyStub; jsb_cocos2d_DrawNode3D_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_DrawNode3D_class->enumerate = JS_EnumerateStub; jsb_cocos2d_DrawNode3D_class->resolve = JS_ResolveStub; jsb_cocos2d_DrawNode3D_class->convert = JS_ConvertStub; jsb_cocos2d_DrawNode3D_class->finalize = js_cocos2d_DrawNode3D_finalize; jsb_cocos2d_DrawNode3D_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("getBlendFunc", js_cocos2dx_DrawNode3D_getBlendFunc, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setBlendFunc", js_cocos2dx_DrawNode3D_setBlendFunc, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("drawLine", js_cocos2dx_DrawNode3D_drawLine, 3, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("clear", js_cocos2dx_DrawNode3D_clear, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("onDraw", js_cocos2dx_DrawNode3D_onDraw, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_cocos2dx_DrawNode3D_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("drawCube", js_cocos2dx_DrawNode3D_drawCube, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FS_END }; jsb_cocos2d_DrawNode3D_prototype = JS_InitClass( cx, global, JS::RootedObject(cx, jsb_cocos2d_Node_prototype), jsb_cocos2d_DrawNode3D_class, js_cocos2dx_DrawNode3D_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "DrawNode3D", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<cocos2d::DrawNode3D> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_cocos2d_DrawNode3D_class; p->proto = jsb_cocos2d_DrawNode3D_prototype; p->parentProto = jsb_cocos2d_Node_prototype; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_cocos2dx_nativehelper_NativeHelper(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_NativeHelper_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_NativeHelper_class->name = "NativeHelper"; jsb_cocos2d_NativeHelper_class->addProperty = JS_PropertyStub; jsb_cocos2d_NativeHelper_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_NativeHelper_class->getProperty = JS_PropertyStub; jsb_cocos2d_NativeHelper_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_NativeHelper_class->enumerate = JS_EnumerateStub; jsb_cocos2d_NativeHelper_class->resolve = JS_ResolveStub; jsb_cocos2d_NativeHelper_class->convert = JS_ConvertStub; jsb_cocos2d_NativeHelper_class->finalize = js_cocos2d_NativeHelper_finalize; jsb_cocos2d_NativeHelper_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("recvJsMsg", js_cocos2dx_nativehelper_NativeHelper_recvJsMsg, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("startSendMsg", js_cocos2dx_nativehelper_NativeHelper_startSendMsg, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setPacketAssembler", js_cocos2dx_nativehelper_NativeHelper_setPacketAssembler, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setCallBack", js_cocos2dx_nativehelper_NativeHelper_setCallBack, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("sendJsMsg", js_cocos2dx_nativehelper_NativeHelper_sendJsMsg, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("test", js_cocos2dx_nativehelper_NativeHelper_test, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("singleton", js_cocos2dx_nativehelper_NativeHelper_singleton, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_cocos2d_NativeHelper_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_cocos2d_NativeHelper_class, dummy_constructor<cocos2d::NativeHelper>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "NativeHelper", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<cocos2d::NativeHelper> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_cocos2d_NativeHelper_class; p->proto = jsb_cocos2d_NativeHelper_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_PluginShareJS_PluginShare(JSContext *cx, JS::HandleObject global) { jsb_sdkbox_PluginShare_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_sdkbox_PluginShare_class->name = "PluginShare"; jsb_sdkbox_PluginShare_class->addProperty = JS_PropertyStub; jsb_sdkbox_PluginShare_class->delProperty = JS_DeletePropertyStub; jsb_sdkbox_PluginShare_class->getProperty = JS_PropertyStub; jsb_sdkbox_PluginShare_class->setProperty = JS_StrictPropertyStub; jsb_sdkbox_PluginShare_class->enumerate = JS_EnumerateStub; jsb_sdkbox_PluginShare_class->resolve = JS_ResolveStub; jsb_sdkbox_PluginShare_class->convert = JS_ConvertStub; jsb_sdkbox_PluginShare_class->finalize = js_PluginShareJS_PluginShare_finalize; jsb_sdkbox_PluginShare_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("init", js_PluginShareJS_PluginShare_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_sdkbox_PluginShare_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_sdkbox_PluginShare_class, dummy_constructor<sdkbox::PluginShare>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "PluginShare", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table #if (COCOS2D_VERSION >= 0x00031000) JS::RootedObject proto(cx, jsb_sdkbox_PluginShare_prototype); jsb_register_class<sdkbox::PluginShare>(cx, jsb_sdkbox_PluginShare_class, proto, JS::NullPtr()); #else TypeTest<sdkbox::PluginShare> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_sdkbox_PluginShare_class; p->proto = jsb_sdkbox_PluginShare_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } #endif }
void js_register_cocos2dx_experimental_video_VideoPlayer(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_experimental_ui_VideoPlayer_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_experimental_ui_VideoPlayer_class->name = "VideoPlayer"; jsb_cocos2d_experimental_ui_VideoPlayer_class->addProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->getProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->enumerate = JS_EnumerateStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->resolve = JS_ResolveStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->convert = JS_ConvertStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->finalize = jsb_ref_finalize; jsb_cocos2d_experimental_ui_VideoPlayer_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("getFileName", js_cocos2dx_experimental_video_VideoPlayer_getFileName, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getURL", js_cocos2dx_experimental_video_VideoPlayer_getURL, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("play", js_cocos2dx_experimental_video_VideoPlayer_play, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setKeepAspectRatioEnabled", js_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stop", js_cocos2dx_experimental_video_VideoPlayer_stop, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFullScreenEnabled", js_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFileName", js_cocos2dx_experimental_video_VideoPlayer_setFileName, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setURL", js_cocos2dx_experimental_video_VideoPlayer_setURL, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isKeepAspectRatioEnabled", js_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("onPlayEvent", js_cocos2dx_experimental_video_VideoPlayer_onPlayEvent, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isFullScreenEnabled", js_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isPlaying", js_cocos2dx_experimental_video_VideoPlayer_isPlaying, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("seekTo", js_cocos2dx_experimental_video_VideoPlayer_seekTo, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("create", js_cocos2dx_experimental_video_VideoPlayer_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; JS::RootedObject parent_proto(cx, jsb_cocos2d_ui_Widget_prototype); jsb_cocos2d_experimental_ui_VideoPlayer_prototype = JS_InitClass( cx, global, parent_proto, jsb_cocos2d_experimental_ui_VideoPlayer_class, js_cocos2dx_experimental_video_VideoPlayer_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); // add the proto and JSClass to the type->js info hash table JS::RootedObject proto(cx, jsb_cocos2d_experimental_ui_VideoPlayer_prototype); jsb_register_class<cocos2d::experimental::ui::VideoPlayer>(cx, jsb_cocos2d_experimental_ui_VideoPlayer_class, proto, parent_proto); }
void js_register_cocos2dx_audioengine_AudioProfile(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_experimental_AudioProfile_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_experimental_AudioProfile_class->name = "AudioProfile"; jsb_cocos2d_experimental_AudioProfile_class->addProperty = JS_PropertyStub; jsb_cocos2d_experimental_AudioProfile_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_experimental_AudioProfile_class->getProperty = JS_PropertyStub; jsb_cocos2d_experimental_AudioProfile_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_experimental_AudioProfile_class->enumerate = JS_EnumerateStub; jsb_cocos2d_experimental_AudioProfile_class->resolve = JS_ResolveStub; jsb_cocos2d_experimental_AudioProfile_class->convert = JS_ConvertStub; jsb_cocos2d_experimental_AudioProfile_class->finalize = js_cocos2d_experimental_AudioProfile_finalize; jsb_cocos2d_experimental_AudioProfile_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PSGS("name", js_cocos2dx_audioengine_AudioProfile_get_name, js_cocos2dx_audioengine_AudioProfile_set_name, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PSGS("maxInstances", js_cocos2dx_audioengine_AudioProfile_get_maxInstances, js_cocos2dx_audioengine_AudioProfile_set_maxInstances, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PSGS("minDelay", js_cocos2dx_audioengine_AudioProfile_get_minDelay, js_cocos2dx_audioengine_AudioProfile_set_minDelay, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; JSFunctionSpec *st_funcs = NULL; jsb_cocos2d_experimental_AudioProfile_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_cocos2d_experimental_AudioProfile_class, js_cocos2dx_audioengine_AudioProfile_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "AudioProfile", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<cocos2d::experimental::AudioProfile> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_cocos2d_experimental_AudioProfile_class; p->proto = jsb_cocos2d_experimental_AudioProfile_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_FlatUtil(JSContext *cx, JS::HandleObject global) { jsb_FlatUtil_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_FlatUtil_class->name = "FlatUtil"; jsb_FlatUtil_class->addProperty = JS_PropertyStub; jsb_FlatUtil_class->delProperty = JS_DeletePropertyStub; jsb_FlatUtil_class->getProperty = JS_PropertyStub; jsb_FlatUtil_class->setProperty = JS_StrictPropertyStub; jsb_FlatUtil_class->enumerate = JS_EnumerateStub; jsb_FlatUtil_class->resolve = JS_ResolveStub; jsb_FlatUtil_class->convert = JS_ConvertStub; jsb_FlatUtil_class->finalize = jsb_ref_finalize; jsb_FlatUtil_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec *funcs = NULL; static JSFunctionSpec st_funcs[] = { JS_FN("default4js", js_FlatUtil_default4js, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("flat2js", js_FlatUtil_flat2js, 4, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("js2flat", js_FlatUtil_js2flat, 4, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("clear", js_FlatUtil_clear, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_FlatUtil_prototype = JS_InitClass( cx, global, JS::NullPtr(), jsb_FlatUtil_class, empty_constructor, 0, properties, funcs, NULL, // no static properties st_funcs); // add the proto and JSClass to the type->js info hash table JS::RootedObject proto(cx, jsb_FlatUtil_prototype); jsb_register_class<FlatUtil>(cx, jsb_FlatUtil_class, proto, JS::NullPtr()); }
/** * @brief register JavascriptJavaBridge to be usable in js * */ void JavascriptJavaBridge::_js_register(JSContext *cx, JS::HandleObject global) { JSClass jsclass = { "JavascriptJavaBridge", JSCLASS_HAS_PRIVATE, JS_PropertyStub, JS_DeletePropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub,basic_object_finalize }; JavascriptJavaBridge::js_class = jsclass; static JSPropertySpec props[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_BINDED_FUNC_FOR_DEF(JavascriptJavaBridge, callStaticMethod), JS_FS_END }; JavascriptJavaBridge::js_parent = NULL; JavascriptJavaBridge::js_proto = JS_InitClass(cx, global, JS::NullPtr(), &JavascriptJavaBridge::js_class , JavascriptJavaBridge::_js_constructor, 0, props, funcs, NULL, NULL); }
namespace js { /* static */ HashNumber SavedFrame::HashPolicy::hash(const Lookup &lookup) { return AddToHash(HashString(lookup.source->chars(), lookup.source->length()), lookup.line, lookup.column, lookup.functionDisplayName, SavedFramePtrHasher::hash(lookup.parent), JSPrincipalsPtrHasher::hash(lookup.principals)); } /* static */ bool SavedFrame::HashPolicy::match(SavedFrame *existing, const Lookup &lookup) { if (existing->getLine() != lookup.line) return false; if (existing->getColumn() != lookup.column) return false; if (existing->getParent() != lookup.parent) return false; if (existing->getPrincipals() != lookup.principals) return false; JSAtom *source = existing->getSource(); if (source->length() != lookup.source->length()) return false; if (source != lookup.source) return false; JSAtom *functionDisplayName = existing->getFunctionDisplayName(); if (functionDisplayName) { if (!lookup.functionDisplayName) return false; if (functionDisplayName->length() != lookup.functionDisplayName->length()) return false; if (0 != CompareAtoms(functionDisplayName, lookup.functionDisplayName)) return false; } else if (lookup.functionDisplayName) { return false; } return true; } /* static */ void SavedFrame::HashPolicy::rekey(Key &key, const Key &newKey) { key = newKey; } /* static */ const Class SavedFrame::class_ = { "SavedFrame", JSCLASS_HAS_PRIVATE | JSCLASS_IMPLEMENTS_BARRIERS | JSCLASS_HAS_RESERVED_SLOTS(SavedFrame::JSSLOT_COUNT), JS_PropertyStub, // addProperty JS_DeletePropertyStub, // delProperty JS_PropertyStub, // getProperty JS_StrictPropertyStub, // setProperty JS_EnumerateStub, // enumerate JS_ResolveStub, // resolve JS_ConvertStub, // convert SavedFrame::finalize // finalize }; /* static */ void SavedFrame::finalize(FreeOp *fop, JSObject *obj) { JSPrincipals *p = obj->as<SavedFrame>().getPrincipals(); if (p) { JSRuntime *rt = obj->runtimeFromMainThread(); JS_DropPrincipals(rt, p); } } JSAtom * SavedFrame::getSource() { const Value &v = getReservedSlot(JSSLOT_SOURCE); JSString *s = v.toString(); return &s->asAtom(); } size_t SavedFrame::getLine() { const Value &v = getReservedSlot(JSSLOT_LINE); return v.toInt32(); } size_t SavedFrame::getColumn() { const Value &v = getReservedSlot(JSSLOT_COLUMN); return v.toInt32(); } JSAtom * SavedFrame::getFunctionDisplayName() { const Value &v = getReservedSlot(JSSLOT_FUNCTIONDISPLAYNAME); if (v.isNull()) return nullptr; JSString *s = v.toString(); return &s->asAtom(); } SavedFrame * SavedFrame::getParent() { const Value &v = getReservedSlot(JSSLOT_PARENT); return v.isObject() ? &v.toObject().as<SavedFrame>() : nullptr; } JSPrincipals * SavedFrame::getPrincipals() { const Value &v = getReservedSlot(JSSLOT_PRINCIPALS); if (v.isUndefined()) return nullptr; return static_cast<JSPrincipals *>(v.toPrivate()); } void SavedFrame::initFromLookup(Lookup &lookup) { JS_ASSERT(lookup.source); JS_ASSERT(getReservedSlot(JSSLOT_SOURCE).isUndefined()); setReservedSlot(JSSLOT_SOURCE, StringValue(lookup.source)); setReservedSlot(JSSLOT_LINE, NumberValue(lookup.line)); setReservedSlot(JSSLOT_COLUMN, NumberValue(lookup.column)); setReservedSlot(JSSLOT_FUNCTIONDISPLAYNAME, lookup.functionDisplayName ? StringValue(lookup.functionDisplayName) : NullValue()); setReservedSlot(JSSLOT_PARENT, ObjectOrNullValue(lookup.parent)); setReservedSlot(JSSLOT_PRIVATE_PARENT, PrivateValue(lookup.parent)); JS_ASSERT(getReservedSlot(JSSLOT_PRINCIPALS).isUndefined()); if (lookup.principals) JS_HoldPrincipals(lookup.principals); setReservedSlot(JSSLOT_PRINCIPALS, PrivateValue(lookup.principals)); } bool SavedFrame::parentMoved() { const Value &v = getReservedSlot(JSSLOT_PRIVATE_PARENT); JSObject *p = static_cast<JSObject *>(v.toPrivate()); return p == getParent(); } void SavedFrame::updatePrivateParent() { setReservedSlot(JSSLOT_PRIVATE_PARENT, PrivateValue(getParent())); } bool SavedFrame::isSelfHosted() { JSAtom *source = getSource(); return StringEqualsAscii(source, "self-hosted"); } /* static */ bool SavedFrame::construct(JSContext *cx, unsigned argc, Value *vp) { JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_NO_CONSTRUCTOR, "SavedFrame"); return false; } /* static */ SavedFrame * SavedFrame::checkThis(JSContext *cx, CallArgs &args, const char *fnName) { const Value &thisValue = args.thisv(); if (!thisValue.isObject()) { JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_NOT_NONNULL_OBJECT); return nullptr; } JSObject &thisObject = thisValue.toObject(); if (!thisObject.is<SavedFrame>()) { JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_PROTO, SavedFrame::class_.name, fnName, thisObject.getClass()->name); return nullptr; } // Check for SavedFrame.prototype, which has the same class as SavedFrame // instances, however doesn't actually represent a captured stack frame. It // is the only object that is<SavedFrame>() but doesn't have a source. if (thisObject.getReservedSlot(JSSLOT_SOURCE).isNull()) { JS_ReportErrorNumber(cx, js_GetErrorMessage, nullptr, JSMSG_INCOMPATIBLE_PROTO, SavedFrame::class_.name, fnName, "prototype object"); return nullptr; } return &thisObject.as<SavedFrame>(); } // Get the SavedFrame * from the current this value and handle any errors that // might occur therein. // // These parameters must already exist when calling this macro: // - JSContext *cx // - unsigned argc // - Value *vp // - const char *fnName // These parameters will be defined after calling this macro: // - CallArgs args // - Rooted<SavedFrame *> frame (will be non-null) #define THIS_SAVEDFRAME(cx, argc, vp, fnName, args, frame) \ CallArgs args = CallArgsFromVp(argc, vp); \ Rooted<SavedFrame *> frame(cx, checkThis(cx, args, fnName)); \ if (!frame) \ return false /* static */ bool SavedFrame::sourceProperty(JSContext *cx, unsigned argc, Value *vp) { THIS_SAVEDFRAME(cx, argc, vp, "(get source)", args, frame); args.rval().setString(frame->getSource()); return true; } /* static */ bool SavedFrame::lineProperty(JSContext *cx, unsigned argc, Value *vp) { THIS_SAVEDFRAME(cx, argc, vp, "(get line)", args, frame); uint32_t line = frame->getLine(); args.rval().setNumber(line); return true; } /* static */ bool SavedFrame::columnProperty(JSContext *cx, unsigned argc, Value *vp) { THIS_SAVEDFRAME(cx, argc, vp, "(get column)", args, frame); uint32_t column = frame->getColumn(); args.rval().setNumber(column); return true; } /* static */ bool SavedFrame::functionDisplayNameProperty(JSContext *cx, unsigned argc, Value *vp) { THIS_SAVEDFRAME(cx, argc, vp, "(get functionDisplayName)", args, frame); RootedAtom name(cx, frame->getFunctionDisplayName()); if (name) args.rval().setString(name); else args.rval().setNull(); return true; } /* static */ bool SavedFrame::parentProperty(JSContext *cx, unsigned argc, Value *vp) { THIS_SAVEDFRAME(cx, argc, vp, "(get parent)", args, frame); JSSubsumesOp subsumes = cx->runtime()->securityCallbacks->subsumes; JSPrincipals *principals = cx->compartment()->principals; do frame = frame->getParent(); while (frame && principals && subsumes && !subsumes(principals, frame->getPrincipals())); args.rval().setObjectOrNull(frame); return true; } /* static */ const JSPropertySpec SavedFrame::properties[] = { JS_PSG("source", SavedFrame::sourceProperty, 0), JS_PSG("line", SavedFrame::lineProperty, 0), JS_PSG("column", SavedFrame::columnProperty, 0), JS_PSG("functionDisplayName", SavedFrame::functionDisplayNameProperty, 0), JS_PSG("parent", SavedFrame::parentProperty, 0), JS_PS_END }; /* static */ bool SavedFrame::toStringMethod(JSContext *cx, unsigned argc, Value *vp) { THIS_SAVEDFRAME(cx, argc, vp, "toString", args, frame); StringBuffer sb(cx); JSSubsumesOp subsumes = cx->runtime()->securityCallbacks->subsumes; JSPrincipals *principals = cx->compartment()->principals; do { if (principals && subsumes && !subsumes(principals, frame->getPrincipals())) continue; if (frame->isSelfHosted()) continue; RootedAtom name(cx, frame->getFunctionDisplayName()); if ((name && !sb.append(name)) || !sb.append('@') || !sb.append(frame->getSource()) || !sb.append(':') || !NumberValueToStringBuffer(cx, NumberValue(frame->getLine()), sb) || !sb.append(':') || !NumberValueToStringBuffer(cx, NumberValue(frame->getColumn()), sb) || !sb.append('\n')) { return false; } } while ((frame = frame->getParent())); args.rval().setString(sb.finishString()); return true; } /* static */ const JSFunctionSpec SavedFrame::methods[] = { JS_FN("toString", SavedFrame::toStringMethod, 0, 0), JS_FS_END }; bool SavedStacks::init() { return frames.init(); } bool SavedStacks::saveCurrentStack(JSContext *cx, MutableHandle<SavedFrame*> frame) { JS_ASSERT(initialized()); JS_ASSERT(&cx->compartment()->savedStacks() == this); ScriptFrameIter iter(cx); return insertFrames(cx, iter, frame); } void SavedStacks::sweep(JSRuntime *rt) { if (frames.initialized()) { for (SavedFrame::Set::Enum e(frames); !e.empty(); e.popFront()) { JSObject *obj = static_cast<JSObject *>(e.front()); JSObject *temp = obj; if (IsObjectAboutToBeFinalized(&obj)) { e.removeFront(); } else { SavedFrame *frame = &obj->as<SavedFrame>(); bool parentMoved = frame->parentMoved(); if (parentMoved) { frame->updatePrivateParent(); } if (obj != temp || parentMoved) { Rooted<SavedFrame*> parent(rt, frame->getParent()); e.rekeyFront(SavedFrame::Lookup(frame->getSource(), frame->getLine(), frame->getColumn(), frame->getFunctionDisplayName(), parent, frame->getPrincipals()), frame); } } } } if (savedFrameProto && IsObjectAboutToBeFinalized(&savedFrameProto)) { savedFrameProto = nullptr; } } uint32_t SavedStacks::count() { JS_ASSERT(initialized()); return frames.count(); } void SavedStacks::clear() { frames.clear(); } size_t SavedStacks::sizeOfExcludingThis(mozilla::MallocSizeOf mallocSizeOf) { return frames.sizeOfExcludingThis(mallocSizeOf); } bool SavedStacks::insertFrames(JSContext *cx, ScriptFrameIter &iter, MutableHandle<SavedFrame*> frame) { if (iter.done()) { frame.set(nullptr); return true; } ScriptFrameIter thisFrame(iter); Rooted<SavedFrame*> parentFrame(cx); if (!insertFrames(cx, ++iter, &parentFrame)) return false; RootedScript script(cx, thisFrame.script()); RootedFunction callee(cx, thisFrame.maybeCallee()); const char *filename = script->filename(); RootedAtom source(cx, Atomize(cx, filename, strlen(filename))); if (!source) return false; uint32_t column; uint32_t line = PCToLineNumber(script, thisFrame.pc(), &column); SavedFrame::Lookup lookup(source, line, column, callee ? callee->displayAtom() : nullptr, parentFrame, thisFrame.compartment()->principals); frame.set(getOrCreateSavedFrame(cx, lookup)); return frame.address() != nullptr; } SavedFrame * SavedStacks::getOrCreateSavedFrame(JSContext *cx, SavedFrame::Lookup &lookup) { SavedFrame::Set::AddPtr p = frames.lookupForAdd(lookup); if (p) return *p; Rooted<SavedFrame *> frame(cx, createFrameFromLookup(cx, lookup)); if (!frame) return nullptr; if (!frames.relookupOrAdd(p, lookup, frame)) return nullptr; return frame; } JSObject * SavedStacks::getOrCreateSavedFramePrototype(JSContext *cx) { if (savedFrameProto) return savedFrameProto; Rooted<GlobalObject *> global(cx, cx->compartment()->maybeGlobal()); if (!global) return nullptr; savedFrameProto = js_InitClass(cx, global, global->getOrCreateObjectPrototype(cx), &SavedFrame::class_, SavedFrame::construct, 0, SavedFrame::properties, SavedFrame::methods, nullptr, nullptr); // The only object with the SavedFrame::class_ that doesn't have a source // should be the prototype. savedFrameProto->setReservedSlot(SavedFrame::JSSLOT_SOURCE, NullValue()); return savedFrameProto; } SavedFrame * SavedStacks::createFrameFromLookup(JSContext *cx, SavedFrame::Lookup &lookup) { RootedObject proto(cx, getOrCreateSavedFramePrototype(cx)); if (!proto) return nullptr; JS_ASSERT(proto->compartment() == cx->compartment()); RootedObject global(cx, cx->compartment()->maybeGlobal()); if (!global) return nullptr; JS_ASSERT(global->compartment() == cx->compartment()); RootedObject frameObj(cx, NewObjectWithGivenProto(cx, &SavedFrame::class_, proto, global)); if (!frameObj) return nullptr; SavedFrame &f = frameObj->as<SavedFrame>(); f.initFromLookup(lookup); return &f; } } /* namespace js */
void js_register_PluginFacebookJS_PluginFacebook(JSContext *cx, JS::HandleObject global) { jsb_sdkbox_PluginFacebook_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_sdkbox_PluginFacebook_class->name = "PluginFacebook"; jsb_sdkbox_PluginFacebook_class->addProperty = JS_PropertyStub; jsb_sdkbox_PluginFacebook_class->delProperty = JS_DeletePropertyStub; jsb_sdkbox_PluginFacebook_class->getProperty = JS_PropertyStub; jsb_sdkbox_PluginFacebook_class->setProperty = JS_StrictPropertyStub; jsb_sdkbox_PluginFacebook_class->enumerate = JS_EnumerateStub; jsb_sdkbox_PluginFacebook_class->resolve = JS_ResolveStub; jsb_sdkbox_PluginFacebook_class->convert = JS_ConvertStub; jsb_sdkbox_PluginFacebook_class->finalize = js_PluginFacebookJS_PluginFacebook_finalize; jsb_sdkbox_PluginFacebook_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("fetchFriends", js_PluginFacebookJS_PluginFacebook_fetchFriends, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getAccessToken", js_PluginFacebookJS_PluginFacebook_getAccessToken, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getUserID", js_PluginFacebookJS_PluginFacebook_getUserID, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_PluginFacebookJS_PluginFacebook_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("logout", js_PluginFacebookJS_PluginFacebook_logout, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isLoggedIn", js_PluginFacebookJS_PluginFacebook_isLoggedIn, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("login", js_PluginFacebookJS_PluginFacebook_login, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getSDKVersion", js_PluginFacebookJS_PluginFacebook_getSDKVersion, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_sdkbox_PluginFacebook_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_sdkbox_PluginFacebook_class, dummy_constructor<sdkbox::PluginFacebook>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "PluginFacebook", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<sdkbox::PluginFacebook> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_sdkbox_PluginFacebook_class; p->proto = jsb_sdkbox_PluginFacebook_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
operator const SavedFrame::Lookup&() const { return ref; }
void js_register_cocos2dx_cocosAds_CocosAds(JSContext *cx, JS::HandleObject global) { jsb_CocosAds_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_CocosAds_class->name = "CocosAds"; jsb_CocosAds_class->addProperty = JS_PropertyStub; jsb_CocosAds_class->delProperty = JS_DeletePropertyStub; jsb_CocosAds_class->getProperty = JS_PropertyStub; jsb_CocosAds_class->setProperty = JS_StrictPropertyStub; jsb_CocosAds_class->enumerate = JS_EnumerateStub; jsb_CocosAds_class->resolve = JS_ResolveStub; jsb_CocosAds_class->convert = JS_ConvertStub; jsb_CocosAds_class->finalize = js_CocosAds_finalize; jsb_CocosAds_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("showBanner", js_cocos2dx_cocosAds_CocosAds_showBanner, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("removeInterstitialAdListener", js_cocos2dx_cocosAds_CocosAds_removeInterstitialAdListener, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("showInterstitial", js_cocos2dx_cocosAds_CocosAds_showInterstitial, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("hideBanner", js_cocos2dx_cocosAds_CocosAds_hideBanner, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_cocos2dx_cocosAds_CocosAds_init, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setInterstitialCloseMode", js_cocos2dx_cocosAds_CocosAds_setInterstitialCloseMode, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setInterstitialDisplayTime", js_cocos2dx_cocosAds_CocosAds_setInterstitialDisplayTime, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("hideInterstitial", js_cocos2dx_cocosAds_CocosAds_hideInterstitial, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("removeBannerAdListener", js_cocos2dx_cocosAds_CocosAds_removeBannerAdListener, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), //manual-binding JS_FN("addBannerAdListener", js_cocos2dx_cocosAds_CocosAds_addBannerAdListener, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("addInterstitialAdListener", js_cocos2dx_cocosAds_CocosAds_addInterstitialAdListener, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("getInstance", js_cocos2dx_cocosAds_CocosAds_getInstance, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_CocosAds_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_CocosAds_class, dummy_constructor<CocosAds>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "CocosAds", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<CocosAds> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_CocosAds_class; p->proto = jsb_CocosAds_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_cocos2dx_custom_BinaryReadUtil(JSContext *cx, JS::HandleObject global) { jsb_BinaryReadUtil_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_BinaryReadUtil_class->name = "BinaryReadUtil"; jsb_BinaryReadUtil_class->addProperty = JS_PropertyStub; jsb_BinaryReadUtil_class->delProperty = JS_DeletePropertyStub; jsb_BinaryReadUtil_class->getProperty = JS_PropertyStub; jsb_BinaryReadUtil_class->setProperty = JS_StrictPropertyStub; jsb_BinaryReadUtil_class->enumerate = JS_EnumerateStub; jsb_BinaryReadUtil_class->resolve = JS_ResolveStub; jsb_BinaryReadUtil_class->convert = JS_ConvertStub; jsb_BinaryReadUtil_class->finalize = js_BinaryReadUtil_finalize; jsb_BinaryReadUtil_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("readShort", js_cocos2dx_custom_BinaryReadUtil_readShort, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getFileLength", js_cocos2dx_custom_BinaryReadUtil_getFileLength, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readInt", js_cocos2dx_custom_BinaryReadUtil_readInt, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readBoolean", js_cocos2dx_custom_BinaryReadUtil_readBoolean, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readBool", js_cocos2dx_custom_BinaryReadUtil_readBool, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readLong", js_cocos2dx_custom_BinaryReadUtil_readLong, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readBytes", js_cocos2dx_custom_BinaryReadUtil_readBytes, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readByte", js_cocos2dx_custom_BinaryReadUtil_readByte, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readUtf", js_cocos2dx_custom_BinaryReadUtil_readUtf, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("close", js_cocos2dx_custom_BinaryReadUtil_close, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("readFloat", js_cocos2dx_custom_BinaryReadUtil_readFloat, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("create", js_cocos2dx_custom_BinaryReadUtil_create, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_BinaryReadUtil_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_BinaryReadUtil_class, dummy_constructor<BinaryReadUtil>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "BinaryReadUtil", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<BinaryReadUtil> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_BinaryReadUtil_class; p->proto = jsb_BinaryReadUtil_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_PluginGoogleAnalyticsJS_PluginGoogleAnalytics(JSContext *cx, JS::HandleObject global) { jsb_sdkbox_PluginGoogleAnalytics_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_sdkbox_PluginGoogleAnalytics_class->name = "PluginGoogleAnalytics"; jsb_sdkbox_PluginGoogleAnalytics_class->addProperty = JS_PropertyStub; jsb_sdkbox_PluginGoogleAnalytics_class->delProperty = JS_DeletePropertyStub; jsb_sdkbox_PluginGoogleAnalytics_class->getProperty = JS_PropertyStub; jsb_sdkbox_PluginGoogleAnalytics_class->setProperty = JS_StrictPropertyStub; jsb_sdkbox_PluginGoogleAnalytics_class->enumerate = JS_EnumerateStub; jsb_sdkbox_PluginGoogleAnalytics_class->resolve = JS_ResolveStub; jsb_sdkbox_PluginGoogleAnalytics_class->convert = JS_ConvertStub; jsb_sdkbox_PluginGoogleAnalytics_class->finalize = js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_finalize; jsb_sdkbox_PluginGoogleAnalytics_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("createTracker", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_createTracker, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setMetric", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_setMetric, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stopPeriodicalDispatch", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_stopPeriodicalDispatch, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setDryRun", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_setDryRun, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("logEvent", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_logEvent, 4, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("dispatchPeriodically", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_dispatchPeriodically, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("logScreen", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_logScreen, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("startSession", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_startSession, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("logException", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_logException, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUser", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_setUser, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stopSession", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_stopSession, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setDimension", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_setDimension, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("logSocial", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_logSocial, 3, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("enableAdvertisingTracking", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_enableAdvertisingTracking, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("dispatchHits", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_dispatchHits, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("enableTracker", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_enableTracker, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("logTiming", js_PluginGoogleAnalyticsJS_PluginGoogleAnalytics_logTiming, 4, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_sdkbox_PluginGoogleAnalytics_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_sdkbox_PluginGoogleAnalytics_class, dummy_constructor<sdkbox::PluginGoogleAnalytics>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "PluginGoogleAnalytics", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table #if (SDKBOX_COCOS_JSB_VERSION >= 2) JS::RootedObject proto(cx, jsb_sdkbox_PluginGoogleAnalytics_prototype); jsb_register_class<sdkbox::PluginGoogleAnalytics>(cx, jsb_sdkbox_PluginGoogleAnalytics_class, proto, JS::NullPtr()); #else TypeTest<sdkbox::PluginGoogleAnalytics> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_sdkbox_PluginGoogleAnalytics_class; p->proto = jsb_sdkbox_PluginGoogleAnalytics_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } #endif }
void js_register_PluginChartboostJS_PluginChartboost(JSContext *cx, JS::HandleObject global) { jsb_sdkbox_PluginChartboost_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_sdkbox_PluginChartboost_class->name = "PluginChartboost"; jsb_sdkbox_PluginChartboost_class->addProperty = JS_PropertyStub; jsb_sdkbox_PluginChartboost_class->delProperty = JS_DeletePropertyStub; jsb_sdkbox_PluginChartboost_class->getProperty = JS_PropertyStub; jsb_sdkbox_PluginChartboost_class->setProperty = JS_StrictPropertyStub; jsb_sdkbox_PluginChartboost_class->enumerate = JS_EnumerateStub; jsb_sdkbox_PluginChartboost_class->resolve = JS_ResolveStub; jsb_sdkbox_PluginChartboost_class->convert = JS_ConvertStub; jsb_sdkbox_PluginChartboost_class->finalize = js_PluginChartboostJS_PluginChartboost_finalize; jsb_sdkbox_PluginChartboost_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("handleOpenURL", js_PluginChartboostJS_PluginChartboost_handleOpenURL, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setAutoCacheAds", js_PluginChartboostJS_PluginChartboost_setAutoCacheAds, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setStatusBarBehavior", js_PluginChartboostJS_PluginChartboost_setStatusBarBehavior, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isAnyViewVisible", js_PluginChartboostJS_PluginChartboost_isAnyViewVisible, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getCustomID", js_PluginChartboostJS_PluginChartboost_getCustomID, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("show", js_PluginChartboostJS_PluginChartboost_show, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("cache", js_PluginChartboostJS_PluginChartboost_cache, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setShouldDisplayLoadingViewForMoreApps", js_PluginChartboostJS_PluginChartboost_setShouldDisplayLoadingViewForMoreApps, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setShouldRequestInterstitialsInFirstSession", js_PluginChartboostJS_PluginChartboost_setShouldRequestInterstitialsInFirstSession, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("didPassAgeGate", js_PluginChartboostJS_PluginChartboost_didPassAgeGate, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setShouldPrefetchVideoContent", js_PluginChartboostJS_PluginChartboost_setShouldPrefetchVideoContent, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_PluginChartboostJS_PluginChartboost_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getAutoCacheAds", js_PluginChartboostJS_PluginChartboost_getAutoCacheAds, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("closeImpression", js_PluginChartboostJS_PluginChartboost_closeImpression, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setCustomID", js_PluginChartboostJS_PluginChartboost_setCustomID, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isAvailable", js_PluginChartboostJS_PluginChartboost_isAvailable, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setShouldPauseClickForConfirmation", js_PluginChartboostJS_PluginChartboost_setShouldPauseClickForConfirmation, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_sdkbox_PluginChartboost_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_sdkbox_PluginChartboost_class, dummy_constructor<sdkbox::PluginChartboost>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "PluginChartboost", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<sdkbox::PluginChartboost> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_sdkbox_PluginChartboost_class; p->proto = jsb_sdkbox_PluginChartboost_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_cocos2dx_audioengine_AudioEngine(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_experimental_AudioEngine_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_experimental_AudioEngine_class->name = "AudioEngine"; jsb_cocos2d_experimental_AudioEngine_class->addProperty = JS_PropertyStub; jsb_cocos2d_experimental_AudioEngine_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_experimental_AudioEngine_class->getProperty = JS_PropertyStub; jsb_cocos2d_experimental_AudioEngine_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_experimental_AudioEngine_class->enumerate = JS_EnumerateStub; jsb_cocos2d_experimental_AudioEngine_class->resolve = JS_ResolveStub; jsb_cocos2d_experimental_AudioEngine_class->convert = JS_ConvertStub; jsb_cocos2d_experimental_AudioEngine_class->finalize = js_cocos2d_experimental_AudioEngine_finalize; jsb_cocos2d_experimental_AudioEngine_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("lazyInit", js_cocos2dx_audioengine_AudioEngine_lazyInit, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setCurrentTime", js_cocos2dx_audioengine_AudioEngine_setCurrentTime, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getVolume", js_cocos2dx_audioengine_AudioEngine_getVolume, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("uncache", js_cocos2dx_audioengine_AudioEngine_uncache, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("resumeAll", js_cocos2dx_audioengine_AudioEngine_resumeAll, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stopAll", js_cocos2dx_audioengine_AudioEngine_stopAll, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("pause", js_cocos2dx_audioengine_AudioEngine_pause, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("end", js_cocos2dx_audioengine_AudioEngine_end, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getMaxAudioInstance", js_cocos2dx_audioengine_AudioEngine_getMaxAudioInstance, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getCurrentTime", js_cocos2dx_audioengine_AudioEngine_getCurrentTime, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setMaxAudioInstance", js_cocos2dx_audioengine_AudioEngine_setMaxAudioInstance, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isLoop", js_cocos2dx_audioengine_AudioEngine_isLoop, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("pauseAll", js_cocos2dx_audioengine_AudioEngine_pauseAll, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("uncacheAll", js_cocos2dx_audioengine_AudioEngine_uncacheAll, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setVolume", js_cocos2dx_audioengine_AudioEngine_setVolume, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("preload", js_cocos2dx_audioengine_AudioEngine_preload, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("play2d", js_cocos2dx_audioengine_AudioEngine_play2d, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getState", js_cocos2dx_audioengine_AudioEngine_getState, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("resume", js_cocos2dx_audioengine_AudioEngine_resume, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stop", js_cocos2dx_audioengine_AudioEngine_stop, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getDuration", js_cocos2dx_audioengine_AudioEngine_getDuration, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setLoop", js_cocos2dx_audioengine_AudioEngine_setLoop, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getDefaultProfile", js_cocos2dx_audioengine_AudioEngine_getDefaultProfile, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFinishCallback", js_cocos2dx_audioengine_AudioEngine_setFinishCallback, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getProfile", js_cocos2dx_audioengine_AudioEngine_getProfile, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_cocos2d_experimental_AudioEngine_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_cocos2d_experimental_AudioEngine_class, empty_constructor, 0, properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "AudioEngine", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<cocos2d::experimental::AudioEngine> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_cocos2d_experimental_AudioEngine_class; p->proto = jsb_cocos2d_experimental_AudioEngine_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_PluginAdColonyJS_PluginAdColony(JSContext *cx, JS::HandleObject global) { jsb_sdkbox_PluginAdColony_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_sdkbox_PluginAdColony_class->name = "PluginAdColony"; jsb_sdkbox_PluginAdColony_class->addProperty = JS_PropertyStub; jsb_sdkbox_PluginAdColony_class->delProperty = JS_DeletePropertyStub; jsb_sdkbox_PluginAdColony_class->getProperty = JS_PropertyStub; jsb_sdkbox_PluginAdColony_class->setProperty = JS_StrictPropertyStub; jsb_sdkbox_PluginAdColony_class->enumerate = JS_EnumerateStub; jsb_sdkbox_PluginAdColony_class->resolve = JS_ResolveStub; jsb_sdkbox_PluginAdColony_class->convert = JS_ConvertStub; jsb_sdkbox_PluginAdColony_class->finalize = js_PluginAdColonyJS_PluginAdColony_finalize; jsb_sdkbox_PluginAdColony_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("getVideosPerReward", js_PluginAdColonyJS_PluginAdColony_getVideosPerReward, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getCustomID", js_PluginAdColonyJS_PluginAdColony_getCustomID, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("zoneStatusForZone", js_PluginAdColonyJS_PluginAdColony_zoneStatusForZone, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("show", js_PluginAdColonyJS_PluginAdColony_show, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getStatus", js_PluginAdColonyJS_PluginAdColony_getStatus, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("videoAdCurrentlyRunning", js_PluginAdColonyJS_PluginAdColony_videoAdCurrentlyRunning, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("turnAllAdsOff", js_PluginAdColonyJS_PluginAdColony_turnAllAdsOff, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getVendorIdentifier", js_PluginAdColonyJS_PluginAdColony_getVendorIdentifier, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserMetadata", js_PluginAdColonyJS_PluginAdColony_setUserMetadata, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_PluginAdColonyJS_PluginAdColony_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getUniqueDeviceID", js_PluginAdColonyJS_PluginAdColony_getUniqueDeviceID, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getAdvertisingIdentifier", js_PluginAdColonyJS_PluginAdColony_getAdvertisingIdentifier, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("userInterestedIn", js_PluginAdColonyJS_PluginAdColony_userInterestedIn, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setCustomID", js_PluginAdColonyJS_PluginAdColony_setCustomID, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("notifyIAPComplete", js_PluginAdColonyJS_PluginAdColony_notifyIAPComplete, 5, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getVideoCreditBalance", js_PluginAdColonyJS_PluginAdColony_getVideoCreditBalance, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("cancelAd", js_PluginAdColonyJS_PluginAdColony_cancelAd, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_sdkbox_PluginAdColony_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_sdkbox_PluginAdColony_class, dummy_constructor<sdkbox::PluginAdColony>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "PluginAdColony", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<sdkbox::PluginAdColony> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_sdkbox_PluginAdColony_class; p->proto = jsb_sdkbox_PluginAdColony_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_cocos2dx_experimental_video_VideoPlayer(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_experimental_ui_VideoPlayer_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_experimental_ui_VideoPlayer_class->name = "VideoPlayer"; jsb_cocos2d_experimental_ui_VideoPlayer_class->addProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->getProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->enumerate = JS_EnumerateStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->resolve = JS_ResolveStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->convert = JS_ConvertStub; jsb_cocos2d_experimental_ui_VideoPlayer_class->finalize = js_cocos2d_experimental_ui_VideoPlayer_finalize; jsb_cocos2d_experimental_ui_VideoPlayer_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("getFileName", js_cocos2dx_experimental_video_VideoPlayer_getFileName, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getURL", js_cocos2dx_experimental_video_VideoPlayer_getURL, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("play", js_cocos2dx_experimental_video_VideoPlayer_play, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setKeepAspectRatioEnabled", js_cocos2dx_experimental_video_VideoPlayer_setKeepAspectRatioEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stop", js_cocos2dx_experimental_video_VideoPlayer_stop, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFullScreenEnabled", js_cocos2dx_experimental_video_VideoPlayer_setFullScreenEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setFileName", js_cocos2dx_experimental_video_VideoPlayer_setFileName, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setURL", js_cocos2dx_experimental_video_VideoPlayer_setURL, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isKeepAspectRatioEnabled", js_cocos2dx_experimental_video_VideoPlayer_isKeepAspectRatioEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("onPlayEvent", js_cocos2dx_experimental_video_VideoPlayer_onPlayEvent, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isFullScreenEnabled", js_cocos2dx_experimental_video_VideoPlayer_isFullScreenEnabled, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isPlaying", js_cocos2dx_experimental_video_VideoPlayer_isPlaying, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("seekTo", js_cocos2dx_experimental_video_VideoPlayer_seekTo, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("create", js_cocos2dx_experimental_video_VideoPlayer_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_cocos2d_experimental_ui_VideoPlayer_prototype = JS_InitClass( cx, global, JS::RootedObject(cx, jsb_cocos2d_ui_Widget_prototype), jsb_cocos2d_experimental_ui_VideoPlayer_class, js_cocos2dx_experimental_video_VideoPlayer_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "VideoPlayer", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<cocos2d::experimental::ui::VideoPlayer> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_cocos2d_experimental_ui_VideoPlayer_class; p->proto = jsb_cocos2d_experimental_ui_VideoPlayer_prototype; p->parentProto = jsb_cocos2d_ui_Widget_prototype; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_cocos2dx_experimental_webView_WebView(JSContext *cx, JS::HandleObject global) { jsb_cocos2d_experimental_ui_WebView_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_cocos2d_experimental_ui_WebView_class->name = "WebView"; jsb_cocos2d_experimental_ui_WebView_class->addProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_WebView_class->delProperty = JS_DeletePropertyStub; jsb_cocos2d_experimental_ui_WebView_class->getProperty = JS_PropertyStub; jsb_cocos2d_experimental_ui_WebView_class->setProperty = JS_StrictPropertyStub; jsb_cocos2d_experimental_ui_WebView_class->enumerate = JS_EnumerateStub; jsb_cocos2d_experimental_ui_WebView_class->resolve = JS_ResolveStub; jsb_cocos2d_experimental_ui_WebView_class->convert = JS_ConvertStub; jsb_cocos2d_experimental_ui_WebView_class->finalize = js_cocos2d_experimental_ui_WebView_finalize; jsb_cocos2d_experimental_ui_WebView_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FN("canGoBack", js_cocos2dx_experimental_webView_WebView_canGoBack, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("loadHTMLString", js_cocos2dx_experimental_webView_WebView_loadHTMLString, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("goForward", js_cocos2dx_experimental_webView_WebView_goForward, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("goBack", js_cocos2dx_experimental_webView_WebView_goBack, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setScalesPageToFit", js_cocos2dx_experimental_webView_WebView_setScalesPageToFit, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getOnDidFailLoading", js_cocos2dx_experimental_webView_WebView_getOnDidFailLoading, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("loadFile", js_cocos2dx_experimental_webView_WebView_loadFile, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("loadURL", js_cocos2dx_experimental_webView_WebView_loadURL, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("evaluateJS", js_cocos2dx_experimental_webView_WebView_evaluateJS, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getOnJSCallback", js_cocos2dx_experimental_webView_WebView_getOnJSCallback, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("canGoForward", js_cocos2dx_experimental_webView_WebView_canGoForward, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getOnShouldStartLoading", js_cocos2dx_experimental_webView_WebView_getOnShouldStartLoading, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("stopLoading", js_cocos2dx_experimental_webView_WebView_stopLoading, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("reload", js_cocos2dx_experimental_webView_WebView_reload, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setJavascriptInterfaceScheme", js_cocos2dx_experimental_webView_WebView_setJavascriptInterfaceScheme, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getOnDidFinishLoading", js_cocos2dx_experimental_webView_WebView_getOnDidFinishLoading, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("create", js_cocos2dx_experimental_webView_WebView_create, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_cocos2d_experimental_ui_WebView_prototype = JS_InitClass( cx, global, JS::RootedObject(cx, jsb_cocos2d_ui_Widget_prototype), jsb_cocos2d_experimental_ui_WebView_class, js_cocos2dx_experimental_webView_WebView_constructor, 0, // constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "WebView", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table TypeTest<cocos2d::experimental::ui::WebView> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_cocos2d_experimental_ui_WebView_class; p->proto = jsb_cocos2d_experimental_ui_WebView_prototype; p->parentProto = jsb_cocos2d_ui_Widget_prototype; _js_global_type_map.insert(std::make_pair(typeName, p)); } }
void js_register_PluginAppodealJS_PluginAppodeal(JSContext *cx, JS::HandleObject global) { jsb_sdkbox_PluginAppodeal_class = (JSClass *)calloc(1, sizeof(JSClass)); jsb_sdkbox_PluginAppodeal_class->name = "PluginAppodeal"; jsb_sdkbox_PluginAppodeal_class->addProperty = JS_PropertyStub; jsb_sdkbox_PluginAppodeal_class->delProperty = JS_DeletePropertyStub; jsb_sdkbox_PluginAppodeal_class->getProperty = JS_PropertyStub; jsb_sdkbox_PluginAppodeal_class->setProperty = JS_StrictPropertyStub; jsb_sdkbox_PluginAppodeal_class->enumerate = JS_EnumerateStub; jsb_sdkbox_PluginAppodeal_class->resolve = JS_ResolveStub; jsb_sdkbox_PluginAppodeal_class->convert = JS_ConvertStub; jsb_sdkbox_PluginAppodeal_class->finalize = js_PluginAppodealJS_PluginAppodeal_finalize; jsb_sdkbox_PluginAppodeal_class->flags = JSCLASS_HAS_RESERVED_SLOTS(2); static JSPropertySpec properties[] = { JS_PSG("__nativeObj", js_is_native_obj, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_PS_END }; static JSFunctionSpec funcs[] = { JS_FS_END }; static JSFunctionSpec st_funcs[] = { JS_FN("isAutocacheEnabled", js_PluginAppodealJS_PluginAppodeal_isAutocacheEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("hideBanner", js_PluginAppodealJS_PluginAppodeal_hideBanner, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserGender", js_PluginAppodealJS_PluginAppodeal_setUserGender, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("getSDKVersion", js_PluginAppodealJS_PluginAppodeal_getSDKVersion, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("disableNetworkForAdType", js_PluginAppodealJS_PluginAppodeal_disableNetworkForAdType, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserSmokingAttitude", js_PluginAppodealJS_PluginAppodeal_setUserSmokingAttitude, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserInterests", js_PluginAppodealJS_PluginAppodeal_setUserInterests, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserBirthday", js_PluginAppodealJS_PluginAppodeal_setUserBirthday, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("init", js_PluginAppodealJS_PluginAppodeal_init, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("disableLocationPermissionCheck", js_PluginAppodealJS_PluginAppodeal_disableLocationPermissionCheck, 0, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserAlcoholAttitude", js_PluginAppodealJS_PluginAppodeal_setUserAlcoholAttitude, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserOccupation", js_PluginAppodealJS_PluginAppodeal_setUserOccupation, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("isReadyForShowWithStyle", js_PluginAppodealJS_PluginAppodeal_isReadyForShowWithStyle, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserVkId", js_PluginAppodealJS_PluginAppodeal_setUserVkId, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("cacheAd", js_PluginAppodealJS_PluginAppodeal_cacheAd, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setAutocache", js_PluginAppodealJS_PluginAppodeal_setAutocache, 2, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setDebugEnabled", js_PluginAppodealJS_PluginAppodeal_setDebugEnabled, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserAge", js_PluginAppodealJS_PluginAppodeal_setUserAge, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserEmail", js_PluginAppodealJS_PluginAppodeal_setUserEmail, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("confirmUsage", js_PluginAppodealJS_PluginAppodeal_confirmUsage, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserFacebookId", js_PluginAppodealJS_PluginAppodeal_setUserFacebookId, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("setUserRelationship", js_PluginAppodealJS_PluginAppodeal_setUserRelationship, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FN("showAd", js_PluginAppodealJS_PluginAppodeal_showAd, 1, JSPROP_PERMANENT | JSPROP_ENUMERATE), JS_FS_END }; jsb_sdkbox_PluginAppodeal_prototype = JS_InitClass( cx, global, JS::NullPtr(), // parent proto jsb_sdkbox_PluginAppodeal_class, dummy_constructor<sdkbox::PluginAppodeal>, 0, // no constructor properties, funcs, NULL, // no static properties st_funcs); // make the class enumerable in the registered namespace // bool found; //FIXME: Removed in Firefox v27 // JS_SetPropertyAttributes(cx, global, "PluginAppodeal", JSPROP_ENUMERATE | JSPROP_READONLY, &found); // add the proto and JSClass to the type->js info hash table #if (SDKBOX_COCOS_JSB_VERSION >= 2) JS::RootedObject proto(cx, jsb_sdkbox_PluginAppodeal_prototype); jsb_register_class<sdkbox::PluginAppodeal>(cx, jsb_sdkbox_PluginAppodeal_class, proto, JS::NullPtr()); #else TypeTest<sdkbox::PluginAppodeal> t; js_type_class_t *p; std::string typeName = t.s_name(); if (_js_global_type_map.find(typeName) == _js_global_type_map.end()) { p = (js_type_class_t *)malloc(sizeof(js_type_class_t)); p->jsclass = jsb_sdkbox_PluginAppodeal_class; p->proto = jsb_sdkbox_PluginAppodeal_prototype; p->parentProto = NULL; _js_global_type_map.insert(std::make_pair(typeName, p)); } #endif }