Bug 353693 - nsJavaXPTCStub should use Java class' loader for loading Mozilla classes. r=apeller, a=mconnor. XULRunner only.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_8_BRANCH@213078 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2006-10-03 20:02:15 +00:00
parent 11f44d06fa
commit 38493d58c0
7 changed files with 96 additions and 19 deletions

View File

@@ -64,6 +64,7 @@ jclass nsISupportsClass = nsnull;
jclass xpcomExceptionClass = nsnull;
jclass xpcomJavaProxyClass = nsnull;
jclass weakReferenceClass = nsnull;
jclass javaXPCOMUtilsClass = nsnull;
jmethodID hashCodeMID = nsnull;
jmethodID booleanValueMID = nsnull;
@@ -88,6 +89,7 @@ jmethodID getNativeXPCOMInstMID = nsnull;
jmethodID weakReferenceConstructorMID = nsnull;
jmethodID getReferentMID = nsnull;
jmethodID clearReferentMID = nsnull;
jmethodID findClassInLoaderMID = nsnull;
#ifdef DEBUG_JAVAXPCOM
jmethodID getNameMID = nsnull;
@@ -275,6 +277,16 @@ InitializeJavaGlobals(JNIEnv *env)
goto init_error;
}
if (!(clazz = env->FindClass("org/mozilla/xpcom/internal/JavaXPCOMMethods")) ||
!(javaXPCOMUtilsClass = (jclass) env->NewGlobalRef(clazz)) ||
!(findClassInLoaderMID = env->GetStaticMethodID(clazz,
"findClassInLoader",
"(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Class;")))
{
NS_WARNING("Problem creating org.mozilla.xpcom.internal.JavaXPCOMMethods globals");
goto init_error;
}
#ifdef DEBUG_JAVAXPCOM
if (!(clazz = env->FindClass("java/lang/Class")) ||
!(getNameMID = env->GetMethodID(clazz, "getName","()Ljava/lang/String;")))
@@ -795,7 +807,8 @@ JavaXPCOMInstance::~JavaXPCOMInstance()
nsresult
GetNewOrUsedJavaObject(JNIEnv* env, nsISupports* aXPCOMObject,
const nsIID& aIID, jobject* aResult)
const nsIID& aIID, jobject aObjectLoader,
jobject* aResult)
{
NS_PRECONDITION(aResult != nsnull, "null ptr");
if (!aResult)
@@ -824,7 +837,7 @@ GetNewOrUsedJavaObject(JNIEnv* env, nsISupports* aXPCOMObject,
// No Java object is associated with the given XPCOM object, so we
// create a Java proxy.
return CreateJavaProxy(env, rootObject, aIID, aResult);
return CreateJavaProxy(env, rootObject, aIID, aObjectLoader, aResult);
}
nsresult