Bug 1029494 Part 5: Replace AutoPushJSContext in nsNPAPIPlugin _getpluginelement. r=bholley

This commit is contained in:
Bob Owen
2014-06-26 12:08:49 +01:00
parent ef9a6c25d3
commit 722d50a287

View File

@@ -41,6 +41,7 @@
#include "nsWildCard.h"
#include "nsContentUtils.h"
#include "nsCxPusher.h"
#include "mozilla/dom/ScriptSettings.h"
#include "nsIXPConnect.h"
@@ -643,27 +644,6 @@ GetDocumentFromNPP(NPP npp)
return doc;
}
static JSContext *
GetJSContextFromDoc(nsIDocument *doc)
{
nsCOMPtr<nsIScriptGlobalObject> sgo = do_QueryInterface(doc->GetWindow());
NS_ENSURE_TRUE(sgo, nullptr);
nsIScriptContext *scx = sgo->GetContext();
NS_ENSURE_TRUE(scx, nullptr);
return scx->GetNativeContext();
}
static JSContext *
GetJSContextFromNPP(NPP npp)
{
nsIDocument *doc = GetDocumentFromNPP(npp);
NS_ENSURE_TRUE(doc, nullptr);
return GetJSContextFromDoc(doc);
}
static already_AddRefed<nsIChannel>
GetChannelFromNPP(NPP npp)
{
@@ -1239,9 +1219,16 @@ _getpluginelement(NPP npp)
if (!element)
return nullptr;
AutoPushJSContext cx(GetJSContextFromNPP(npp));
NS_ENSURE_TRUE(cx, nullptr);
JSAutoRequest ar(cx); // Unnecessary once bug 868130 lands.
nsIDocument *doc = GetDocumentFromNPP(npp);
if (NS_WARN_IF(!doc)) {
return nullptr;
}
dom::AutoJSAPI jsapi;
if (NS_WARN_IF(!jsapi.Init(doc->GetInnerWindow()))) {
return nullptr;
}
JSContext* cx = jsapi.cx();
nsCOMPtr<nsIXPConnect> xpc(do_GetService(nsIXPConnect::GetCID()));
NS_ENSURE_TRUE(xpc, nullptr);