зеркало из https://github.com/mozilla/gecko-dev.git
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:
Родитель
52912b39d2
Коммит
bc321b52bc
|
@ -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;
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче