Bug 270889 - Various minor code and comment fixes.

git-svn-id: svn://10.0.0.236/trunk@166985 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2004-12-23 17:09:54 +00:00
parent 13e0576ad8
commit 9cbc06758a
8 changed files with 86 additions and 63 deletions

View File

@@ -71,7 +71,8 @@ public final class XPCOM {
* </ul>
*/
public static native
nsIServiceManager initXPCOM(File aMozBinDirectory, AppFileLocProvider aAppFileLocProvider);
nsIServiceManager initXPCOM(File aMozBinDirectory,
AppFileLocProvider aAppFileLocProvider);
/**
* Shutdown XPCOM. You must call this method after you are finished

View File

@@ -89,7 +89,7 @@ GECKO_NATIVE(initEmbedding) (JNIEnv* env, jclass, jobject aMozBinDirectory,
extern "C" JNIEXPORT void JNICALL
GECKO_NATIVE(termEmbedding) (JNIEnv *env, jclass)
{
nsresult rv = NS_TermEmbedding();
nsresult rv = NS_TermEmbedding();
if (NS_FAILED(rv))
ThrowXPCOMException(env, rv, "NS_TermEmbedding failed");
@@ -166,7 +166,7 @@ XPCOM_NATIVE(shutdownXPCOM) (JNIEnv *env, jclass, jobject aServMgr)
servMgr = do_QueryInterface(((JavaXPCOMInstance*) xpcomObj)->GetInstance());
}
nsresult rv = NS_ShutdownXPCOM(servMgr);
nsresult rv = NS_ShutdownXPCOM(servMgr);
if (NS_FAILED(rv))
ThrowXPCOMException(env, rv, "NS_ShutdownXPCOM failed");

View File

@@ -412,7 +412,7 @@ SetupParams(JNIEnv *env, const jobject aParam, const nsXPTParamInfo &aParamInfo,
}
break;
// XXX How should this be handled?
// handle "void *" as an "int" in Java
case nsXPTType::T_VOID:
{
if (env->IsInstanceOf(aParam, intClass))
@@ -469,7 +469,6 @@ FinalizeParams(JNIEnv *env, const jobject aParam,
nsresult rv = NS_OK;
const nsXPTType &type = aParamInfo.GetType();
// XXX Not sure if this is necessary
// Only write the array elements back if the parameter is an output param
jint mode = 0;
if (!aParamInfo.IsOut() && !aParamInfo.IsRetval())
@@ -609,9 +608,8 @@ FinalizeParams(JNIEnv *env, const jobject aParam,
env->SetObjectArrayElement((jobjectArray) aParam, 0, str);
}
// XXX Cannot delete this until we've handled all of the params. See
// comment in CallXPCOMMethod
// delete iid;
// Ordinarily, we would delete 'iid' here. But we cannot do that until
// we've handled all of the params. See comment in CallXPCOMMethod
}
break;
@@ -888,21 +886,26 @@ CallXPCOMMethod(JNIEnv *env, jclass that, jobject aJavaObject,
return;
}
NS_ASSERTION(!IsXPTCStub(xpcomObj), "Expected JavaXPCOMInstance, but got nsJavaXPTCStub");
NS_ASSERTION(!IsXPTCStub(xpcomObj),
"Expected JavaXPCOMInstance, but got nsJavaXPTCStub");
JavaXPCOMInstance* inst = (JavaXPCOMInstance*) xpcomObj;
// Get method info
const nsXPTMethodInfo* methodInfo;
nsIInterfaceInfo* iinfo = inst->InterfaceInfo();
nsresult rv = iinfo->GetMethodInfo(aMethodIndex, &methodInfo);
NS_ASSERTION(NS_SUCCEEDED(rv), "GetMethodInfo failed");
if (NS_FAILED(rv)) {
ThrowXPCOMException(env, rv, "GetMethodInfo failed");
return;
}
#ifdef DEBUG
const char* ifaceName;
iinfo->GetNameShared(&ifaceName);
LOG(("=> Calling %s::%s()\n", ifaceName, methodInfo->GetName()));
#endif
// Convert the Java params
PRUint8 paramCount = methodInfo->GetParamCount();
nsXPTCVariant* params = nsnull;
if (paramCount)
@@ -955,10 +958,12 @@ CallXPCOMMethod(JNIEnv *env, jclass that, jobject aJavaObject,
}
}
// Call the XPCOM method
nsresult invokeResult;
invokeResult = XPTC_InvokeByIndex(inst->GetInstance(), aMethodIndex,
paramCount, params);
// Clean up params
for (PRUint8 i = 0; i < paramCount && NS_SUCCEEDED(rv); i++)
{
const nsXPTParamInfo &paramInfo = methodInfo->GetParam(i);
@@ -977,10 +982,10 @@ CallXPCOMMethod(JNIEnv *env, jclass that, jobject aJavaObject,
return;
}
// XXX Normally, we would delete any created nsID object in the above loop.
// However, GetIIDForMethodParam may need some of the nsID params when it's
// looking for the IID of an INTERFACE_IS. Therefore, we can't delete it
// until we've gone through the 'Finalize' loop once and created the result.
// Normally, we would delete any created nsID object in the above loop.
// However, GetIIDForMethodParam may need some of the nsID params when it's
// looking for the IID of an INTERFACE_IS. Therefore, we can't delete it
// until we've gone through the 'Finalize' loop once and created the result.
for (PRUint8 j = 0; j < paramCount && NS_SUCCEEDED(rv); j++)
{
const nsXPTParamInfo &paramInfo = methodInfo->GetParam(j);
@@ -1007,7 +1012,6 @@ CallXPCOMMethod(JNIEnv *env, jclass that, jobject aJavaObject,
return;
}
// XXX Use org.mozilla.classfile.ClassFileWriter for stubs?
jobject
CreateJavaWrapper(JNIEnv* env, const char* aClassName)
{
@@ -1030,6 +1034,5 @@ CreateJavaWrapper(JNIEnv* env, const char* aClassName)
}
return java_stub;
// return env->NewGlobalRef(java_stub);
}

View File

@@ -266,35 +266,34 @@ InitializeJavaGlobals(JNIEnv *env)
return PR_TRUE;
jclass clazz;
if (!(clazz = env->FindClass("java/lang/Object")) ||
!(hashCodeMID = env->GetMethodID(clazz, "hashCode","()I")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Boolean")) ||
!(booleanValueMID = env->GetMethodID(clazz,"booleanValue","()Z")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Character")) ||
!(charValueMID = env->GetMethodID(clazz,"charValue","()C")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Byte")) ||
!(byteValueMID = env->GetMethodID(clazz,"byteValue","()B")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Short")) ||
!(shortValueMID = env->GetMethodID(clazz,"shortValue","()S")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Integer")) ||
@@ -303,49 +302,50 @@ InitializeJavaGlobals(JNIEnv *env)
!(intArrayClass = (jclass) env->NewGlobalRef(clazz)) ||
!(intValueMID = env->GetMethodID(intClass,"intValue","()I")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Long")) ||
!(longValueMID = env->GetMethodID(clazz,"longValue","()J")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Float")) ||
!(floatValueMID = env->GetMethodID(clazz,"floatValue","()F")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/Double")) ||
!(doubleValueMID = env->GetMethodID(clazz,"doubleValue","()D")))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("java/lang/String")) ||
!(stringClass = (jclass) env->NewGlobalRef(clazz)))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("org/mozilla/xpcom/nsISupports")) ||
!(nsISupportsClass = (jclass) env->NewGlobalRef(clazz)))
{
return PR_FALSE;
goto init_error;
}
if (!(clazz = env->FindClass("org/mozilla/xpcom/XPCOMException")) ||
!(xpcomExceptionClass = (jclass) env->NewGlobalRef(clazz)))
{
return PR_FALSE;
goto init_error;
}
#ifdef DEBUG
if (!(clazz = env->FindClass("java/lang/Class")) ||
!(getNameMID = env->GetMethodID(clazz, "getName","()Ljava/lang/String;"))) {
return PR_FALSE;
!(getNameMID = env->GetMethodID(clazz, "getName","()Ljava/lang/String;")))
{
goto init_error;
}
#endif
@@ -365,7 +365,7 @@ InitializeJavaGlobals(JNIEnv *env)
gJAVAtoXPCOMBindings = PL_NewDHashTable(&java_to_xpcom_hash_ops, nsnull,
sizeof(JavaXPCOMBindingEntry), 16);
if (!gJAVAtoXPCOMBindings) {
return PR_FALSE;
goto init_error;
}
static PLDHashTableOps xpcom_to_java_hash_ops =
@@ -384,12 +384,17 @@ InitializeJavaGlobals(JNIEnv *env)
gXPCOMtoJAVABindings = PL_NewDHashTable(&xpcom_to_java_hash_ops, nsnull,
sizeof(JavaXPCOMBindingEntry), 16);
if (!gXPCOMtoJAVABindings) {
return PR_FALSE;
goto init_error;
}
gInitialized = PR_TRUE;
return PR_TRUE;
init_error:
// If we encounter an error during initialization, then free any globals that
// were allocated, and return false.
FreeJavaGlobals(env);
return PR_FALSE;
}
/*************************
@@ -398,17 +403,35 @@ InitializeJavaGlobals(JNIEnv *env)
void
FreeJavaGlobals(JNIEnv* env)
{
if (!gInitialized)
return;
if (intClass) {
env->DeleteGlobalRef(intClass);
intClass = nsnull;
}
if (intArrayClass) {
env->DeleteGlobalRef(intArrayClass);
intArrayClass = nsnull;
}
if (stringClass) {
env->DeleteGlobalRef(stringClass);
stringClass = nsnull;
}
if (nsISupportsClass) {
env->DeleteGlobalRef(nsISupportsClass);
nsISupportsClass = nsnull;
}
if (xpcomExceptionClass) {
env->DeleteGlobalRef(xpcomExceptionClass);
xpcomExceptionClass = nsnull;
}
env->DeleteGlobalRef(intClass);
env->DeleteGlobalRef(intArrayClass);
env->DeleteGlobalRef(stringClass);
env->DeleteGlobalRef(nsISupportsClass);
env->DeleteGlobalRef(xpcomExceptionClass);
PL_DHashTableDestroy(gJAVAtoXPCOMBindings);
PL_DHashTableDestroy(gXPCOMtoJAVABindings);
if (gJAVAtoXPCOMBindings) {
PL_DHashTableDestroy(gJAVAtoXPCOMBindings);
gJAVAtoXPCOMBindings = nsnull;
}
if (gXPCOMtoJAVABindings) {
PL_DHashTableDestroy(gXPCOMtoJAVABindings);
gXPCOMtoJAVABindings = nsnull;
}
gInitialized = PR_FALSE;
}
@@ -419,8 +442,8 @@ FreeJavaGlobals(JNIEnv* env)
*********************************************************/
JavaXPCOMInstance::JavaXPCOMInstance(nsISupports* aInstance,
nsIInterfaceInfo* aIInfo)
: mInstance(aInstance),
mIInfo(aIInfo)
: mInstance(aInstance),
mIInfo(aIInfo)
{
NS_ADDREF(mInstance);
}
@@ -455,13 +478,10 @@ CreateJavaXPCOMInstance(nsISupports* aXPCOMObject, const nsIID* aIID)
nsresult
GetIIDForMethodParam(nsIInterfaceInfo *iinfo,
const nsXPTMethodInfo *methodInfo,
const nsXPTParamInfo &paramInfo,
PRUint16 methodIndex,
nsXPTCMiniVariant *dispatchParams,
PRBool isFullVariantArray,
nsID &result)
GetIIDForMethodParam(nsIInterfaceInfo *iinfo, const nsXPTMethodInfo *methodInfo,
const nsXPTParamInfo &paramInfo, PRUint16 methodIndex,
nsXPTCMiniVariant *dispatchParams,
PRBool isFullVariantArray, nsID &result)
{
nsresult rv;

View File

@@ -86,12 +86,12 @@ public:
JavaXPCOMInstance(nsISupports* aInstance, nsIInterfaceInfo* aIInfo);
~JavaXPCOMInstance();
nsISupports* GetInstance() { return mInstance; }
nsIInterfaceInfo* InterfaceInfo() { return mIInfo; }
nsISupports* GetInstance() { return mInstance; }
nsIInterfaceInfo* InterfaceInfo() { return mIInfo; }
private:
nsISupports* mInstance;
nsCOMPtr<nsIInterfaceInfo> mIInfo;
nsISupports* mInstance;
nsCOMPtr<nsIInterfaceInfo> mIInfo;
};
JavaXPCOMInstance* CreateJavaXPCOMInstance(nsISupports* aXPCOMObject,

View File

@@ -805,7 +805,6 @@ nsJavaXPTCStub::GetRetvalSig(const nsXPTParamInfo* aParamInfo,
aRetvalSig.Append("Lorg/mozilla/xpcom/nsISupports;");
break;
// XXX Probably won't work for 64 bit addr
case nsXPTType::T_VOID:
aRetvalSig.Append("I");
break;

View File

@@ -56,7 +56,7 @@ nsJavaXPTCStubWeakRef::~nsJavaXPTCStubWeakRef()
NS_IMPL_ADDREF(nsJavaXPTCStubWeakRef)
NS_IMPL_RELEASE(nsJavaXPTCStubWeakRef)
NS_IMPL_THREADSAFE_QUERY_INTERFACE1(nsJavaXPTCStubWeakRef, nsIWeakReference)
NS_IMPL_QUERY_INTERFACE1(nsJavaXPTCStubWeakRef, nsIWeakReference)
NS_IMETHODIMP
nsJavaXPTCStubWeakRef::QueryReferent(const nsIID& aIID, void** aInstancePtr)

View File

@@ -45,9 +45,9 @@
class nsJavaXPTCStubWeakRef : public nsIWeakReference
{
public:
nsJavaXPTCStubWeakRef(JNIEnv* env, jobject aJavaObject);
virtual ~nsJavaXPTCStubWeakRef();
NS_DECL_ISUPPORTS
nsJavaXPTCStubWeakRef(JNIEnv* env, jobject aJavaObject);
virtual ~nsJavaXPTCStubWeakRef();
NS_DECL_ISUPPORTS
NS_DECL_NSIWEAKREFERENCE
protected: