Fixing bug 248065. Make sure errors in nested scripts don't disrupt the containing script. r+sr=bzbarsky@mit.edu

This commit is contained in:
jst%mozilla.jstenback.com 2004-09-01 16:50:12 +00:00
Родитель 52912b39d2
Коммит bc321b52bc
22 изменённых файлов: 123 добавлений и 174 удалений

Просмотреть файл

@ -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,

Просмотреть файл

@ -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) {

Просмотреть файл

@ -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<nsIXPCNativeCallContext> ncc;
nsContentUtils::XPConnect()->
GetCurrentNativeCallContext(getter_AddRefs(ncc));
if (ncc) {
ncc->SetExceptionWasThrown(PR_FALSE);
}
return rv;
}

Просмотреть файл

@ -1169,14 +1169,13 @@ nsEventListenerManager::AddScriptEventListener(nsISupports *aObject,
nsresult rv;
if (!aDeferCompilation) {
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
JSContext *cx = (JSContext *)context->GetNativeContext();
nsCOMPtr<nsIXPConnectJSObjectHolder> 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<nsIXPConnectJSObjectHolder> holder;
nsCOMPtr<nsIXPConnect> 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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
JSContext *cx = (JSContext *)aContext->GetNativeContext();
nsCOMPtr<nsIXPConnectJSObjectHolder> 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;

Просмотреть файл

@ -224,22 +224,18 @@ nsHTMLScriptEventHandler::Invoke(nsISupports *aTargetObject,
}
// wrap the target object...
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
nsCOMPtr<nsIXPConnectJSObjectHolder> 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<nsIXPConnectJSObjectHolder> 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;

Просмотреть файл

@ -2236,16 +2236,11 @@ nsHTMLDocument::Writeln(const nsAString& aText)
nsresult
nsHTMLDocument::ScriptWriteCommon(PRBool aNewlineTerminate)
{
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
nsCOMPtr<nsIXPCNativeCallContext> 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;

Просмотреть файл

@ -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<nsIXPConnect> xpConnect = do_GetService("@mozilla.org/js/xpc/XPConnect;1");
if (!xpConnect)
return NS_NOINTERFACE;
nsIXPConnect *xpConnect = nsContentUtils::XPConnect();
nsCOMPtr<nsIXPConnectWrappedNative> wrapper;
xpConnect->GetWrappedNativeOfNativeObject(jscontext,

Просмотреть файл

@ -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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(),
&rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIXPConnectJSObjectHolder> 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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
NS_ENSURE_SUCCESS(rv, rv);
JSContext* cx = (JSContext*)aContext->GetNativeContext();
nsCOMPtr<nsIXPConnectJSObjectHolder> 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;

Просмотреть файл

@ -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<nsIXPConnectJSObjectHolder> wrapper;
nsCOMPtr<nsIXPConnect> 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);

Просмотреть файл

@ -433,11 +433,10 @@ nsXBLPrototypeHandler::ExecuteHandler(nsIDOMEventReceiver* aReceiver,
JSObject *global = boundGlobal->GetGlobalJSObject();
JSContext *cx = (JSContext *)boundContext->GetNativeContext();
nsCOMPtr<nsIXPConnect> 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);

Просмотреть файл

@ -865,9 +865,7 @@ nsXULTemplateBuilder::InitHTMLTemplateRoot()
if (! jscontext)
return NS_ERROR_UNEXPECTED;
static NS_DEFINE_CID(kXPConnectCID, NS_XPCONNECT_CID);
nsCOMPtr<nsIXPConnect> xpc = do_GetService(kXPConnectCID, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsIXPConnect *xpc = nsContentUtils::XPConnect();
JSObject* jselement = nsnull;

Просмотреть файл

@ -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<nsIXPCNativeCallContext> 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<nsIXPCNativeCallContext> 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<nsIXPCNativeCallContext> 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<nsIXPCNativeCallContext> 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<nsIXPCNativeCallContext> 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<nsIXPCNativeCallContext> 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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIXPCNativeCallContext> ncc;
rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc));
nsresult rv = nsContentUtils::XPConnect()->
GetCurrentNativeCallContext(getter_AddRefs(ncc));
NS_ENSURE_SUCCESS(rv, rv);
if (!ncc)

Просмотреть файл

@ -339,7 +339,6 @@ protected:
friend class nsDOMScriptableHelper;
friend class nsDOMWindowUtils;
static nsIXPConnect *sXPConnect;
static nsIScriptSecurityManager *sSecMan;
static nsIFactory *sComputedDOMStyleFactory;
};

Просмотреть файл

@ -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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIXPCNativeCallContext> ncc;
rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc));
nsresult rv = nsContentUtils::XPConnect()->
GetCurrentNativeCallContext(getter_AddRefs(ncc));
NS_ENSURE_SUCCESS(rv, rv);
if (!ncc)

Просмотреть файл

@ -452,14 +452,11 @@ NotifyXPCIfExceptionPending(JSContext *cx)
return;
}
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
if (xpc) {
nsCOMPtr<nsIXPCNativeCallContext> nccx;
xpc->GetCurrentNativeCallContext(getter_AddRefs(nccx));
if (nccx) {
nccx->SetExceptionWasThrown(PR_TRUE);
}
nsCOMPtr<nsIXPCNativeCallContext> 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<nsIXPConnect> 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<nsIXPConnect> 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<nsIXPConnect> 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<nsIXPConnect> 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

Просмотреть файл

@ -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<nsIXPConnect> 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;

Просмотреть файл

@ -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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIXPCNativeCallContext> ncc;
rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc));
nsresult rv = nsContentUtils::XPConnect()->
GetCurrentNativeCallContext(getter_AddRefs(ncc));
NS_ENSURE_SUCCESS(rv, rv);
if (!ncc)

Просмотреть файл

@ -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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIXPCNativeCallContext> ncc;
rv = xpc->GetCurrentNativeCallContext(getter_AddRefs(ncc));
nsresult rv = nsContentUtils::XPConnect()->
GetCurrentNativeCallContext(getter_AddRefs(ncc));
NS_ENSURE_SUCCESS(rv, rv);
if (!ncc)

Просмотреть файл

@ -52,6 +52,8 @@ REQUIRES = xpcom \
content \
widget \
gfx \
layout \
pref \
$(NULL)
CPPSRCS = \

Просмотреть файл

@ -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<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
nsIXPConnect *xpc = nsContentUtils::XPConnect();
// root
nsCOMPtr<nsIXPConnectJSObjectHolder> wrapper;

Просмотреть файл

@ -1885,15 +1885,11 @@ nsObjectFrame::NotifyContentObjectWrapper()
JSContext *cx = (JSContext *)scx->GetNativeContext();
nsresult rv;
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
if (NS_FAILED(rv))
return;
nsCOMPtr<nsIXPConnectWrappedNative> 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;

Просмотреть файл

@ -1885,15 +1885,11 @@ nsObjectFrame::NotifyContentObjectWrapper()
JSContext *cx = (JSContext *)scx->GetNativeContext();
nsresult rv;
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID(), &rv));
if (NS_FAILED(rv))
return;
nsCOMPtr<nsIXPConnectWrappedNative> 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;