Fixing bug 233307. deCOMtaminating nsIScript* and related interfaces. r+sr=bryner@brianryner.com.

git-svn-id: svn://10.0.0.236/trunk@194874 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
jst%mozilla.jstenback.com
2006-04-20 03:38:45 +00:00
parent a646032f89
commit 0fa6f0e5c3
2 changed files with 18 additions and 27 deletions

View File

@@ -112,30 +112,24 @@ static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
XML_HTTP_REQUEST_SENT | \
XML_HTTP_REQUEST_STOPPED)
static void
GetCurrentContext(nsIScriptContext **aScriptContext)
static nsIScriptContext *
GetCurrentContext()
{
*aScriptContext = nsnull;
// Get JSContext from stack.
nsCOMPtr<nsIJSContextStack> stack =
do_GetService("@mozilla.org/js/xpc/ContextStack;1");
if (!stack) {
return;
return nsnull;
}
JSContext *cx;
if (NS_FAILED(stack->Peek(&cx))) {
return;
if (NS_FAILED(stack->Peek(&cx)) || !cx) {
return nsnull;
}
if (cx) {
GetScriptContextFromJSContext(cx, aScriptContext);
}
return;
return GetScriptContextFromJSContext(cx);
}
/**
@@ -151,9 +145,8 @@ GetDocumentFromScriptContext(nsIScriptContext *aScriptContext)
if (!aScriptContext)
return nsnull;
nsCOMPtr<nsIScriptGlobalObject> global;
aScriptContext->GetGlobalObject(getter_AddRefs(global));
nsCOMPtr<nsIDOMWindow> window = do_QueryInterface(global);
nsCOMPtr<nsIDOMWindow> window =
do_QueryInterface(aScriptContext->GetGlobalObject());
nsIDocument *doc = nsnull;
if (window) {
nsCOMPtr<nsIDOMDocument> domdoc;
@@ -233,7 +226,7 @@ nsXMLHttpRequest::AddEventListener(const nsAString& type,
else {
return NS_ERROR_INVALID_ARG;
}
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
return NS_OK;
}
@@ -290,7 +283,7 @@ nsXMLHttpRequest::SetOnreadystatechange(nsIOnReadystatechangeHandler * aOnreadys
{
mOnReadystatechangeListener = aOnreadystatechange;
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
return NS_OK;
}
@@ -313,7 +306,7 @@ nsXMLHttpRequest::SetOnload(nsIDOMEventListener * aOnLoad)
{
mOnLoadListener = aOnLoad;
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
return NS_OK;
}
@@ -335,7 +328,7 @@ nsXMLHttpRequest::SetOnerror(nsIDOMEventListener * aOnerror)
{
mOnErrorListener = aOnerror;
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
return NS_OK;
}
@@ -602,7 +595,7 @@ nsXMLHttpRequest::GetLoadGroup(nsILoadGroup **aLoadGroup)
*aLoadGroup = nsnull;
if (!mScriptContext) {
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
}
nsCOMPtr<nsIDocument> doc = GetDocumentFromScriptContext(mScriptContext);
@@ -620,7 +613,7 @@ nsXMLHttpRequest::GetBaseURI(nsIURI **aBaseURI)
*aBaseURI = nsnull;
if (!mScriptContext) {
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
if (!mScriptContext) {
return NS_OK;
}
@@ -1321,7 +1314,7 @@ nsXMLHttpRequest::Send(nsIVariant *aBody)
if (!mScriptContext) {
// We need a context to check if redirect (if any) is allowed
GetCurrentContext(getter_AddRefs(mScriptContext));
mScriptContext = GetCurrentContext();
}
// Hook us up to listen to redirects and the like