Bug 323231 - Expose new XRE Profile APIs to Java embedders. r=jhpedemonte/bsmedberg

git-svn-id: svn://10.0.0.236/trunk@199598 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
pedemont%us.ibm.com
2006-06-09 13:40:08 +00:00
parent 5dbfbd0435
commit a70c90ebc4
7 changed files with 131 additions and 1 deletions

View File

@@ -268,3 +268,46 @@ XPCOM_NATIVE(getServiceManager) (JNIEnv *env, jobject)
return nsnull;
}
nsresult
LockProfileDirectory_Impl(JNIEnv* env, jobject aDirectory,
jobject* aJavaLock)
{
nsresult rv;
nsCOMPtr<nsILocalFile> profDir;
if (!aDirectory) return NS_ERROR_NULL_POINTER;
rv = File_to_nsILocalFile(env, aDirectory, getter_AddRefs(profDir));
NS_ENSURE_SUCCESS(rv, rv);
nsISupports* lockObj;
rv = XRE_LockProfileDirectory(profDir, &lockObj);
NS_ENSURE_SUCCESS(rv, rv);
rv = GetNewOrUsedJavaObject(env, lockObj, NS_GET_IID(nsISupports),
aJavaLock);
NS_IF_RELEASE(lockObj);
return rv;
}
extern "C" NS_EXPORT jobject
GRE_NATIVE(lockProfileDirectory) (JNIEnv* env, jobject, jobject aDirectory)
{
jobject profLock;
nsresult rv = LockProfileDirectory_Impl(env, aDirectory, &profLock);
if (NS_SUCCEEDED(rv)) {
return profLock;
}
ThrowException(env, rv, "Failure in lockProfileDirectory");
return nsnull;
}
extern "C" NS_EXPORT void
GRE_NATIVE(notifyProfile) (JNIEnv *env, jobject)
{
XRE_NotifyProfile();
}