Bug 369410 - Provide API for wrapping XPCOM and Java objects. XULRunner only. Not part of default build.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user