diff --git a/content/base/src/WebSocket.cpp b/content/base/src/WebSocket.cpp index 7aecf06725fd..a6e06f7234c2 100644 --- a/content/base/src/WebSocket.cpp +++ b/content/base/src/WebSocket.cpp @@ -11,13 +11,13 @@ #include "jsfriendapi.h" #include "js/OldDebugAPI.h" #include "mozilla/DOMEventTargetHelper.h" +#include "mozilla/dom/ScriptSettings.h" #include "nsIScriptGlobalObject.h" #include "nsIDOMWindow.h" #include "nsIDocument.h" #include "nsXPCOM.h" #include "nsIXPConnect.h" #include "nsContentUtils.h" -#include "nsCxPusher.h" #include "nsError.h" #include "nsIScriptObjectPrincipal.h" #include "nsIURL.h" @@ -865,15 +865,14 @@ WebSocket::CreateAndDispatchMessageEvent(const nsACString& aData, if (NS_FAILED(rv)) return NS_OK; - // Get the JSContext - nsCOMPtr sgo = do_QueryInterface(GetOwner()); - NS_ENSURE_TRUE(sgo, NS_ERROR_FAILURE); + nsCOMPtr globalObject = do_QueryInterface(GetOwner()); + if (NS_WARN_IF(!globalObject)) { + return NS_ERROR_FAILURE; + } - nsIScriptContext* scriptContext = sgo->GetContext(); - NS_ENSURE_TRUE(scriptContext, NS_ERROR_FAILURE); - - AutoPushJSContext cx(scriptContext->GetNativeContext()); - NS_ENSURE_TRUE(cx, NS_ERROR_FAILURE); + AutoJSAPI jsapi; + JSContext* cx = jsapi.cx(); + JSAutoCompartment ac(cx, globalObject->GetGlobalJSObject()); // Create appropriate JS object for message JS::Rooted jsData(cx);