Bug 662000 part 2: Remove XPC_IDISPATCH_SUPPORT from the build-system and XPConnect. r=mrbkap

This commit is contained in:
Matheus Kerschbaum 2011-06-14 05:50:29 +02:00
parent 5764937981
commit 892ad17efd
19 changed files with 7 additions and 460 deletions

View File

@ -588,13 +588,6 @@ private:
nsresult
InitPrincipals(PRUint32 prefCount, const char** prefNames);
#ifdef XPC_IDISPATCH_SUPPORT
// While this header is included outside of caps, this class isn't
// referenced so this should be fine.
nsresult
CheckComponentPermissions(JSContext *cx, const nsCID &aCID);
#endif
#ifdef DEBUG_CAPS_HACKER
void
PrintPolicyDB();
@ -632,10 +625,6 @@ private:
PRPackedBool mIsJavaScriptEnabled;
PRPackedBool mIsWritingPrefs;
PRPackedBool mPolicyPrefsChanged;
#ifdef XPC_IDISPATCH_SUPPORT
PRPackedBool mXPCDefaultGrantAll;
static const char sXPCDefaultGrantAllName[];
#endif
static PRBool sStrictFileOriginPolicy;

View File

@ -58,10 +58,6 @@ CPPSRCS = \
nsSecurityManagerFactory.cpp \
$(NULL)
ifdef XPC_IDISPATCH_SUPPORT
DEFINES += -DXPC_IDISPATCH_SUPPORT
endif
include $(topsrcdir)/config/rules.mk
INCLUDES += -I$(srcdir)/../include \

View File

@ -3090,60 +3090,6 @@ nsScriptSecurityManager::CanCreateWrapper(JSContext *cx,
return rv;
}
#ifdef XPC_IDISPATCH_SUPPORT
nsresult
nsScriptSecurityManager::CheckComponentPermissions(JSContext *cx,
const nsCID &aCID)
{
nsresult rv;
nsIPrincipal* subjectPrincipal = GetSubjectPrincipal(cx, &rv);
if (NS_FAILED(rv))
return rv;
// Reformat the CID string so it's suitable for prefs
nsXPIDLCString cidTemp;
cidTemp.Adopt(aCID.ToString());
nsCAutoString cid(NS_LITERAL_CSTRING("CID") +
Substring(cidTemp, 1, cidTemp.Length() - 2));
ToUpperCase(cid);
#ifdef DEBUG_CAPS_CheckComponentPermissions
printf("### CheckComponentPermissions(ClassID.%s) ",cid.get());
#endif
// Look up the policy for this class.
// while this isn't a property we'll treat it as such, using ACCESS_CALL_METHOD
JSAutoRequest ar(cx);
jsid cidId = INTERNED_STRING_TO_JSID(::JS_InternString(cx, cid.get()));
ClassInfoData nameData(nsnull, "ClassID");
SecurityLevel securityLevel;
rv = LookupPolicy(subjectPrincipal, nameData, cidId,
nsIXPCSecurityManager::ACCESS_CALL_METHOD,
nsnull, &securityLevel);
if (NS_FAILED(rv))
return rv;
// If there's no policy stored, use the "security.classID.allowByDefault" pref
if (securityLevel.level == SCRIPT_SECURITY_UNDEFINED_ACCESS)
securityLevel.level = mXPCDefaultGrantAll ? SCRIPT_SECURITY_ALL_ACCESS :
SCRIPT_SECURITY_NO_ACCESS;
if (securityLevel.level == SCRIPT_SECURITY_ALL_ACCESS)
{
#ifdef DEBUG_CAPS_CheckComponentPermissions
printf(" GRANTED.\n");
#endif
return NS_OK;
}
#ifdef DEBUG_CAPS_CheckComponentPermissions
printf(" DENIED.\n");
#endif
return NS_ERROR_DOM_PROP_ACCESS_DENIED;
}
#endif
NS_IMETHODIMP
nsScriptSecurityManager::CanCreateInstance(JSContext *cx,
const nsCID &aCID)
@ -3156,12 +3102,6 @@ nsScriptSecurityManager::CanCreateInstance(JSContext *cx,
nsresult rv = CheckXPCPermissions(nsnull, nsnull, nsnull, nsnull, nsnull);
if (NS_FAILED(rv))
#ifdef XPC_IDISPATCH_SUPPORT
{
rv = CheckComponentPermissions(cx, aCID);
}
if (NS_FAILED(rv))
#endif
{
//-- Access denied, report an error
nsCAutoString errorMsg("Permission denied to create instance of class. CID=");
@ -3382,9 +3322,6 @@ nsScriptSecurityManager::nsScriptSecurityManager(void)
mIsJavaScriptEnabled(PR_FALSE),
mIsWritingPrefs(PR_FALSE),
mPolicyPrefsChanged(PR_TRUE)
#ifdef XPC_IDISPATCH_SUPPORT
, mXPCDefaultGrantAll(PR_FALSE)
#endif
{
NS_ASSERTION(sizeof(PRWord) == sizeof(void*),
"PRWord and void* have different lengths on this platform. "
@ -3982,10 +3919,6 @@ const char nsScriptSecurityManager::sJSEnabledPrefName[] =
"javascript.enabled";
const char nsScriptSecurityManager::sFileOriginPolicyPrefName[] =
"security.fileuri.strict_origin_policy";
#ifdef XPC_IDISPATCH_SUPPORT
const char nsScriptSecurityManager::sXPCDefaultGrantAllName[] =
"security.classID.allowByDefault";
#endif
inline void
nsScriptSecurityManager::ScriptSecurityPrefChanged()
@ -3995,11 +3928,6 @@ nsScriptSecurityManager::ScriptSecurityPrefChanged()
sStrictFileOriginPolicy = PR_TRUE;
#ifdef XPC_IDISPATCH_SUPPORT
// Granting XPC Priveleges defaults to disabled in failure cases.
mXPCDefaultGrantAll = PR_FALSE;
#endif
nsresult rv;
if (!mPrefBranch) {
rv = InitPrefs();
@ -4015,12 +3943,6 @@ nsScriptSecurityManager::ScriptSecurityPrefChanged()
rv = mPrefBranch->GetBoolPref(sFileOriginPolicyPrefName, &temp);
if (NS_SUCCEEDED(rv))
sStrictFileOriginPolicy = NS_SUCCEEDED(rv) && temp;
#ifdef XPC_IDISPATCH_SUPPORT
rv = mPrefBranch->GetBoolPref(sXPCDefaultGrantAllName, &temp);
if (NS_SUCCEEDED(rv))
mXPCDefaultGrantAll = temp;
#endif
}
nsresult
@ -4039,9 +3961,6 @@ nsScriptSecurityManager::InitPrefs()
// set observer callbacks in case the value of the prefs change
prefBranchInternal->AddObserver(sJSEnabledPrefName, this, PR_FALSE);
prefBranchInternal->AddObserver(sFileOriginPolicyPrefName, this, PR_FALSE);
#ifdef XPC_IDISPATCH_SUPPORT
prefBranchInternal->AddObserver(sXPCDefaultGrantAllName, this, PR_FALSE);
#endif
PRUint32 prefCount;
char** prefNames;

View File

@ -138,7 +138,6 @@ MOZ_UPDATE_PACKAGING = @MOZ_UPDATE_PACKAGING@
MOZ_NO_ACTIVEX_SUPPORT = @MOZ_NO_ACTIVEX_SUPPORT@
MOZ_ACTIVEX_SCRIPTING_SUPPORT = @MOZ_ACTIVEX_SCRIPTING_SUPPORT@
MOZ_DISABLE_PARENTAL_CONTROLS = @MOZ_DISABLE_PARENTAL_CONTROLS@
XPC_IDISPATCH_SUPPORT = @XPC_IDISPATCH_SUPPORT@
NS_ENABLE_TSF = @NS_ENABLE_TSF@
MOZ_SPELLCHECK = @MOZ_SPELLCHECK@
MOZ_PROFILELOCKING = @MOZ_PROFILELOCKING@

View File

@ -4819,7 +4819,6 @@ NECKO_DISK_CACHE=1
NECKO_PROTOCOLS_DEFAULT="about data file ftp http res viewsource websocket wyciwyg"
USE_ARM_KUSER=
BUILD_CTYPES=1
XPC_IDISPATCH_SUPPORT=
case "${target}" in
@ -6503,14 +6502,6 @@ dnl ========================================================
dnl ActiveX
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(xpconnect-idispatch,
[ --disable-xpconnect-idispatch
Disable building of xpconnect support for IDispatch
(win32 only)],
XPC_IDISPATCH_SUPPORT=,
XPC_IDISPATCH_SUPPORT=1)
AC_SUBST(XPC_IDISPATCH_SUPPORT)
MOZ_ARG_DISABLE_BOOL(activex,
[ --disable-activex Disable building of ActiveX control (win32 only)],
MOZ_NO_ACTIVEX_SUPPORT=1,
@ -6530,7 +6521,7 @@ then
fi
if test "$COMPILE_ENVIRONMENT" = "1"; then
if test -n "$XPC_IDISPATCH_SUPPORT" -o -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
if test -n "$MOZ_ACTIVEX_SCRIPTING_SUPPORT" -o -z "$MOZ_NO_ACTIVEX_SUPPORT"; then
case "$target" in
*-mingw*)
if test "$ac_cv_header_atlbase_h" = "no"; then

View File

@ -63,17 +63,9 @@ XPIDLSRCS = \
nsIScriptError.idl \
nsIXPCScriptNotify.idl \
nsIScriptableInterfaces.idl \
XPCIDispatch.idl \
xpcIJSWeakReference.idl \
xpcIJSGetFactory.idl \
$(NULL)
ifdef XPC_IDISPATCH_SUPPORT
XPIDLSRCS += \
nsIDispatchSupport.idl \
nsIActiveXSecurityPolicy.idl \
$(NULL)
endif
include $(topsrcdir)/config/rules.mk

View File

@ -137,14 +137,6 @@ class nsWrapperCache;
#define NS_ERROR_XPC_CANT_MODIFY_PROP_ON_WN GENERATE_XPC_FAILURE(52)
#define NS_ERROR_XPC_BAD_CONVERT_JS_ZERO_ISNOT_NULL GENERATE_XPC_FAILURE(53)
#ifdef XPC_IDISPATCH_SUPPORT
// IDispatch support related errors
#define NS_ERROR_XPC_COM_UNKNOWN GENERATE_XPC_FAILURE(54)
#define NS_ERROR_XPC_COM_ERROR GENERATE_XPC_FAILURE(55)
#define NS_ERROR_XPC_COM_INVALID_CLASS_ID GENERATE_XPC_FAILURE(56)
#define NS_ERROR_XPC_COM_CREATE_FAILED GENERATE_XPC_FAILURE(57)
#define NS_ERROR_XPC_IDISPATCH_NOT_ENABLED GENERATE_XPC_FAILURE(58)
#endif
// any new errors here should have an associated entry added in xpc.msg
/***************************************************************************/
%}

View File

@ -93,18 +93,6 @@ CPPSRCS = \
xpcquickstubs.cpp \
dom_quickstubs.cpp \
$(NULL)
ifdef XPC_IDISPATCH_SUPPORT
CPPSRCS += XPCDispObject.cpp \
XPCDispInterface.cpp \
XPCDispConvert.cpp \
XPCDispTypeInfo.cpp \
XPCDispTearOff.cpp \
XPCIDispatchExtension.cpp \
XPCDispParams.cpp \
XPCIDispatchClassInfo.cpp \
nsDispatchSupport.cpp \
$(NULL)
endif
include $(topsrcdir)/config/config.mk
@ -154,14 +142,6 @@ ENABLE_TRACEABLE_FLAGS = --enable-traceables
endif # ENABLE_JIT
ifdef XPC_IDISPATCH_SUPPORT
DEFINES += -DXPC_IDISPATCH_SUPPORT
ifdef XPC_COMOBJECT
DEFINES += -DXPC_COMOBJECT
endif
endif
ifeq ($(OS_ARCH),WINNT)
ifndef GNU_CXX
ifeq (,$(filter-out 1200 1300 1310,$(_MSC_VER)))

View File

@ -162,14 +162,6 @@ XPC_MSG_DEF(NS_ERROR_OBJECT_IS_IMMUTABLE , "Can not modify immutable
XPC_MSG_DEF(NS_ERROR_LOSS_OF_SIGNIFICANT_DATA , "Data conversion failed because significant data would be lost")
XPC_MSG_DEF(NS_SUCCESS_LOSS_OF_INSIGNIFICANT_DATA , "Data conversion succeeded but data was rounded to fit")
#ifdef XPC_IDISPATCH_SUPPORT
XPC_MSG_DEF(NS_ERROR_XPC_COM_UNKNOWN , "Unknown COM error occurred")
XPC_MSG_DEF(NS_ERROR_XPC_COM_ERROR , "COM Error")
XPC_MSG_DEF(NS_ERROR_XPC_COM_INVALID_CLASS_ID , "Invalid class ID")
XPC_MSG_DEF(NS_ERROR_XPC_COM_CREATE_FAILED , "Unable to create an instance of the desired COM class")
XPC_MSG_DEF(NS_ERROR_XPC_IDISPATCH_NOT_ENABLED , "IDispatch support is not enabled")
#endif
/* network related codes (from nsNetError.h) */
XPC_MSG_DEF(NS_BINDING_FAILED , "The async request failed for some unknown reason")

View File

@ -216,9 +216,6 @@ XPCCallContext::SetName(jsid name)
mName = name;
#ifdef XPC_IDISPATCH_SUPPORT
mIDispatchMember = nsnull;
#endif
if(mTearOff)
{
mSet = nsnull;
@ -274,9 +271,6 @@ XPCCallContext::SetCallInfo(XPCNativeInterface* iface, XPCNativeMember* member,
if(mState < HAVE_NAME)
mState = HAVE_NAME;
#ifdef XPC_IDISPATCH_SUPPORT
mIDispatchMember = nsnull;
#endif
}
void
@ -291,9 +285,6 @@ XPCCallContext::SetArgsAndResultPtr(uintN argc,
mSet = nsnull;
mInterface = nsnull;
mMember = nsnull;
#ifdef XPC_IDISPATCH_SUPPORT
mIDispatchMember = nsnull;
#endif
mStaticMemberIsLocal = JS_FALSE;
}
@ -553,33 +544,6 @@ XPCCallContext::SetReturnValueWasSet(PRBool aReturnValueWasSet)
return NS_OK;
}
#ifdef XPC_IDISPATCH_SUPPORT
void
XPCCallContext::SetIDispatchInfo(XPCNativeInterface* iface,
void * member)
{
CHECK_STATE(HAVE_CONTEXT);
// We are going straight to the method info and need not do a lookup
// by id.
// don't be tricked if method is called with wrong 'this'
if(mTearOff && mTearOff->GetInterface() != iface)
mTearOff = nsnull;
mSet = nsnull;
mInterface = iface;
mMember = nsnull;
mIDispatchMember = member;
mName = reinterpret_cast<XPCDispInterface::Member*>(member)->GetName();
if(mState < HAVE_NAME)
mState = HAVE_NAME;
}
#endif
NS_IMETHODIMP
XPCCallContext::GetPreviousCallContext(nsAXPCNativeCallContext **aResult)
{

View File

@ -101,14 +101,4 @@ class AutoMarkingPtr;
class xpcProperty;
#ifdef XPC_IDISPATCH_SUPPORT
class XPCDispInterface;
struct IDispatch;
class XPCDispParams;
class XPCDispJSPropertyInfo;
class nsIXPConnectWrappedJS;
class XPCIDispatchExtension;
#endif
#endif /* xpcforwards_h___ */

View File

@ -271,11 +271,7 @@ XPCCallContext::GetMember() const
inline JSBool
XPCCallContext::HasInterfaceAndMember() const
{
return mState >= HAVE_NAME && mInterface && (mMember
#ifdef XPC_IDISPATCH_SUPPORT
|| mIDispatchMember
#endif
);
return mState >= HAVE_NAME && mInterface && mMember;
}
inline jsid
@ -612,65 +608,19 @@ inline void XPCNativeSet::ASSERT_NotMarked()
inline
JSObject* XPCWrappedNativeTearOff::GetJSObject() const
{
#ifdef XPC_IDISPATCH_SUPPORT
if(IsIDispatch())
{
XPCDispInterface * iface = GetIDispatchInfo();
return iface ? iface->GetJSObject() : nsnull;
}
#endif
return mJSObject;
}
inline
void XPCWrappedNativeTearOff::SetJSObject(JSObject* JSObj)
{
#ifdef XPC_IDISPATCH_SUPPORT
if(IsIDispatch())
{
XPCDispInterface* iface = GetIDispatchInfo();
if(iface)
iface->SetJSObject(JSObj);
}
else
#endif
mJSObject = JSObj;
}
#ifdef XPC_IDISPATCH_SUPPORT
inline void
XPCWrappedNativeTearOff::SetIDispatch(JSContext* cx)
{
mJSObject = (JSObject*)(((jsword)
::XPCDispInterface::NewInstance(cx,
mNative)) | 2);
}
inline XPCDispInterface*
XPCWrappedNativeTearOff::GetIDispatchInfo() const
{
NS_ASSERTION((jsword)mJSObject & 2, "XPCWrappedNativeTearOff::GetIDispatchInfo "
"called on a non IDispatch interface");
return reinterpret_cast<XPCDispInterface*>
((((jsword)mJSObject) & ~JSOBJECT_MASK));
}
inline JSBool
XPCWrappedNativeTearOff::IsIDispatch() const
{
return (JSBool)(((jsword)mJSObject) & IDISPATCH_BIT);
}
#endif
inline
XPCWrappedNativeTearOff::~XPCWrappedNativeTearOff()
{
NS_ASSERTION(!(GetInterface()||GetNative()||GetJSObject()), "tearoff not empty in dtor");
#ifdef XPC_IDISPATCH_SUPPORT
if(IsIDispatch())
delete GetIDispatchInfo();
#endif
}
/***************************************************************************/

View File

@ -49,10 +49,6 @@ xpcModuleCtor()
XPCWrappedNativeScope::InitStatics();
XPCPerThreadData::InitStatics();
#ifdef XPC_IDISPATCH_SUPPORT
XPCIDispatchExtension::InitStatics();
#endif
return NS_OK;
}
@ -62,8 +58,4 @@ xpcModuleDtor()
// Release our singletons
nsXPConnect::ReleaseXPConnectSingleton();
xpc_DestroyJSxIDClassObjects();
#ifdef XPC_IDISPATCH_SUPPORT
nsDispatchSupport::FreeSingleton();
XPCIDispatchClassInfo::FreeSingleton();
#endif
}

View File

@ -67,11 +67,6 @@ NS_GENERIC_FACTORY_CONSTRUCTOR(nsXPCComponents_Interfaces)
NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSComponentLoader)
NS_GENERIC_FACTORY_CONSTRUCTOR(mozJSSubScriptLoader)
#ifdef XPC_IDISPATCH_SUPPORT
NS_GENERIC_FACTORY_SINGLETON_CONSTRUCTOR(nsIDispatchSupport,
nsDispatchSupport::GetSingleton)
#endif // XPC_IDISPATCH_SUPPORT
NS_DEFINE_NAMED_CID(NS_JS_ID_CID);
NS_DEFINE_NAMED_CID(NS_XPCONNECT_CID);
NS_DEFINE_NAMED_CID(NS_XPCEXCEPTION_CID);
@ -80,16 +75,6 @@ NS_DEFINE_NAMED_CID(SCRIPTABLE_INTERFACES_CID);
NS_DEFINE_NAMED_CID(NS_XPC_JSCONTEXT_STACK_ITERATOR_CID);
NS_DEFINE_NAMED_CID(MOZJSCOMPONENTLOADER_CID);
NS_DEFINE_NAMED_CID(MOZ_JSSUBSCRIPTLOADER_CID);
#ifdef XPC_IDISPATCH_SUPPORT
NS_DEFINE_NAMED_CID(NS_IDISPATCH_SUPPORT_CID);
#define XPCIDISPATCH_CIDS \
{ &kNS_IDISPATCH_SUPPORT_CID, false, NULL, nsIDispatchSupportConstructor },
#define XPCIDISPATCH_CONTRACTS \
{ NS_IDISPATCH_SUPPORT_CONTRACTID, &kNS_IDISPATCH_SUPPORT_CID },
#else
#define XPCIDISPATCH_CIDS
#define XPCIDISPATCH_CONTRACTS
#endif
#define XPCONNECT_CIDENTRIES \
{ &kNS_JS_ID_CID, false, NULL, nsJSIDConstructor }, \
@ -99,8 +84,7 @@ NS_DEFINE_NAMED_CID(NS_IDISPATCH_SUPPORT_CID);
{ &kSCRIPTABLE_INTERFACES_CID, false, NULL, nsXPCComponents_InterfacesConstructor }, \
{ &kNS_XPC_JSCONTEXT_STACK_ITERATOR_CID, false, NULL, nsXPCJSContextStackIteratorConstructor }, \
{ &kMOZJSCOMPONENTLOADER_CID, false, NULL, mozJSComponentLoaderConstructor }, \
{ &kMOZ_JSSUBSCRIPTLOADER_CID, false, NULL, mozJSSubScriptLoaderConstructor }, \
XPCIDISPATCH_CIDS
{ &kMOZ_JSSUBSCRIPTLOADER_CID, false, NULL, mozJSSubScriptLoaderConstructor },
#define XPCONNECT_CONTRACTS \
{ XPC_ID_CONTRACTID, &kNS_JS_ID_CID }, \
@ -112,8 +96,7 @@ NS_DEFINE_NAMED_CID(NS_IDISPATCH_SUPPORT_CID);
{ NS_SCRIPTABLE_INTERFACES_CONTRACTID, &kSCRIPTABLE_INTERFACES_CID }, \
{ XPC_JSCONTEXT_STACK_ITERATOR_CONTRACTID, &kNS_XPC_JSCONTEXT_STACK_ITERATOR_CID }, \
{ MOZJSCOMPONENTLOADER_CONTRACTID, &kMOZJSCOMPONENTLOADER_CID }, \
{ MOZJSSUBSCRIPTLOADER_CONTRACTID, &kMOZ_JSSUBSCRIPTLOADER_CID }, \
XPCIDISPATCH_CONTRACTS
{ MOZJSSUBSCRIPTLOADER_CONTRACTID, &kMOZ_JSSUBSCRIPTLOADER_CID },
#define XPCONNECT_CATEGORIES \
{ "module-loader", "js", MOZJSCOMPONENTLOADER_CONTRACTID },

View File

@ -130,13 +130,6 @@
#include "nsIThreadInternal.h"
#ifdef XPC_IDISPATCH_SUPPORT
// This goop was added because of EXCEPINFO in ThrowCOMError
// This include is here, because it needs to occur before the undefines below
#include <atlbase.h>
#include "oaidl.h"
#endif
#ifdef XP_WIN
// Nasty MS defines
#ifdef GetClassInfo
@ -585,10 +578,6 @@ public:
return gReportAllJSExceptions > 0;
}
#ifdef XPC_IDISPATCH_SUPPORT
public:
static PRBool IsIDispatchEnabled();
#endif
protected:
nsXPConnect();
@ -1112,15 +1101,6 @@ public:
XPCReadableJSStringWrapper *NewStringWrapper(const PRUnichar *str, PRUint32 len);
void DeleteString(nsAString *string);
#ifdef XPC_IDISPATCH_SUPPORT
/**
* Sets the IDispatch information for the context
* This has to be void* because of icky Microsoft macros that
* would be introduced if we included the DispatchInterface header
*/
void SetIDispatchInfo(XPCNativeInterface* iface, void * member);
void* GetIDispatchMember() const { return mIDispatchMember; }
#endif
private:
// no copy ctor or assignment allowed
@ -1209,9 +1189,6 @@ private:
jsval* mRetVal;
JSBool mReturnValueWasSet;
#ifdef XPC_IDISPATCH_SUPPORT
void* mIDispatchMember;
#endif
PRUint16 mMethodIndex;
#define XPCCCX_STRING_CACHE_SIZE 2
@ -2362,16 +2339,6 @@ public:
void Unmark() {mJSObject = (JSObject*)(((jsword)mJSObject) & ~1);}
JSBool IsMarked() const {return (JSBool)(((jsword)mJSObject) & 1);}
#ifdef XPC_IDISPATCH_SUPPORT
enum JSObject_flags
{
IDISPATCH_BIT = 2,
JSOBJECT_MASK = 3
};
void SetIDispatch(JSContext* cx);
JSBool IsIDispatch() const;
XPCDispInterface* GetIDispatchInfo() const;
#endif
private:
XPCWrappedNativeTearOff(const XPCWrappedNativeTearOff& r); // not implemented
XPCWrappedNativeTearOff& operator= (const XPCWrappedNativeTearOff& r); // not implemented
@ -3363,11 +3330,6 @@ public:
static void Throw(nsresult rv, XPCCallContext& ccx);
static void ThrowBadResult(nsresult rv, nsresult result, XPCCallContext& ccx);
static void ThrowBadParam(nsresult rv, uintN paramNum, XPCCallContext& ccx);
#ifdef XPC_IDISPATCH_SUPPORT
static void ThrowCOMError(JSContext* cx, unsigned long COMErrorCode,
nsresult rv = NS_ERROR_XPC_COM_ERROR,
const EXCEPINFO * exception = nsnull);
#endif
static JSBool SetVerbosity(JSBool state)
{JSBool old = sVerbose; sVerbose = state; return old;}
@ -4504,11 +4466,6 @@ ParticipatesInCycleCollection(JSContext *cx, js::gc::Cell *cell)
}
#ifdef XPC_IDISPATCH_SUPPORT
// IDispatch specific classes
#include "XPCDispPrivate.h"
#endif
/***************************************************************************/
// Inlines use the above - include last.

View File

@ -179,25 +179,8 @@ XPCThrower::Verbosify(XPCCallContext& ccx,
if(ccx.HasInterfaceAndMember())
{
XPCNativeInterface* iface = ccx.GetInterface();
jsid id = JSID_VOID;
#ifdef XPC_IDISPATCH_SUPPORT
NS_ASSERTION(ccx.GetIDispatchMember() == nsnull ||
ccx.GetMember() == nsnull,
"Both IDispatch member and regular XPCOM member "
"were set in XPCCallContext");
if(ccx.GetIDispatchMember())
{
XPCDispInterface::Member * member =
reinterpret_cast<XPCDispInterface::Member*>(ccx.GetIDispatchMember());
if(member && JSID_IS_STRING(member->GetName()))
{
id = member->GetName();
}
}
else
#endif
{
id = ccx.GetMember()->GetName();
jsid id = ccx.GetMember()->GetName();
}
JSAutoByteString bytes;
const char *name = JSID_IS_VOID(id) ? "Unknown" : bytes.encode(ccx, JSID_TO_STRING(id));
@ -339,60 +322,3 @@ XPCThrower::ThrowExceptionObject(JSContext* cx, nsIException* e)
}
return success;
}
#ifdef XPC_IDISPATCH_SUPPORT
// static
void
XPCThrower::ThrowCOMError(JSContext* cx, unsigned long COMErrorCode,
nsresult rv, const EXCEPINFO * exception)
{
nsCAutoString msg;
IErrorInfo * pError;
const char * format;
if(!nsXPCException::NameAndFormatForNSResult(rv, nsnull, &format))
format = "";
msg = format;
if(exception)
{
msg += static_cast<const char *>
(_bstr_t(exception->bstrSource, false));
msg += " : ";
msg.AppendInt(static_cast<PRUint32>(COMErrorCode));
msg += " - ";
msg += static_cast<const char *>
(_bstr_t(exception->bstrDescription, false));
}
else
{
// Get the current COM error object
unsigned long result = GetErrorInfo(0, &pError);
if(SUCCEEDED(result) && pError)
{
// Build an error message from the COM error object
BSTR bstrSource = NULL;
if(SUCCEEDED(pError->GetSource(&bstrSource)) && bstrSource)
{
_bstr_t src(bstrSource, false);
msg += static_cast<const char *>(src);
msg += " : ";
}
msg.AppendInt(static_cast<PRUint32>(COMErrorCode), 16);
BSTR bstrDesc = NULL;
if(SUCCEEDED(pError->GetDescription(&bstrDesc)) && bstrDesc)
{
msg += " - ";
_bstr_t desc(bstrDesc, false);
msg += static_cast<const char *>(desc);
}
}
else
{
// No error object, so just report the result
msg += "COM Error Result = ";
msg.AppendInt(static_cast<PRUint32>(COMErrorCode), 16);
}
}
XPCThrower::BuildAndThrowException(cx, rv, msg.get());
}
#endif

View File

@ -661,13 +661,6 @@ nsXPCWrappedJSClass::DelegatedQueryInterface(nsXPCWrappedJS* self,
return NS_OK;
}
#ifdef XPC_IDISPATCH_SUPPORT
// If IDispatch is enabled and we're QI'ing to IDispatch
if(nsXPConnect::IsIDispatchEnabled() && aIID.Equals(NSID_IDISPATCH))
{
return XPCIDispatchExtension::IDispatchQIWrappedJS(self, aInstancePtr);
}
#endif
if(aIID.Equals(NS_GET_IID(nsIPropertyBag)))
{
// We only want to expose one implementation from our aggregate.

View File

@ -356,20 +356,7 @@ XPCWrappedNative::GetNewOrUsed(XPCCallContext& ccx,
NS_ASSERTION(!Scope->GetRuntime()->GetThreadRunningGC(),
"XPCWrappedNative::GetNewOrUsed called during GC");
nsISupports *identity;
#ifdef XPC_IDISPATCH_SUPPORT
// XXX This is done for the benefit of some warped COM implementations
// where QI(IID_IUnknown, a.b) == QI(IID_IUnknown, a). If someone passes
// in a pointer that hasn't been QI'd to IDispatch properly this could
// create multiple wrappers for the same object, creating a fair bit of
// confusion.
PRBool isIDispatch = Interface &&
Interface->GetIID()->Equals(NSID_IDISPATCH);
if(isIDispatch)
identity = helper.Object();
else
#endif
identity = helper.GetCanonical();
nsISupports *identity = helper.GetCanonical();
if(!identity)
{
@ -435,18 +422,6 @@ XPCWrappedNative::GetNewOrUsed(XPCCallContext& ccx,
nsIClassInfo *info = helper.GetClassInfo();
#ifdef XPC_IDISPATCH_SUPPORT
// If this is an IDispatch wrapper and it didn't give us a class info
// we'll provide a default one
nsCOMPtr<nsIClassInfo> dispatchInfo;
if(isIDispatch && !info)
{
dispatchInfo = dont_AddRef(static_cast<nsIClassInfo*>
(XPCIDispatchClassInfo::GetSingleton()));
info = dispatchInfo;
}
#endif
XPCNativeScriptableCreateInfo sciProto;
XPCNativeScriptableCreateInfo sci;
@ -845,14 +820,7 @@ XPCWrappedNative::GetUsedOnly(XPCCallContext& ccx,
}
else
{
nsCOMPtr<nsISupports> identity;
#ifdef XPC_IDISPATCH_SUPPORT
// XXX See GetNewOrUsed for more info on this
if(Interface->GetIID()->Equals(NSID_IDISPATCH))
identity = Object;
else
#endif
identity = do_QueryInterface(Object);
nsCOMPtr<nsISupports> identity = do_QueryInterface(Object);
if(!identity)
{
@ -1466,10 +1434,6 @@ XPCWrappedNative::SystemIsBeingShutDown(JSContext* cx)
if(to->GetJSObject())
{
JS_SetPrivate(cx, to->GetJSObject(), nsnull);
#ifdef XPC_IDISPATCH_SUPPORT
if(to->IsIDispatch())
delete to->GetIDispatchInfo();
#endif
to->SetJSObject(nsnull);
}
// We leak the tearoff mNative
@ -2174,13 +2138,6 @@ XPCWrappedNative::InitTearOff(XPCCallContext& ccx,
aTearOff->SetInterface(aInterface);
aTearOff->SetNative(obj);
#ifdef XPC_IDISPATCH_SUPPORT
// Are we building a tearoff for IDispatch?
if(iid->Equals(NSID_IDISPATCH))
{
aTearOff->SetIDispatch(ccx);
}
#endif
if(needJSObject && !InitTearOffJSObject(ccx, aTearOff))
return NS_ERROR_OUT_OF_MEMORY;

View File

@ -406,14 +406,6 @@ DefinePropertyIfFound(XPCCallContext& ccx,
nsnull, propFlags);
}
#ifdef XPC_IDISPATCH_SUPPORT
// Check to see if there's an IDispatch tearoff
if(wrapperToReflectInterfaceNames &&
XPCIDispatchExtension::DefineProperty(ccx, obj,
id, wrapperToReflectInterfaceNames, propFlags, resolved))
return JS_TRUE;
#endif
if(resolved)
*resolved = JS_FALSE;
return JS_TRUE;
@ -634,13 +626,6 @@ XPC_WN_Shared_Enumerate(JSContext *cx, JSObject *obj)
for(PRUint16 i = 0; i < interface_count; i++)
{
XPCNativeInterface* iface = interfaceArray[i];
#ifdef XPC_IDISPATCH_SUPPORT
if(iface->GetIID()->Equals(NSID_IDISPATCH))
{
XPCIDispatchExtension::Enumerate(ccx, obj, wrapper);
continue;
}
#endif
PRUint16 member_count = iface->GetMemberCount();
for(PRUint16 k = 0; k < member_count; k++)
{