예제 #1
0
void FakeAudio::_js_register(JSContext* cx, JSObject* global)
{
	// create the class
	FakeAudio::js_class = {
		"FakeAudio", JSCLASS_HAS_PRIVATE,
		JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
		JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, basic_object_finalize,
		JSCLASS_NO_OPTIONAL_MEMBERS
	};
	static JSPropertySpec props[] = {
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, autoplay),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, loop),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, preload),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, muted),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, src),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, currentTime),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeAudio, volume),
		JS_BINDED_PROP_DEF_GETTER(FakeAudio, played),
		JS_BINDED_PROP_DEF_GETTER(FakeAudio, ended),
		JS_BINDED_PROP_DEF_GETTER(FakeAudio, duration),
		JS_BINDED_PROP_DEF_GETTER(FakeAudio, currentSrc),
		JS_BINDED_PROP_DEF_GETTER(FakeAudio, readyState),
		{0, 0, 0, 0, 0}
	};
	static JSFunctionSpec funcs[] = {
		JS_BINDED_FUNC_FOR_DEF(FakeAudio, canPlayType),
		JS_BINDED_FUNC_FOR_DEF(FakeAudio, load),
		JS_BINDED_FUNC_FOR_DEF(FakeAudio, play),
		JS_BINDED_FUNC_FOR_DEF(FakeAudio, pause),
		JS_BINDED_FUNC_FOR_DEF(FakeAudio, addEventListener),
		JS_FS_END
	};
	FakeAudio::js_parent = NULL;
	FakeAudio::js_proto = JS_InitClass(cx, global, NULL, &FakeAudio::js_class, FakeAudio::_js_constructor, 1, props, funcs, NULL, NULL);
}
예제 #2
0
void FakeCanvas::_js_register(JSContext* cx, JSObject* global)
{
	// create the class
	FakeCanvas::js_class = {
		"FakeCanvas", JSCLASS_HAS_PRIVATE,
		JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub,
		JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, basic_object_finalize,
		JSCLASS_NO_OPTIONAL_MEMBERS
	};
	static JSPropertySpec props[] = {
		JS_BINDED_PROP_DEF_GETTER(FakeCanvas, clientWidth),
		JS_BINDED_PROP_DEF_GETTER(FakeCanvas, clientHeight),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeCanvas, width),
		JS_BINDED_PROP_DEF_ACCESSOR(FakeCanvas, height),
		{0, 0, 0, 0, 0}
	};
	static JSFunctionSpec funcs[] = {
		JS_BINDED_FUNC_FOR_DEF(FakeCanvas, getContext),
		JS_BINDED_FUNC_FOR_DEF(FakeCanvas, getBoundingClientRect),
		JS_BINDED_FUNC_FOR_DEF(FakeCanvas, addEventListener),
		JS_FS_END
	};
	FakeCanvas::js_parent = NULL;
	FakeCanvas::js_proto = JS_InitClass(cx, global, NULL, &FakeCanvas::js_class, FakeCanvas::_js_constructor, 1, props, funcs, NULL, NULL);
}
/**
 *  @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);
}