JNIEXPORT jintLong JNICALL XPCOM_NATIVE(_1nsIScriptGlobalObject24_1GetScriptContext) (JNIEnv *env, jclass that, jintLong arg0) { jintLong rc = 0; XPCOM_NATIVE_ENTER(env, that, _1nsIScriptGlobalObject24_1GetScriptContext_FUNC); rc = (jintLong)((nsIScriptGlobalObject *)arg0)->GetScriptContext(); XPCOM_NATIVE_EXIT(env, that, _1nsIScriptGlobalObject24_1GetScriptContext_FUNC); return rc; }
JNIEXPORT jintLong JNICALL XPCOM_NATIVE(CALLBACK_1GetScriptableFlags24) (JNIEnv *env, jclass that, jintLong arg0) { jintLong rc = 0; XPCOM_NATIVE_ENTER(env, that, CALLBACK_1GetScriptableFlags24_FUNC); rc = (jintLong)CALLBACK_GetScriptableFlags24(arg0); XPCOM_NATIVE_EXIT(env, that, CALLBACK_1GetScriptableFlags24_FUNC); return rc; }
JNIEXPORT jintLong JNICALL XPCOM_NATIVE(_1JS_1GetGlobalForScopeChain24) (JNIEnv *env, jclass that, jintLong arg0) { jintLong result = 0; XPCOM_NATIVE_ENTER(env, that, _1JS_1GetGlobalForScopeChain24_FUNC); result = (jintLong)JS_GetGlobalForScopeChain((JSContext*)arg0); XPCOM_NATIVE_EXIT(env, that, _1JS_1GetGlobalForScopeChain24_FUNC); return result; }
JNIEXPORT jint JNICALL XPCOM_NATIVE(_1nsIScriptGlobalObject24_1EnsureScriptEnvironment) (JNIEnv *env, jclass that, jintLong arg0) { jint rc = 0; XPCOM_NATIVE_ENTER(env, that, _1nsIScriptGlobalObject24_1EnsureScriptEnvironment_FUNC); rc = (jint)((nsIScriptGlobalObject *)arg0)->EnsureScriptEnvironment(); XPCOM_NATIVE_EXIT(env, that, _1nsIScriptGlobalObject24_1EnsureScriptEnvironment_FUNC); return rc; }
JNIEXPORT jintLong JNICALL XPCOM_NATIVE(CALLBACK_1JSNative) (JNIEnv *env, jclass that, jintLong arg0) { jintLong rc = 0; XPCOM_NATIVE_ENTER(env, that, CALLBACK_1JSNative_FUNC); rc = (jintLong)CALLBACK_JSNative(arg0); XPCOM_NATIVE_EXIT(env, that, CALLBACK_1JSNative_FUNC); return rc; }
JNIEXPORT jint JNICALL XPCOM_NATIVE(_1JS_1EvaluateUCScriptForPrincipals) (JNIEnv *env, jclass that, jbyteArray mozillaPath, jintLong arg0, jintLong arg1, jintLong arg2, jcharArray arg3, jint arg4, jbyteArray arg5, jint arg6, jintLongArray arg7) { jbyte *lpmozillaPath=NULL; jchar *lparg3=NULL; jbyte *lparg5=NULL; jintLong *lparg7=NULL; jint rc = 0; XPCOM_NATIVE_ENTER(env, that, _1JS_1EvaluateUCScriptForPrincipals_FUNC); if (mozillaPath) if ((lpmozillaPath = env->GetByteArrayElements(mozillaPath, NULL)) == NULL) goto fail; if (arg3) if ((lparg3 = env->GetCharArrayElements(arg3, NULL)) == NULL) goto fail; if (arg5) if ((lparg5 = env->GetByteArrayElements(arg5, NULL)) == NULL) goto fail; if (arg7) if ((lparg7 = env->GetIntLongArrayElements(arg7, NULL)) == NULL) goto fail; /* rc = (jint)JS_EvaluateUCScriptForPrincipals(arg0, arg1, arg2, lparg3, arg4, lparg5, arg6, lparg7); */ { #ifdef _WIN32 static int initialized = 0; static FARPROC fp = NULL; if (!initialized) { HMODULE hm = LoadLibrary((const char *)lpmozillaPath); if (hm) { fp = GetProcAddress(hm, "JS_EvaluateUCScriptForPrincipals"); } initialized = 1; } if (fp) { rc = (jint)((jint (*)(jintLong, jintLong, jintLong, jchar *, jint, jbyte *, jint, jintLong *))fp)(arg0, arg1, arg2, lparg3, arg4, lparg5, arg6, lparg7); } #else #define CALLING_CONVENTION static int initialized = 0; static void *fp = NULL; if (!initialized) { void* handle = dlopen((const char *)lpmozillaPath, RTLD_LAZY); if (handle) { fp = dlsym(handle, "JS_EvaluateUCScriptForPrincipals"); } initialized = 1; } if (fp) { rc = (jint)((jint (CALLING_CONVENTION*)(jintLong, jintLong, jintLong, jchar *, jint, jbyte *, jint, jintLong *))fp)(arg0, arg1, arg2, lparg3, arg4, lparg5, arg6, lparg7); } #endif /* _WIN32 */ } fail: if (arg7 && lparg7) env->ReleaseIntLongArrayElements(arg7, lparg7, 0); if (arg5 && lparg5) env->ReleaseByteArrayElements(arg5, lparg5, 0); if (arg3 && lparg3) env->ReleaseCharArrayElements(arg3, lparg3, 0); if (mozillaPath && lpmozillaPath) env->ReleaseByteArrayElements(mozillaPath, lpmozillaPath, 0); XPCOM_NATIVE_EXIT(env, that, _1JS_1EvaluateUCScriptForPrincipals_FUNC); return rc; }
JNIEXPORT jint JNICALL XPCOM_NATIVE(_1JS_1EvaluateUCScriptForPrincipals24) (JNIEnv *env, jclass that, jbyteArray mozillaPath, jintLong arg0, jintLong arg1, jintLong arg2, jcharArray arg3, jint arg4, jbyteArray arg5, jint arg6, jintLong arg7) { jbyte *lpmozillaPath=NULL; jchar *lparg3=NULL; jbyte *lparg5=NULL; jint rc = 0; XPCOM_NATIVE_ENTER(env, that, _1JS_1EvaluateUCScriptForPrincipals24_FUNC); if (mozillaPath) if ((lpmozillaPath = env->GetByteArrayElements(mozillaPath, NULL)) == NULL) goto fail; if (arg3) if ((lparg3 = env->GetCharArrayElements(arg3, NULL)) == NULL) goto fail; if (arg5) if ((lparg5 = env->GetByteArrayElements(arg5, NULL)) == NULL) goto fail; /* rc = (jint)JS_EvaluateUCScriptForPrincipals(arg0, arg1, arg2, lparg3, arg4, lparg5, arg6, arg7); */ { /* * As of XULRunner 24 an AutoCxPusher-derived instance must be used to push the current JS context * on the stack, see https://bugzilla.mozilla.org/show_bug.cgi?id=911161. In earlier supported * XULRunner releases this was done with an nsIJSContextStack. This JSAutoCompartment creation must * happen on the execution stack, and therefore cannot be invoked dynamically. */ JSAutoCompartment ac((JSContext*)arg0, (JSObject*)arg1); #ifdef _WIN32 /* * VC++6.0 cannot create a lookup symbol for JS_EvaluateUCScriptForPrincipals() that matches the symbol * exported by XULRunner 24's mozjs library because VC++6.0 does not define wchar_t as a native type. * The workaround is to dynamically look up the function's mangled name and invoke it directly. */ static int initialized = 0; static FARPROC fp = NULL; if (!initialized) { HMODULE hm = LoadLibrary((const char *)lpmozillaPath); if (hm) { fp = GetProcAddress(hm, "?JS_EvaluateUCScriptForPrincipals@@YAHPAUJSContext@@PAVJSObject@@PAUJSPrincipals@@PB_WIPBDIPAVValue@JS@@@Z"); } initialized = 1; } if (fp) { rc = (jint)((jint (*)(jintLong, jintLong, jintLong, jchar *, jint, jbyte *, jint, jintLong))fp)(arg0, arg1, arg2, lparg3, arg4, lparg5, arg6, arg7); } #else rc = (jint)JS_EvaluateUCScriptForPrincipals((JSContext*)arg0, (JSObject*)arg1, (JSPrincipals*)arg2, (const jschar *)lparg3, arg4, (const char*)lparg5, arg6, (JS::Value*)arg7); #endif /* _WIN32 */ } fail: if (arg5 && lparg5) env->ReleaseByteArrayElements(arg5, lparg5, 0); if (arg3 && lparg3) env->ReleaseCharArrayElements(arg3, lparg3, 0); if (mozillaPath && lpmozillaPath) env->ReleaseByteArrayElements(mozillaPath, lpmozillaPath, 0); XPCOM_NATIVE_EXIT(env, that, _1JS_1EvaluateUCScriptForPrincipals_FUNC); return rc; }
JNIEXPORT jintLong JNICALL XPCOM_NATIVE(_1JS_1DefineFunction24) (JNIEnv *env, jclass that, jintLong arg0, jintLong arg1, jbyteArray arg2, jintLong arg3, jint arg4, jint arg5) { jbyte *lparg2=NULL; jintLong result = 0; XPCOM_NATIVE_ENTER(env, that, _1JS_1DefineFunction24_FUNC); if (arg2) if ((lparg2 = env->GetByteArrayElements(arg2, NULL)) == NULL) goto fail; result = (jintLong)JS_DefineFunction((JSContext *)arg0, (JSObject *)arg1, (const char *)lparg2, (JSNative)arg3, arg4, arg5); fail: if (arg2 && lparg2) env->ReleaseByteArrayElements(arg2, lparg2, 0); XPCOM_NATIVE_EXIT(env, that, _1JS_1DefineFunction24_FUNC); return result; }
JNIEXPORT jintLong JNICALL XPCOM_NATIVE(_1JS_1DefineFunction) (JNIEnv *env, jclass that, jbyteArray mozillaPath, jintLong arg0, jintLong arg1, jbyteArray arg2, jintLong arg3, jint arg4, jint arg5) { jbyte *lpmozillaPath=NULL; jbyte *lparg2=NULL; jintLong rc = 0; XPCOM_NATIVE_ENTER(env, that, _1JS_1DefineFunction_FUNC); if (mozillaPath) if ((lpmozillaPath = env->GetByteArrayElements(mozillaPath, NULL)) == NULL) goto fail; if (arg2) if ((lparg2 = env->GetByteArrayElements(arg2, NULL)) == NULL) goto fail; /* rc = (jintLong)JS_DefineFunction(arg0, arg1, lparg2, arg3, arg4, arg5); */ { #ifdef _WIN32 static int initialized = 0; static FARPROC fp = NULL; if (!initialized) { HMODULE hm = LoadLibrary((const char *)lpmozillaPath); if (hm) { fp = GetProcAddress(hm, "JS_DefineFunction"); } initialized = 1; } if (fp) { rc = (jintLong)((jintLong (*)(jintLong, jintLong, jbyte *, jintLong, jint, jint))fp)(arg0, arg1, lparg2, arg3, arg4, arg5); } #else #define CALLING_CONVENTION static int initialized = 0; static void *fp = NULL; if (!initialized) { void* handle = dlopen((const char *)lpmozillaPath, RTLD_LAZY); if (handle) { fp = dlsym(handle, "JS_DefineFunction"); } initialized = 1; } if (fp) { rc = (jintLong)((jintLong (CALLING_CONVENTION*)(jintLong, jintLong, jbyte *, jintLong, jint, jint))fp)(arg0, arg1, lparg2, arg3, arg4, arg5); } #endif /* _WIN32 */ } fail: if (arg2 && lparg2) env->ReleaseByteArrayElements(arg2, lparg2, 0); if (mozillaPath && lpmozillaPath) env->ReleaseByteArrayElements(mozillaPath, lpmozillaPath, 0); XPCOM_NATIVE_EXIT(env, that, _1JS_1DefineFunction_FUNC); return rc; }
JNIEXPORT jint JNICALL XPCOM_NATIVE(strlen_1PRUnichar) (JNIEnv *env, jclass that, jintLong arg0) { jint rc; XPCOM_NATIVE_ENTER(env, that, strlen_1PRUnichar_FUNC); { const PRUnichar* lparg0 = NULL; if (arg0) lparg0 = (const PRUnichar *)arg0; PRUint32 len = 0; if (lparg0 != NULL) while (*lparg0++ != 0) len++; rc = (jint)len; } XPCOM_NATIVE_EXIT(env, that, strlen_1PRUnichar_FUNC); return rc; }
JNIEXPORT jint JNICALL XPCOM_NATIVE(_1NS_1Free) (JNIEnv *env, jclass that, jbyteArray mozillaPath, jintLong arg0) { jbyte *lpmozillaPath=NULL; jint rc = 0; XPCOM_NATIVE_ENTER(env, that, _1NS_1Free_FUNC); if (mozillaPath) if ((lpmozillaPath = env->GetByteArrayElements(mozillaPath, NULL)) == NULL) goto fail; /* NS_Free((void*)arg0); */ { #ifdef _WIN32 XPCOM_LOAD_FUNCTION(fp, NS_Free) if (fp) { ((jint (*)(void *))fp)((void *)arg0); rc = 1; } #else #define CALLING_CONVENTION static int initialized = 0; static void *fp = NULL; if (!initialized) { void* handle = dlopen((const char *)lpmozillaPath, RTLD_LAZY); if (handle) { fp = dlsym(handle, "NS_Free"); } initialized = 1; } if (fp) { ((jint (CALLING_CONVENTION*)(void *))fp)((void *)arg0); rc = 1; } #endif /* _WIN32 */ } fail: if (mozillaPath && lpmozillaPath) env->ReleaseByteArrayElements(mozillaPath, lpmozillaPath, 0); XPCOM_NATIVE_EXIT(env, that, _1NS_1Free_FUNC); return rc; }