From 7b6c84617b9385244d466bdd339d1d5cc3a2c853 Mon Sep 17 00:00:00 2001 From: "beard%netscape.com" Date: Sun, 21 Mar 1999 19:53:28 +0000 Subject: [PATCH] added WrapJavaObject, which wraps a JNI global reference in a JSObject. --- modules/oji/public/nsILiveConnectManager.h | 11 +++++++++++ modules/oji/src/nsJVMManager.cpp | 16 ++++++++++++++++ modules/oji/src/nsJVMManager.h | 6 ++++++ 3 files changed, 33 insertions(+) diff --git a/modules/oji/public/nsILiveConnectManager.h b/modules/oji/public/nsILiveConnectManager.h index 56ee6909cb15..04fb3879d5f9 100644 --- a/modules/oji/public/nsILiveConnectManager.h +++ b/modules/oji/public/nsILiveConnectManager.h @@ -24,7 +24,12 @@ #ifndef nsILiveConnectManager_h___ #define nsILiveConnectManager_h___ +#ifndef nsISupports_h___ #include "nsISupports.h" +#endif +#ifndef JNI_H +#include "jni.h" +#endif // {d20c8081-cbcb-11d2-a5a0-e884aed9c9fc} #define NS_ILIVECONNECTMANAGER_IID \ @@ -65,6 +70,12 @@ public: */ NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject) = 0; + + /** + * Creates a JavaScript wrapper for a Java object. + */ + NS_IMETHOD + WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject) = 0; }; //////////////////////////////////////////////////////////////////////////////// diff --git a/modules/oji/src/nsJVMManager.cpp b/modules/oji/src/nsJVMManager.cpp index 8864737a6819..ccdd5f834388 100644 --- a/modules/oji/src/nsJVMManager.cpp +++ b/modules/oji/src/nsJVMManager.cpp @@ -268,6 +268,22 @@ nsJVMManager::InitLiveConnectClasses(JSContext* context, JSObject* globalObject) //////////////////////////////////////////////////////////////////////////////// +NS_METHOD +nsJVMManager::WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject) +{ + if (NULL == outJSObject) { + return NS_ERROR_NULL_POINTER; + } + jsval val; + if (JSJ_ConvertJavaObjectToJSValue(context, javaObject, &val)) { + *outJSObject = JSVAL_TO_OBJECT(val); + return NS_OK; + } + return NS_ERROR_FAILURE; +} + +//////////////////////////////////////////////////////////////////////////////// + NS_METHOD nsJVMManager::GetClasspathAdditions(const char* *result) { diff --git a/modules/oji/src/nsJVMManager.h b/modules/oji/src/nsJVMManager.h index 359cfb131c45..1229fb373178 100644 --- a/modules/oji/src/nsJVMManager.h +++ b/modules/oji/src/nsJVMManager.h @@ -158,6 +158,12 @@ public: NS_IMETHOD InitLiveConnectClasses(JSContext* context, JSObject* globalObject); + /** + * Creates a JavaScript wrapper for a Java object. + */ + NS_IMETHOD + WrapJavaObject(JSContext* context, jobject javaObject, JSObject* *outJSObject); + /* JVMMgr specific methods: */ /* ====> From here on are things only called by the browser, not the plugin... */