diff --git a/mozilla/js/src/liveconnect/jsj_JSObject.c b/mozilla/js/src/liveconnect/jsj_JSObject.c index 1260bccf19d..070aa757cb1 100644 --- a/mozilla/js/src/liveconnect/jsj_JSObject.c +++ b/mozilla/js/src/liveconnect/jsj_JSObject.c @@ -641,7 +641,7 @@ done: JSJavaThreadState * -jsj_enter_js(JNIEnv *jEnv, jobject java_wrapper_obj, +jsj_enter_js(JNIEnv *jEnv, void* applet_obj, jobject java_wrapper_obj, JSContext **cxp, JSObject **js_objp, JSErrorReporter *old_error_reporterp, void **pNSIPrincipaArray, int numPrincipals, void *pNSISecurityContext) { @@ -683,6 +683,10 @@ jsj_enter_js(JNIEnv *jEnv, jobject java_wrapper_obj, if (!jsj_env) goto error; + /* If a JSContext was passed by caller, use it. */ + if (jsj_env->cx == NULL) + jsj_env->cx = *cxp; + /* Get the JSContext that we're supposed to use for this Java thread */ cx = jsj_env->cx; if (!cx) { @@ -690,7 +694,14 @@ jsj_enter_js(JNIEnv *jEnv, jobject java_wrapper_obj, Java and back into JS. Invoke a callback to obtain/create a JSContext for us to use. */ if (JSJ_callbacks->map_jsj_thread_to_js_context) { - cx = JSJ_callbacks->map_jsj_thread_to_js_context(jsj_env, jEnv, &err_msg); +#ifdef OJI + cx = JSJ_callbacks->map_jsj_thread_to_js_context(jsj_env, + applet_obj, + jEnv, &err_msg); +#else + cx = JSJ_callbacks->map_jsj_thread_to_js_context(jsj_env, + jEnv, &err_msg); +#endif if (!cx) goto error; } else { @@ -812,7 +823,7 @@ Java_netscape_javascript_JSObject_getMember(JNIEnv *jEnv, jobject java_wrapper_obj, jstring property_name_jstr) { - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val; int dummy_cost; @@ -824,7 +835,7 @@ Java_netscape_javascript_JSObject_getMember(JNIEnv *jEnv, jboolean is_copy; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return NULL; @@ -870,7 +881,7 @@ Java_netscape_javascript_JSObject_getSlot(JNIEnv *jEnv, jobject java_wrapper_obj, jint slot) { - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val; int dummy_cost; @@ -879,7 +890,7 @@ Java_netscape_javascript_JSObject_getSlot(JNIEnv *jEnv, jobject member; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return NULL; @@ -908,7 +919,7 @@ Java_netscape_javascript_JSObject_setMember(JNIEnv *jEnv, jstring property_name_jstr, jobject java_obj) { - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val; const jchar *property_name_ucs2; @@ -917,7 +928,7 @@ Java_netscape_javascript_JSObject_setMember(JNIEnv *jEnv, jboolean is_copy; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return; @@ -958,13 +969,13 @@ Java_netscape_javascript_JSObject_setSlot(JNIEnv *jEnv, jint slot, jobject java_obj) { - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val; JSErrorReporter saved_reporter; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return; @@ -986,7 +997,7 @@ Java_netscape_javascript_JSObject_removeMember(JNIEnv *jEnv, jobject java_wrapper_obj, jstring property_name_jstr) { - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val; const jchar *property_name_ucs2; @@ -995,7 +1006,7 @@ Java_netscape_javascript_JSObject_removeMember(JNIEnv *jEnv, jboolean is_copy; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return; @@ -1032,7 +1043,7 @@ Java_netscape_javascript_JSObject_call(JNIEnv *jEnv, jobject java_wrapper_obj, { int i, argc, arg_num; jsval *argv; - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val, function_val; int dummy_cost; @@ -1044,7 +1055,7 @@ Java_netscape_javascript_JSObject_call(JNIEnv *jEnv, jobject java_wrapper_obj, jobject result; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return NULL; @@ -1120,7 +1131,7 @@ Java_netscape_javascript_JSObject_eval(JNIEnv *jEnv, { const char *codebase; JSPrincipals *principals; - JSContext *cx; + JSContext *cx = NULL; JSBool eval_succeeded; JSObject *js_obj; jsval js_val; @@ -1133,7 +1144,7 @@ Java_netscape_javascript_JSObject_eval(JNIEnv *jEnv, jobject result; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return NULL; @@ -1189,13 +1200,13 @@ Java_netscape_javascript_JSObject_toString(JNIEnv *jEnv, jobject java_wrapper_obj) { jstring result; - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; JSString *jsstr; JSErrorReporter saved_reporter; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, NULL, java_wrapper_obj, &cx, &js_obj, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return NULL; @@ -1223,7 +1234,7 @@ Java_netscape_javascript_JSObject_getWindow(JNIEnv *jEnv, jobject java_applet_obj) { char *err_msg; - JSContext *cx; + JSContext *cx = NULL; JSObject *js_obj; jsval js_val; int dummy_cost; @@ -1232,7 +1243,7 @@ Java_netscape_javascript_JSObject_getWindow(JNIEnv *jEnv, jobject java_obj; JSJavaThreadState *jsj_env; - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_reporter, NULL, 0, NULL); + jsj_env = jsj_enter_js(jEnv, java_applet_obj, NULL, &cx, NULL, &saved_reporter, NULL, 0, NULL); if (!jsj_env) return NULL; diff --git a/mozilla/js/src/liveconnect/jsj_class.c b/mozilla/js/src/liveconnect/jsj_class.c index 53dcdb34984..9a982d39054 100644 --- a/mozilla/js/src/liveconnect/jsj_class.c +++ b/mozilla/js/src/liveconnect/jsj_class.c @@ -411,7 +411,14 @@ jsj_DiscardJavaClassReflections(JNIEnv *jEnv) Java and back into JS. Invoke a callback to obtain/create a JSContext for us to use. */ if (JSJ_callbacks->map_jsj_thread_to_js_context) { - cx = JSJ_callbacks->map_jsj_thread_to_js_context(jsj_env, jEnv, &err_msg); +#ifdef OJI + cx = JSJ_callbacks->map_jsj_thread_to_js_context(jsj_env, + NULL /* FIXME: What should this argument be ? */ + jEnv, &err_msg); +#else + cx = JSJ_callbacks->map_jsj_thread_to_js_context(jsj_env, + jEnv, &err_msg); +#endif JS_ASSERT(cx); if (!cx) return; diff --git a/mozilla/js/src/liveconnect/jsj_private.h b/mozilla/js/src/liveconnect/jsj_private.h index 1bfcc5628d9..2e74d02612a 100644 --- a/mozilla/js/src/liveconnect/jsj_private.h +++ b/mozilla/js/src/liveconnect/jsj_private.h @@ -359,7 +359,7 @@ jsj_ConvertJavaObjectToJSBoolean(JSContext *cx, JNIEnv *jEnv, JavaClassDescriptor *class_descriptor, jobject java_obj, jsval *vp); extern JSJavaThreadState * -jsj_enter_js(JNIEnv *jEnv, jobject java_wrapper_obj, +jsj_enter_js(JNIEnv *jEnv, void* java_applet_obj, jobject java_wrapper_obj, JSContext **cxp, JSObject **js_objp, JSErrorReporter *old_error_reporterp, void **pNSIPrincipaArray, int numPrincipals, void *pNSISecurityContext); diff --git a/mozilla/js/src/liveconnect/jsjava.h b/mozilla/js/src/liveconnect/jsjava.h index 244be90c262..cac51ff5a88 100644 --- a/mozilla/js/src/liveconnect/jsjava.h +++ b/mozilla/js/src/liveconnect/jsjava.h @@ -78,6 +78,9 @@ typedef struct JSJCallbacks { callback can call JSJ_SetJSContextForJavaThread() to avoid any further callbacks of this type for this Java thread. */ JSContext * (*map_jsj_thread_to_js_context)(JSJavaThreadState *jsj_env, +#ifdef OJI + void *java_applet_obj, +#endif JNIEnv *jEnv, char **errp); diff --git a/mozilla/js/src/liveconnect/makefile.win b/mozilla/js/src/liveconnect/makefile.win index 44357650a1f..d248d2b2d59 100644 --- a/mozilla/js/src/liveconnect/makefile.win +++ b/mozilla/js/src/liveconnect/makefile.win @@ -54,7 +54,7 @@ DEFFILE = $(DLLNAME).def LLIBS=$(LIBNSPR) $(DIST)\lib\js$(MOZ_BITS)$(VERSION_NUMBER).lib \ !ifdef MOZ_OJI - $(DIST)\lib\xpcom32.lib \ + $(DIST)\lib\xpcom.lib \ !endif $(NULL) @@ -96,7 +96,7 @@ OBJS= \ #// install headers #// #//------------------------------------------------------------------------ -INSTALL_DIR=$(PUBLIC)\js +INSTALL_DIR=$(XPDIST)\include INSTALL_FILE_LIST= \ jsjava.h \ !ifdef MOZ_OJI diff --git a/mozilla/js/src/liveconnect/nsCLiveconnect.cpp b/mozilla/js/src/liveconnect/nsCLiveconnect.cpp index 7210911892f..123baa66245 100644 --- a/mozilla/js/src/liveconnect/nsCLiveconnect.cpp +++ b/mozilla/js/src/liveconnect/nsCLiveconnect.cpp @@ -99,10 +99,10 @@ NS_METHOD nsCLiveconnect::GetMember(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize length, void* principalsArray[], int numPrincipals, void *pNSISecurityContext, jobject *pjobj) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jobject member = NULL; jsval js_val; int dummy_cost = 0; @@ -113,7 +113,7 @@ nsCLiveconnect::GetMember(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize l { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -153,10 +153,10 @@ NS_METHOD nsCLiveconnect::GetSlot(JNIEnv *jEnv, jsobject obj, jint slot, void* principalsArray[], int numPrincipals, void *pNSISecurityContext, jobject *pjobj) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jobject member = NULL; jsval js_val; int dummy_cost = 0; @@ -167,7 +167,7 @@ nsCLiveconnect::GetSlot(JNIEnv *jEnv, jsobject obj, jint slot, void* principalsA { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -201,10 +201,10 @@ NS_METHOD nsCLiveconnect::SetMember(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize length, jobject java_obj, void* principalsArray[], int numPrincipals, void *pNSISecurityContext) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jsval js_val; JSErrorReporter saved_state = NULL; @@ -213,7 +213,7 @@ nsCLiveconnect::SetMember(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize l return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -247,10 +247,10 @@ NS_METHOD nsCLiveconnect::SetSlot(JNIEnv *jEnv, jsobject obj, jint slot, jobject java_obj, void* principalsArray[], int numPrincipals, void *pNSISecurityContext) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jsval js_val; JSErrorReporter saved_state = NULL; @@ -258,7 +258,7 @@ nsCLiveconnect::SetSlot(JNIEnv *jEnv, jsobject obj, jint slot, jobject java_obj, { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -283,10 +283,10 @@ NS_METHOD nsCLiveconnect::RemoveMember(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize length, void* principalsArray[], int numPrincipals, void *pNSISecurityContext) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jsval js_val; JSErrorReporter saved_state = NULL; @@ -294,7 +294,7 @@ nsCLiveconnect::RemoveMember(JNIEnv *jEnv, jsobject obj, const jchar *name, jsiz { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -327,10 +327,10 @@ nsCLiveconnect::Call(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize length int argc = 0; int arg_num = 0; jsval *argv = 0; - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jsval js_val; jsval function_val = 0; int dummy_cost = 0; @@ -342,7 +342,7 @@ nsCLiveconnect::Call(JNIEnv *jEnv, jsobject obj, const jchar *name, jsize length { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -402,10 +402,10 @@ NS_METHOD nsCLiveconnect::Eval(JNIEnv *jEnv, jsobject obj, const jchar *script, jsize length, void* principalsArray[], int numPrincipals, void *pNSISecurityContext, jobject *pjobj) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; jsval js_val; int dummy_cost = 0; JSBool dummy_bool = PR_FALSE; @@ -419,7 +419,7 @@ nsCLiveconnect::Eval(JNIEnv *jEnv, jsobject obj, const jchar *script, jsize leng { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; @@ -466,14 +466,14 @@ done: * in which a applet/bean resides. */ NS_METHOD -nsCLiveconnect::GetWindow(JNIEnv *jEnv, void *pJavaObject, void* principalsArray[], +nsCLiveconnect::GetWindow(JNIEnv *jEnv, void *java_applet_obj, void* principalsArray[], int numPrincipals, void *pNSISecurityContext, jsobject *pobj) { char *err_msg = NULL; JSContext *cx = NULL; JSObject *js_obj = NULL; JSErrorReporter saved_state = NULL; - jobject java_obj = NULL; + jobject java_obj = NULL; JSJavaThreadState *jsj_env = NULL; int dummy_cost = 0; JSBool dummy_bool = PR_FALSE; @@ -482,13 +482,13 @@ nsCLiveconnect::GetWindow(JNIEnv *jEnv, void *pJavaObject, void* principalsArra { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); + jsj_env = jsj_enter_js(jEnv, java_applet_obj, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, pNSISecurityContext); if (!jsj_env) return NS_ERROR_FAILURE; err_msg = NULL; java_obj = NULL; - js_obj = JSJ_callbacks->map_java_object_to_js_object(jEnv, pJavaObject, &err_msg); + js_obj = JSJ_callbacks->map_java_object_to_js_object(jEnv, java_applet_obj, &err_msg); if (!js_obj) { if (err_msg) { JS_ReportError(cx, err_msg); @@ -546,10 +546,10 @@ nsCLiveconnect::FinalizeJSObject(JNIEnv *jEnv, jsobject obj) NS_METHOD nsCLiveconnect::ToString(JNIEnv *jEnv, jsobject obj, jstring *pjstring) { - JSContext *cx = NULL; JSJavaThreadState *jsj_env = NULL; JSObjectHandle *handle = (JSObjectHandle*)obj; JSObject *js_obj = handle->js_obj; + JSContext *cx = handle->cx; JSErrorReporter saved_state = NULL; jstring result = NULL; JSString *jsstr = NULL; @@ -559,7 +559,7 @@ nsCLiveconnect::ToString(JNIEnv *jEnv, jsobject obj, jstring *pjstring) { return NS_ERROR_FAILURE; } - jsj_env = jsj_enter_js(jEnv, NULL, &cx, NULL, &saved_state, NULL, 0, NULL ); + jsj_env = jsj_enter_js(jEnv, NULL, NULL, &cx, NULL, &saved_state, NULL, 0, NULL ); if (!jsj_env) return NS_ERROR_FAILURE;