From b183f0786f031e7cc05786dde357ad024d691789 Mon Sep 17 00:00:00 2001 From: "pedemont%us.ibm.com" Date: Fri, 1 Oct 2004 22:59:12 +0000 Subject: [PATCH] Added NS_NewArray function. Used by testcase. Not part of default build. git-svn-id: svn://10.0.0.236/trunk@163124 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/extensions/java/xpcom/GeckoEmbed.java | 2 ++ .../java/xpcom/nsJavaInterfaces.cpp | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/mozilla/extensions/java/xpcom/GeckoEmbed.java b/mozilla/extensions/java/xpcom/GeckoEmbed.java index 6c5e33f6135..fb7710f7041 100644 --- a/mozilla/extensions/java/xpcom/GeckoEmbed.java +++ b/mozilla/extensions/java/xpcom/GeckoEmbed.java @@ -44,5 +44,7 @@ public final class GeckoEmbed { public static native nsILocalFile NS_NewLocalFile(String aPath, boolean followLinks); public static native nsIComponentManager NS_GetComponentManager(); public static native nsIServiceManager NS_GetServiceManager(); + public static native nsISimpleEnumerator NS_NewSingletonEnumerator(nsISupports aSingleton); + public static native nsIMutableArray NS_NewArray(); } \ No newline at end of file diff --git a/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp b/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp index 0574f91b8b3..eb25042d10c 100644 --- a/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp +++ b/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp @@ -44,6 +44,7 @@ #include "nsIInterfaceInfoManager.h" #include "nsIInputStream.h" #include "nsEnumeratorUtils.h" +#include "nsArray.h" #define GECKO_NATIVE(func) Java_org_mozilla_xpcom_GeckoEmbed_##func #define XPCOM_NATIVE(func) Java_org_mozilla_xpcom_XPCOM_##func @@ -281,6 +282,37 @@ GECKO_NATIVE(NS_1NewSingletonEnumerator) (JNIEnv *env, jclass, jobject aSingleto return java_stub; } +extern "C" JNIEXPORT jobject JNICALL +GECKO_NATIVE(NS_1NewArray) (JNIEnv *env, jclass) +{ + jobject java_stub = nsnull; + + // Call XPCOM method + nsCOMPtr array; + nsresult rv = NS_NewArray(getter_AddRefs(array)); + + if (NS_SUCCEEDED(rv)) { + // wrap xpcom instance + JavaXPCOMInstance* inst; + inst = CreateJavaXPCOMInstance(array, &NS_GET_IID(nsIMutableArray)); + + if (inst) { + // create java stub + java_stub = CreateJavaWrapper(env, "nsIMutableArray"); + + if (java_stub) { + // Associate XPCOM object w/ Java stub + AddJavaXPCOMBinding(env, java_stub, inst); + } + } + } + + if (java_stub == nsnull) + ThrowXPCOMException(env, 0); + + return java_stub; +} + // JNI wrapper for calling an nsWriteSegmentFun function extern "C" JNIEXPORT jint JNICALL XPCOM_NATIVE(nsWriteSegmentFun) (JNIEnv *env, jclass that, jint aWriterFunc,