Bug 369410 - Provide API for wrapping XPCOM and Java objects. XULRunner only. Not part of default build.

This commit is contained in:
pedemont@us.ibm.com
2007-02-13 18:55:34 +00:00
parent b747a5e015
commit 19530290c0
8 changed files with 199 additions and 7 deletions

View File

@@ -85,10 +85,12 @@ enum {
kFunc_FinalizeProxy,
kFunc_IsSameXPCOMObject,
kFunc_ReleaseProfileLock,
kFunc_GetNativeHandleFromAWT
kFunc_GetNativeHandleFromAWT,
kFunc_WrapJavaObject,
kFunc_WrapXPCOMObject
};
#define JX_NUM_FUNCS 16
#define JX_NUM_FUNCS 18
// Get path string from java.io.File object.
@@ -167,6 +169,10 @@ LoadXULMethods(JNIEnv* env, jobject aXPCOMPath, void** aFunctions)
(NSFuncPtr*) &aFunctions[kFunc_ReleaseProfileLock] },
{ "_Java_org_mozilla_xpcom_internal_MozillaImpl_getNativeHandleFromAWT@12",
(NSFuncPtr*) &aFunctions[kFunc_GetNativeHandleFromAWT] },
{ "_Java_org_mozilla_xpcom_internal_JavaXPCOMMethods_wrapJavaObject@16",
(NSFuncPtr*) &aFunctions[kFunc_WrapJavaObject] },
{ "_Java_org_mozilla_xpcom_internal_JavaXPCOMMethods_wrapXPCOMObject@16",
(NSFuncPtr*) &aFunctions[kFunc_WrapXPCOMObject] },
{ nsnull, nsnull }
};
#else
@@ -203,6 +209,10 @@ LoadXULMethods(JNIEnv* env, jobject aXPCOMPath, void** aFunctions)
(NSFuncPtr*) &aFunctions[kFunc_ReleaseProfileLock] },
{ "Java_org_mozilla_xpcom_internal_MozillaImpl_getNativeHandleFromAWT",
(NSFuncPtr*) &aFunctions[kFunc_GetNativeHandleFromAWT] },
{ "Java_org_mozilla_xpcom_internal_JavaXPCOMMethods_wrapJavaObject",
(NSFuncPtr*) &aFunctions[kFunc_WrapJavaObject] },
{ "Java_org_mozilla_xpcom_internal_JavaXPCOMMethods_wrapXPCOMObject",
(NSFuncPtr*) &aFunctions[kFunc_WrapXPCOMObject] },
{ nsnull, nsnull }
};
#endif
@@ -304,11 +314,18 @@ RegisterNativeMethods(JNIEnv* env, void** aFunctions)
(void*) aFunctions[kFunc_IsSameXPCOMObject] }
};
JNINativeMethod lockProxy_methods[] = {
JNINativeMethod lockProxy_methods[] = {
{ "releaseNative", "(J)V",
(void*) aFunctions[kFunc_ReleaseProfileLock] }
};
JNINativeMethod util_methods[] = {
{ "wrapJavaObject", "(Ljava/lang/Object;Ljava/lang/String;)J",
(void*) aFunctions[kFunc_WrapJavaObject] },
{ "wrapXPCOMObject", "(JLjava/lang/String;)Ljava/lang/Object;",
(void*) aFunctions[kFunc_WrapXPCOMObject] }
};
jint rc = -1;
jclass clazz = env->FindClass("org/mozilla/xpcom/internal/MozillaImpl");
if (clazz) {
@@ -349,6 +366,14 @@ RegisterNativeMethods(JNIEnv* env, void** aFunctions)
}
NS_ENSURE_TRUE(rc == 0, NS_ERROR_FAILURE);
rc = -1;
clazz = env->FindClass("org/mozilla/xpcom/internal/JavaXPCOMMethods");
if (clazz) {
rc = env->RegisterNatives(clazz, util_methods,
sizeof(util_methods) / sizeof(util_methods[0]));
}
NS_ENSURE_TRUE(rc == 0, NS_ERROR_FAILURE);
return NS_OK;
}