Bug 375449 - NS_InvokeByIndex not exported from xpcom, only from xpcom_core, r=dbaron

This commit is contained in:
benjamin@smedbergs.us 2007-04-24 10:02:51 -07:00
parent 4a5890e58f
commit bc865ae32f
7 changed files with 74 additions and 3 deletions

View File

@ -57,6 +57,10 @@ CPPSRCS = nsJavaXPCOMGlue.cpp
DEFINES += -DXPCOM_GLUE
REQUIRES += \
xpcom \
$(NULL)
LOCAL_INCLUDES = -I$(JAVA_INCLUDE_PATH)
ifeq ($(OS_ARCH),WINNT)

View File

@ -42,6 +42,7 @@
#include "nscore.h"
#include "nsXPCOM.h"
#include "nsXPCOMStrings.h"
#include "xptcall.h"
class nsStringContainer;
class nsCStringContainer;
@ -110,6 +111,10 @@ typedef void (* LogReleaseFunc)(void*, nsrefcnt, const char*);
typedef void (* LogCtorFunc)(void*, const char*, PRUint32);
typedef void (* LogCOMPtrFunc)(void*, nsISupports*);
typedef nsresult (* GetXPTCallStubFunc)(REFNSIID, nsIXPTCProxy*, nsISomeInterface**);
typedef void (* DestroyXPTCallStubFunc)(nsISomeInterface*);
typedef nsresult (* InvokeByIndexFunc)(nsISupports*, PRUint32, PRUint32, nsXPTCVariant*);
// PRIVATE AND DEPRECATED
typedef NS_CALLBACK(XPCOMExitRoutine)(void);
@ -174,6 +179,9 @@ typedef struct XPCOMFunctions{
LogCtorFunc logDtorFunc;
LogCOMPtrFunc logCOMPtrAddRefFunc;
LogCOMPtrFunc logCOMPtrReleaseFunc;
GetXPTCallStubFunc getXPTCallStubFunc;
DestroyXPTCallStubFunc destroyXPTCallStubFunc;
InvokeByIndexFunc invokeByIndexFunc;
} XPCOMFunctions;

View File

@ -491,6 +491,33 @@ NS_LogCOMPtrRelease(void *aCOMPtr, nsISupports *aObject)
xpcomFunctions.logCOMPtrReleaseFunc(aCOMPtr, aObject);
}
XPCOM_API(nsresult)
NS_GetXPTCallStub(REFNSIID aIID, nsIXPTCProxy* aOuter,
nsISomeInterface* *aStub)
{
if (!xpcomFunctions.getXPTCallStubFunc)
return NS_ERROR_NOT_INITIALIZED;
return xpcomFunctions.getXPTCallStubFunc(aIID, aOuter, aStub);
}
XPCOM_API(void)
NS_DestroyXPTCallStub(nsISomeInterface* aStub)
{
if (xpcomFunctions.destroyXPTCallStubFunc)
xpcomFunctions.destroyXPTCallStubFunc(aStub);
}
XPCOM_API(nsresult)
NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
PRUint32 paramCount, nsXPTCVariant* params)
{
if (!xpcomFunctions.invokeByIndexFunc)
return NS_ERROR_NOT_INITIALIZED;
return xpcomFunctions.invokeByIndexFunc(that, methodIndex,
paramCount, params);
}
// Default GRE startup/shutdown code

View File

@ -41,6 +41,12 @@
#ifndef xptcall_h___
#define xptcall_h___
#ifdef MOZILLA_INTERNAL_API
# define NS_GetXPTCallStub NS_GetXPTCallStub_P
# define NS_DestroyXPTCallStub NS_DestroyXPTCallStub_P
# define NS_InvokeByIndex NS_InvokeByIndex_P
#endif
#include "prtypes.h"
#include "nscore.h"
#include "nsISupports.h"

View File

@ -50,7 +50,7 @@ REQUIRES = xpcom \
CPPSRCS = TestXPTCInvoke.cpp
LIBS = \
$(XPCOM_LIBS) \
$(XPCOM_GLUE_LDOPTS) \
$(NSPR_LIBS) \
$(NULL)

View File

@ -49,7 +49,7 @@ SIMPLE_PROGRAMS = TestInterfaceInfo$(BIN_SUFFIX)
CPPSRCS = TestInterfaceInfo.cpp
LIBS = \
$(XPCOM_LIBS) \
$(XPCOM_GLUE_LDOPTS) \
$(NSPR_LIBS) \
$(NULL)

View File

@ -38,6 +38,7 @@
#include "nsXPCOM.h"
#include "nsXPCOMPrivate.h"
#include "nsXPCOMStrings.h"
#include "xptcall.h"
#include <string.h>
@ -110,7 +111,10 @@ static const XPCOMFunctions kFrozenFunctions = {
&NS_LogCtor_P,
&NS_LogDtor_P,
&NS_LogCOMPtrAddRef_P,
&NS_LogCOMPtrRelease_P
&NS_LogCOMPtrRelease_P,
&NS_GetXPTCallStub_P,
&NS_DestroyXPTCallStub_P,
&NS_InvokeByIndex_P
};
EXPORT_XPCOM_API(nsresult)
@ -311,6 +315,28 @@ NS_LogCOMPtrRelease(void *aCOMPtr, nsISupports* aObject)
NS_LogCOMPtrRelease_P(aCOMPtr, aObject);
}
#undef NS_GetXPTCallStub
EXPORT_XPCOM_API(nsresult)
NS_GetXPTCallStub(REFNSIID aIID, nsIXPTCProxy* aOuter,
nsISomeInterface* *aStub)
{
return NS_GetXPTCallStub_P(aIID, aOuter, aStub);
}
#undef NS_DestroyXPTCallStub
EXPORT_XPCOM_API(void)
NS_DestroyXPTCallStub(nsISomeInterface* aStub)
{
NS_DestroyXPTCallStub_P(aStub);
}
#undef NS_InvokeByIndex
EXPORT_XPCOM_API(nsresult)
NS_InvokeByIndex(nsISupports* that, PRUint32 methodIndex,
PRUint32 paramCount, nsXPTCVariant* params)
{
return NS_InvokeByIndex_P(that, methodIndex, paramCount, params);
}
/*
* Stubs for nsXPCOMPrivate.h