diff --git a/mozilla/content/base/public/nsContentUtils.h b/mozilla/content/base/public/nsContentUtils.h index 60e39dd040e..aed49b5e64a 100644 --- a/mozilla/content/base/public/nsContentUtils.h +++ b/mozilla/content/base/public/nsContentUtils.h @@ -429,6 +429,14 @@ public: */ static const char *GetEventArgName(PRInt32 aNameSpaceID); + /** + * Return the nsIXPConnect service. + */ + static nsIXPConnect *XPConnect() + { + return sXPConnect; + } + private: static nsresult doReparentContentWrapper(nsIContent *aChild, nsIDocument *aNewDocument, diff --git a/mozilla/content/base/src/nsContentUtils.cpp b/mozilla/content/base/src/nsContentUtils.cpp index 7514bdc7c31..9c31426244c 100644 --- a/mozilla/content/base/src/nsContentUtils.cpp +++ b/mozilla/content/base/src/nsContentUtils.cpp @@ -148,12 +148,7 @@ nsContentUtils::Init() NS_ENSURE_SUCCESS(rv, rv); rv = CallGetService(nsIXPConnect::GetCID(), &sXPConnect); - if (NS_FAILED(rv)) { - // We could be a standalone DOM engine without JS, so no - // nsIXPConnect is actually ok... - - sXPConnect = nsnull; - } + NS_ENSURE_SUCCESS(rv, rv); rv = CallGetService(kJSStackContractID, &sThreadJSContextStack); if (NS_FAILED(rv) && sXPConnect) { diff --git a/mozilla/content/base/src/nsScriptLoader.cpp b/mozilla/content/base/src/nsScriptLoader.cpp index 7ab289809d1..aa934480a1a 100644 --- a/mozilla/content/base/src/nsScriptLoader.cpp +++ b/mozilla/content/base/src/nsScriptLoader.cpp @@ -662,14 +662,27 @@ nsScriptLoader::EvaluateScript(nsScriptLoadRequest* aRequest, } } + PRBool oldProcessingScriptTag = context->GetProcessingScriptTag(); context->SetProcessingScriptTag(PR_TRUE); PRBool isUndefined; context->EvaluateString(aScript, nsnull, principal, url.get(), aRequest->mLineNo, aRequest->mJSVersion, nsnull, - &isUndefined); + &isUndefined); - context->SetProcessingScriptTag(PR_FALSE); + ::JS_ReportPendingException((JSContext *)context->GetNativeContext()); + + + + context->SetProcessingScriptTag(oldProcessingScriptTag); + + nsCOMPtr ncc; + nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); + + if (ncc) { + ncc->SetExceptionWasThrown(PR_FALSE); + } return rv; } diff --git a/mozilla/content/events/src/nsEventListenerManager.cpp b/mozilla/content/events/src/nsEventListenerManager.cpp index 21de88dcd27..6b4d79474c6 100644 --- a/mozilla/content/events/src/nsEventListenerManager.cpp +++ b/mozilla/content/events/src/nsEventListenerManager.cpp @@ -1169,14 +1169,13 @@ nsEventListenerManager::AddScriptEventListener(nsISupports *aObject, nsresult rv; if (!aDeferCompilation) { - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); - JSContext *cx = (JSContext *)context->GetNativeContext(); nsCOMPtr holder; - - rv = xpc->WrapNative(cx, ::JS_GetGlobalObject(cx), aObject, - NS_GET_IID(nsISupports), getter_AddRefs(holder)); + rv = nsContentUtils::XPConnect()->WrapNative(cx, ::JS_GetGlobalObject(cx), + aObject, + NS_GET_IID(nsISupports), + getter_AddRefs(holder)); NS_ENSURE_SUCCESS(rv, rv); JSObject *scriptObject = nsnull; @@ -1296,10 +1295,9 @@ nsEventListenerManager::RegisterScriptEventListener(nsIScriptContext *aContext, JSContext *current_cx = (JSContext *)aContext->GetNativeContext(); nsCOMPtr holder; - - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); - rv = xpc->WrapNative(current_cx, ::JS_GetGlobalObject(current_cx), aObject, - NS_GET_IID(nsISupports), getter_AddRefs(holder)); + rv = nsContentUtils::XPConnect()-> + WrapNative(current_cx, ::JS_GetGlobalObject(current_cx), aObject, + NS_GET_IID(nsISupports), getter_AddRefs(holder)); NS_ENSURE_SUCCESS(rv, rv); JSObject *jsobj = nsnull; @@ -1373,14 +1371,14 @@ nsEventListenerManager::CompileEventHandlerInternal(nsIScriptContext *aContext, { nsresult result = NS_OK; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); - JSContext *cx = (JSContext *)aContext->GetNativeContext(); nsCOMPtr holder; - - result = xpc->WrapNative(cx, ::JS_GetGlobalObject(cx), aObject, - NS_GET_IID(nsISupports), getter_AddRefs(holder)); + result = nsContentUtils::XPConnect()->WrapNative(cx, + ::JS_GetGlobalObject(cx), + aObject, + NS_GET_IID(nsISupports), + getter_AddRefs(holder)); NS_ENSURE_SUCCESS(result, result); JSObject *jsobj = nsnull; diff --git a/mozilla/content/html/content/src/nsHTMLScriptElement.cpp b/mozilla/content/html/content/src/nsHTMLScriptElement.cpp index 721ca10ff52..7971474e3d8 100644 --- a/mozilla/content/html/content/src/nsHTMLScriptElement.cpp +++ b/mozilla/content/html/content/src/nsHTMLScriptElement.cpp @@ -224,22 +224,18 @@ nsHTMLScriptEventHandler::Invoke(nsISupports *aTargetObject, } // wrap the target object... - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); - nsCOMPtr holder; - JSContext *cx = (JSContext *)scriptContext->GetNativeContext(); JSObject *scriptObject = nsnull; - if (xpc) { - rv = xpc->WrapNative(cx, - ::JS_GetGlobalObject(cx), - aTargetObject, - NS_GET_IID(nsISupports), - getter_AddRefs(holder)); - if (holder) { - rv = holder->GetJSObject(&scriptObject); - } + nsCOMPtr holder; + nsContentUtils::XPConnect()->WrapNative(cx, ::JS_GetGlobalObject(cx), + aTargetObject, + NS_GET_IID(nsISupports), + getter_AddRefs(holder)); + if (holder) { + holder->GetJSObject(&scriptObject); } + // Fail if wrapping the native object failed... if (!scriptObject) { return NS_ERROR_FAILURE; diff --git a/mozilla/content/html/document/src/nsHTMLDocument.cpp b/mozilla/content/html/document/src/nsHTMLDocument.cpp index 60f2680de14..268b8b6a387 100644 --- a/mozilla/content/html/document/src/nsHTMLDocument.cpp +++ b/mozilla/content/html/document/src/nsHTMLDocument.cpp @@ -2236,16 +2236,11 @@ nsHTMLDocument::Writeln(const nsAString& aText) nsresult nsHTMLDocument::ScriptWriteCommon(PRBool aNewlineTerminate) { - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); - nsCOMPtr ncc; - nsresult rv = NS_OK; - - if (xpc) { - rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc)); - NS_ENSURE_SUCCESS(rv, rv); - } + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); + NS_ENSURE_SUCCESS(rv, rv); nsCAutoString spec; diff --git a/mozilla/content/xbl/src/nsBindingManager.cpp b/mozilla/content/xbl/src/nsBindingManager.cpp index fa7ca038053..09c377350dc 100644 --- a/mozilla/content/xbl/src/nsBindingManager.cpp +++ b/mozilla/content/xbl/src/nsBindingManager.cpp @@ -54,6 +54,7 @@ #include "nsIContent.h" #include "nsIDOMElement.h" #include "nsIDocument.h" +#include "nsContentUtils.h" #include "nsIPresShell.h" #include "nsIXMLContentSink.h" #include "nsContentCID.h" @@ -1148,9 +1149,7 @@ nsBindingManager::GetBindingImplementation(nsIContent* aContent, REFNSIID aIID, if (!jscontext) return NS_NOINTERFACE; - nsCOMPtr xpConnect = do_GetService("@mozilla.org/js/xpc/XPConnect;1"); - if (!xpConnect) - return NS_NOINTERFACE; + nsIXPConnect *xpConnect = nsContentUtils::XPConnect(); nsCOMPtr wrapper; xpConnect->GetWrappedNativeOfNativeObject(jscontext, diff --git a/mozilla/content/xbl/src/nsXBLBinding.cpp b/mozilla/content/xbl/src/nsXBLBinding.cpp index b06bfa2e532..874b6e56de6 100644 --- a/mozilla/content/xbl/src/nsXBLBinding.cpp +++ b/mozilla/content/xbl/src/nsXBLBinding.cpp @@ -56,6 +56,7 @@ #include "plstr.h" #include "nsIContent.h" #include "nsIDocument.h" +#include "nsContentUtils.h" #ifdef MOZ_XUL #include "nsIXULDocument.h" #endif @@ -958,16 +959,11 @@ nsXBLBinding::ChangeDocument(nsIDocument* aOldDocument, nsIDocument* aNewDocumen if (context) { JSContext *jscontext = (JSContext *)context->GetNativeContext(); - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), - &rv)); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr wrapper; - - rv = xpc->WrapNative(jscontext, ::JS_GetGlobalObject(jscontext), - mBoundElement, NS_GET_IID(nsISupports), - getter_AddRefs(wrapper)); + nsresult rv = nsContentUtils::XPConnect()-> + WrapNative(jscontext, ::JS_GetGlobalObject(jscontext), + mBoundElement, NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); NS_ENSURE_SUCCESS(rv, rv); JSObject* scriptObject = nsnull; @@ -1207,17 +1203,15 @@ nsXBLBinding::InitClass(const nsCString& aClassName, nsresult rv; // Obtain the bound element's current script object. - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - NS_ENSURE_SUCCESS(rv, rv); - JSContext* cx = (JSContext*)aContext->GetNativeContext(); nsCOMPtr wrapper; JSObject* global = ::JS_GetGlobalObject(cx); - rv = xpc->WrapNative(cx, global, mBoundElement, NS_GET_IID(nsISupports), - getter_AddRefs(wrapper)); + rv = nsContentUtils::XPConnect()->WrapNative(cx, global, mBoundElement, + NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); NS_ENSURE_SUCCESS(rv, rv); JSObject* object = nsnull; diff --git a/mozilla/content/xbl/src/nsXBLProtoImpl.cpp b/mozilla/content/xbl/src/nsXBLProtoImpl.cpp index e5d1d4e8b7e..e8c1d0964cd 100644 --- a/mozilla/content/xbl/src/nsXBLProtoImpl.cpp +++ b/mozilla/content/xbl/src/nsXBLProtoImpl.cpp @@ -39,6 +39,7 @@ #include "nsXBLProtoImpl.h" #include "nsIContent.h" #include "nsIDocument.h" +#include "nsContentUtils.h" #include "nsIScriptGlobalObject.h" #include "nsIScriptGlobalObjectOwner.h" #include "nsIScriptContext.h" @@ -108,10 +109,10 @@ nsXBLProtoImpl::InitTargetObjects(nsXBLPrototypeBinding* aBinding, JSContext* jscontext = (JSContext*)aContext->GetNativeContext(); JSObject* global = ::JS_GetGlobalObject(jscontext); nsCOMPtr wrapper; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - NS_ENSURE_SUCCESS(rv, rv); - rv = xpc->WrapNative(jscontext, global, aBoundElement, - NS_GET_IID(nsISupports), getter_AddRefs(wrapper)); + rv = nsContentUtils::XPConnect()->WrapNative(jscontext, global, + aBoundElement, + NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); NS_ENSURE_SUCCESS(rv, rv); JSObject * object = nsnull; rv = wrapper->GetJSObject(&object); diff --git a/mozilla/content/xbl/src/nsXBLPrototypeHandler.cpp b/mozilla/content/xbl/src/nsXBLPrototypeHandler.cpp index 03fdabef307..ff509719fc7 100644 --- a/mozilla/content/xbl/src/nsXBLPrototypeHandler.cpp +++ b/mozilla/content/xbl/src/nsXBLPrototypeHandler.cpp @@ -433,11 +433,10 @@ nsXBLPrototypeHandler::ExecuteHandler(nsIDOMEventReceiver* aReceiver, JSObject *global = boundGlobal->GetGlobalJSObject(); JSContext *cx = (JSContext *)boundContext->GetNativeContext(); - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - // XXX: Don't use the global object! - rv = xpc->WrapNative(cx, global, aReceiver, NS_GET_IID(nsISupports), - getter_AddRefs(wrapper)); + rv = nsContentUtils::XPConnect()->WrapNative(cx, global, aReceiver, + NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); NS_ENSURE_SUCCESS(rv, rv); rv = wrapper->GetJSObject(&scriptObject); diff --git a/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp b/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp index e61e55cacf4..9aa7e6b945d 100644 --- a/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp +++ b/mozilla/content/xul/templates/src/nsXULTemplateBuilder.cpp @@ -865,9 +865,7 @@ nsXULTemplateBuilder::InitHTMLTemplateRoot() if (! jscontext) return NS_ERROR_UNEXPECTED; - static NS_DEFINE_CID(kXPConnectCID, NS_XPCONNECT_CID); - nsCOMPtr xpc = do_GetService(kXPConnectCID, &rv); - NS_ENSURE_SUCCESS(rv, rv); + nsIXPConnect *xpc = nsContentUtils::XPConnect(); JSObject* jselement = nsnull; diff --git a/mozilla/dom/src/base/nsGlobalWindow.cpp b/mozilla/dom/src/base/nsGlobalWindow.cpp index b178df462b1..14130734f3a 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.cpp +++ b/mozilla/dom/src/base/nsGlobalWindow.cpp @@ -159,7 +159,6 @@ static nsIEntropyCollector *gEntropyCollector = nsnull; static PRInt32 gRefCnt = 0; static PRInt32 gOpenPopupSpamCount = 0; -nsIXPConnect *GlobalWindowImpl::sXPConnect = nsnull; nsIScriptSecurityManager *GlobalWindowImpl::sSecMan = nsnull; nsIFactory *GlobalWindowImpl::sComputedDOMStyleFactory = nsnull; #ifdef DEBUG_jst @@ -272,10 +271,6 @@ GlobalWindowImpl::GlobalWindowImpl() printf("++DOMWINDOW == %d\n", gRefCnt); #endif - if (!sXPConnect) { - CallGetService(nsIXPConnect::GetCID(), &sXPConnect); - } - if (!sSecMan) { CallGetService(NS_SCRIPTSECURITYMANAGER_CONTRACTID, &sSecMan); } @@ -299,7 +294,6 @@ GlobalWindowImpl::~GlobalWindowImpl() void GlobalWindowImpl::ShutDown() { - NS_IF_RELEASE(sXPConnect); NS_IF_RELEASE(sSecMan); NS_IF_RELEASE(sComputedDOMStyleFactory); @@ -598,9 +592,9 @@ GlobalWindowImpl::SetNewDocument(nsIDOMDocument* aDocument, if (mNavigator) { nsIDOMNavigator* navigator = NS_STATIC_CAST(nsIDOMNavigator*, mNavigator.get()); - sXPConnect->WrapNative(cx, mJSObject, navigator, - NS_GET_IID(nsIDOMNavigator), - getter_AddRefs(mNavigatorHolder)); + nsContentUtils::XPConnect()-> + WrapNative(cx, mJSObject, navigator, NS_GET_IID(nsIDOMNavigator), + getter_AddRefs(mNavigatorHolder)); } JSObject *gsp = @@ -2378,12 +2372,12 @@ NS_IMETHODIMP GlobalWindowImpl::Prompt(nsAString& aReturn) { NS_ENSURE_STATE(mDocShell); - NS_ENSURE_STATE(sXPConnect); nsresult rv = NS_OK; nsCOMPtr ncc; - rv = sXPConnect->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) @@ -3283,12 +3277,10 @@ GlobalWindowImpl::Open(nsIDOMWindow **_retval) { *_retval = nsnull; - NS_ENSURE_STATE(sXPConnect); - nsresult rv = NS_OK; - nsCOMPtr ncc; - rv = sXPConnect->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) @@ -3386,12 +3378,9 @@ GlobalWindowImpl::OpenDialog(nsIDOMWindow** _retval) return NS_ERROR_DOM_SECURITY_ERR; } - NS_ENSURE_STATE(sXPConnect); - - nsresult rv = NS_OK; nsCOMPtr ncc; - - rv = sXPConnect->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) @@ -3812,14 +3801,14 @@ GlobalWindowImpl::Find(const nsAString& aStr, NS_IMETHODIMP GlobalWindowImpl::Find(PRBool *aDidFind) { - NS_ENSURE_STATE(sXPConnect); nsresult rv = NS_OK; // We get the arguments passed to the function using the XPConnect native // call context. nsCOMPtr ncc; - rv = sXPConnect->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); NS_ASSERTION(ncc, "No Native Call Context." @@ -4740,10 +4729,9 @@ GlobalWindowImpl::SetTimeoutOrInterval(PRBool aIsInterval, PRInt32 *aReturn) return NS_ERROR_NOT_INITIALIZED; } - NS_ENSURE_STATE(sXPConnect); - nsCOMPtr ncc; - nsresult rv = sXPConnect->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) @@ -5278,12 +5266,11 @@ nsTimeoutImpl::AddRef() nsresult GlobalWindowImpl::ClearTimeoutOrInterval() { - NS_ENSURE_STATE(sXPConnect); - nsresult rv = NS_OK; nsCOMPtr ncc; - rv = sXPConnect->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) @@ -6217,12 +6204,9 @@ NavigatorImpl::sPrefInternal_id = JSVAL_VOID; NS_IMETHODIMP NavigatorImpl::Preference() { - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr ncc; - rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) diff --git a/mozilla/dom/src/base/nsGlobalWindow.h b/mozilla/dom/src/base/nsGlobalWindow.h index de90dc836da..5a5bc37a264 100644 --- a/mozilla/dom/src/base/nsGlobalWindow.h +++ b/mozilla/dom/src/base/nsGlobalWindow.h @@ -339,7 +339,6 @@ protected: friend class nsDOMScriptableHelper; friend class nsDOMWindowUtils; - static nsIXPConnect *sXPConnect; static nsIScriptSecurityManager *sSecMan; static nsIFactory *sComputedDOMStyleFactory; }; diff --git a/mozilla/dom/src/base/nsHistory.cpp b/mozilla/dom/src/base/nsHistory.cpp index 546f7b4375b..0cdcca028e9 100644 --- a/mozilla/dom/src/base/nsHistory.cpp +++ b/mozilla/dom/src/base/nsHistory.cpp @@ -51,6 +51,8 @@ #include "nsXPIDLString.h" #include "nsReadableUtils.h" #include "nsDOMClassInfo.h" +#include "nsContentUtils.h" + // // History class implementation // @@ -241,13 +243,9 @@ HistoryImpl::Go(PRInt32 aDelta) NS_IMETHODIMP HistoryImpl::Go() { - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr ncc; - - rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) diff --git a/mozilla/dom/src/base/nsJSEnvironment.cpp b/mozilla/dom/src/base/nsJSEnvironment.cpp index e436e99115b..f5060b97327 100644 --- a/mozilla/dom/src/base/nsJSEnvironment.cpp +++ b/mozilla/dom/src/base/nsJSEnvironment.cpp @@ -452,14 +452,11 @@ NotifyXPCIfExceptionPending(JSContext *cx) return; } - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); - - if (xpc) { - nsCOMPtr nccx; - xpc->GetCurrentNativeCallContext(getter_AddRefs(nccx)); - if (nccx) { - nccx->SetExceptionWasThrown(PR_TRUE); - } + nsCOMPtr nccx; + nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(nccx)); + if (nccx) { + nccx->SetExceptionWasThrown(PR_TRUE); } } @@ -623,10 +620,7 @@ nsJSContext::nsJSContext(JSRuntime *aRuntime) : mGCOnDestruction(PR_TRUE) // Let xpconnect resync its JSContext tracker. We do this before creating // a new JSContext just in case the heap manager recycles the JSContext // struct. - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - if (NS_SUCCEEDED(rv)) - xpc->SyncJSContexts(); + nsContentUtils::XPConnect()->SyncJSContexts(); mContext = ::JS_NewContext(aRuntime, gStackSize); if (mContext) { @@ -688,7 +682,7 @@ nsJSContext::~nsJSContext() mGlobalWrapperRef = nsnull; // Let xpconnect destroy the JSContext when it thinks the time is right. - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); + nsIXPConnect *xpc = nsContentUtils::XPConnect(); if (xpc) { PRBool do_gc = mGCOnDestruction && !sGCTimer && sReadyForGC; @@ -1482,8 +1476,7 @@ nsJSContext::InitContext(nsIScriptGlobalObject *aGlobalObject) mIsInitialized = PR_FALSE; - nsCOMPtr xpc = do_GetService(nsIXPConnect::GetCID(), &rv); - NS_ENSURE_SUCCESS(rv, rv); + nsIXPConnect *xpc = nsContentUtils::XPConnect(); JSObject *global = ::JS_GetGlobalObject(mContext); @@ -2056,13 +2049,9 @@ nsJSEnvironment::Init() gOldJSGCCallback = ::JS_SetGCCallbackRT(sRuntime, DOMGCCallback); // Set these global xpconnect options... - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - if (NS_SUCCEEDED(rv)) { - xpc->SetCollectGarbageOnMainThreadOnly(PR_TRUE); - xpc->SetDeferReleasesUntilAfterGarbageCollection(PR_TRUE); - } else { - NS_WARNING("Failed to get XPConnect service!"); - } + nsIXPConnect *xpc = nsContentUtils::XPConnect(); + xpc->SetCollectGarbageOnMainThreadOnly(PR_TRUE); + xpc->SetDeferReleasesUntilAfterGarbageCollection(PR_TRUE); #ifdef OJI // Initialize LiveConnect. XXXbe use contractid rather than GetCID diff --git a/mozilla/dom/src/base/nsJSUtils.cpp b/mozilla/dom/src/base/nsJSUtils.cpp index 7d59124ff02..56641b7bed5 100644 --- a/mozilla/dom/src/base/nsJSUtils.cpp +++ b/mozilla/dom/src/base/nsJSUtils.cpp @@ -53,6 +53,7 @@ #include "nsIServiceManager.h" #include "nsIXPConnect.h" #include "nsCOMPtr.h" +#include "nsContentUtils.h" JSBool @@ -110,20 +111,13 @@ nsJSUtils::ConvertJSValToXPCObject(nsISupports** aSupports, REFNSIID aIID, if (JSVAL_IS_NULL(aValue)) { return JS_TRUE; } - else if (JSVAL_IS_OBJECT(aValue)) { - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - if (NS_FAILED(rv)) - return JS_FALSE; + if (JSVAL_IS_OBJECT(aValue)) { // WrapJS does all the work to recycle an existing wrapper and/or do a QI - rv = xpc->WrapJS(aContext, JSVAL_TO_OBJECT(aValue), aIID, - (void**)aSupports); + nsresult rv = nsContentUtils::XPConnect()-> + WrapJS(aContext, JSVAL_TO_OBJECT(aValue), aIID, (void**)aSupports); - if (NS_FAILED(rv)) - return JS_FALSE; - - return JS_TRUE; + return NS_SUCCEEDED(rv); } return JS_FALSE; diff --git a/mozilla/dom/src/base/nsLocation.cpp b/mozilla/dom/src/base/nsLocation.cpp index 8cc8dc5d6db..44e2210e8c9 100644 --- a/mozilla/dom/src/base/nsLocation.cpp +++ b/mozilla/dom/src/base/nsLocation.cpp @@ -69,6 +69,7 @@ #include "nsIProtocolHandler.h" #include "nsReadableUtils.h" #include "nsITextToSubURI.h" +#include "nsContentUtils.h" static nsresult GetDocumentCharacterSetForURI(const nsAString& aHref, nsACString& aCharset) @@ -842,13 +843,9 @@ LocationImpl::Reload(PRBool aForceget) NS_IMETHODIMP LocationImpl::Reload() { - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr ncc; - - rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) diff --git a/mozilla/dom/src/base/nsPluginArray.cpp b/mozilla/dom/src/base/nsPluginArray.cpp index 566243c0ffb..9ee0876e13f 100644 --- a/mozilla/dom/src/base/nsPluginArray.cpp +++ b/mozilla/dom/src/base/nsPluginArray.cpp @@ -49,6 +49,7 @@ #include "nsDOMClassInfo.h" #include "nsPluginError.h" #include "nsIComponentRegistrar.h" +#include "nsContentUtils.h" static NS_DEFINE_CID(kPluginManagerCID, NS_PLUGINMANAGER_CID); @@ -226,13 +227,9 @@ PluginArrayImpl::Refresh(PRBool aReloadDocuments) NS_IMETHODIMP PluginArrayImpl::Refresh() { - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr ncc; - - rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc)); + nsresult rv = nsContentUtils::XPConnect()-> + GetCurrentNativeCallContext(getter_AddRefs(ncc)); NS_ENSURE_SUCCESS(rv, rv); if (!ncc) diff --git a/mozilla/dom/src/events/Makefile.in b/mozilla/dom/src/events/Makefile.in index 5f7b95c278d..b44f136e8e6 100644 --- a/mozilla/dom/src/events/Makefile.in +++ b/mozilla/dom/src/events/Makefile.in @@ -52,6 +52,8 @@ REQUIRES = xpcom \ content \ widget \ gfx \ + layout \ + pref \ $(NULL) CPPSRCS = \ diff --git a/mozilla/dom/src/events/nsJSEventListener.cpp b/mozilla/dom/src/events/nsJSEventListener.cpp index be0c51a6e90..ba84a15acd0 100644 --- a/mozilla/dom/src/events/nsJSEventListener.cpp +++ b/mozilla/dom/src/events/nsJSEventListener.cpp @@ -45,6 +45,7 @@ #include "nsIXPConnect.h" #include "nsIPrivateDOMEvent.h" #include "nsGUIEvent.h" +#include "nsContentUtils.h" /* @@ -114,7 +115,7 @@ nsJSEventListener::HandleEvent(nsIDOMEvent* aEvent) } nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID())); + nsIXPConnect *xpc = nsContentUtils::XPConnect(); // root nsCOMPtr wrapper; diff --git a/mozilla/layout/generic/nsObjectFrame.cpp b/mozilla/layout/generic/nsObjectFrame.cpp index 62a56424fb5..157a0ededcd 100644 --- a/mozilla/layout/generic/nsObjectFrame.cpp +++ b/mozilla/layout/generic/nsObjectFrame.cpp @@ -1885,15 +1885,11 @@ nsObjectFrame::NotifyContentObjectWrapper() JSContext *cx = (JSContext *)scx->GetNativeContext(); - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - if (NS_FAILED(rv)) - return; - nsCOMPtr wrapper; - xpc->GetWrappedNativeOfNativeObject(cx, ::JS_GetGlobalObject(cx), mContent, - NS_GET_IID(nsISupports), - getter_AddRefs(wrapper)); + nsContentUtils::XPConnect()-> + GetWrappedNativeOfNativeObject(cx, ::JS_GetGlobalObject(cx), mContent, + NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); if (!wrapper) { // Nothing to do here if there's no wrapper for mContent @@ -1916,7 +1912,7 @@ nsObjectFrame::NotifyContentObjectWrapper() } JSObject *obj = nsnull; - rv = wrapper->GetJSObject(&obj); + nsresult rv = wrapper->GetJSObject(&obj); if (NS_FAILED(rv)) return; diff --git a/mozilla/layout/html/base/src/nsObjectFrame.cpp b/mozilla/layout/html/base/src/nsObjectFrame.cpp index 62a56424fb5..157a0ededcd 100644 --- a/mozilla/layout/html/base/src/nsObjectFrame.cpp +++ b/mozilla/layout/html/base/src/nsObjectFrame.cpp @@ -1885,15 +1885,11 @@ nsObjectFrame::NotifyContentObjectWrapper() JSContext *cx = (JSContext *)scx->GetNativeContext(); - nsresult rv; - nsCOMPtr xpc(do_GetService(nsIXPConnect::GetCID(), &rv)); - if (NS_FAILED(rv)) - return; - nsCOMPtr wrapper; - xpc->GetWrappedNativeOfNativeObject(cx, ::JS_GetGlobalObject(cx), mContent, - NS_GET_IID(nsISupports), - getter_AddRefs(wrapper)); + nsContentUtils::XPConnect()-> + GetWrappedNativeOfNativeObject(cx, ::JS_GetGlobalObject(cx), mContent, + NS_GET_IID(nsISupports), + getter_AddRefs(wrapper)); if (!wrapper) { // Nothing to do here if there's no wrapper for mContent @@ -1916,7 +1912,7 @@ nsObjectFrame::NotifyContentObjectWrapper() } JSObject *obj = nsnull; - rv = wrapper->GetJSObject(&obj); + nsresult rv = wrapper->GetJSObject(&obj); if (NS_FAILED(rv)) return;