Bug 902718 - Use the SafeJSContext for XBL serialization and deserialization. r=bz

This commit is contained in:
Bobby Holley 2013-08-09 09:25:13 -07:00
parent 2ae63c93c3
commit 1ec46ae8f9
8 changed files with 9 additions and 16 deletions

View File

@ -14,6 +14,7 @@
class nsIObjectInputStream;
class nsIObjectOutputStream;
class nsIScriptContext;
class nsIURI;
class nsXBLProtoImplField

View File

@ -16,7 +16,6 @@
class nsIContent;
class nsIObjectOutputStream;
class nsIScriptContext;
struct nsXBLTextWithLineNumber
{

View File

@ -12,9 +12,7 @@
#include "nsContentUtils.h"
#include "nsCxPusher.h"
#include "nsReadableUtils.h"
#include "nsIScriptContext.h"
#include "nsJSUtils.h"
#include "nsIScriptGlobalObject.h"
#include "nsXBLPrototypeBinding.h"
#include "nsXBLSerialize.h"
#include "xpcpublic.h"

View File

@ -35,7 +35,6 @@
#include "nsTextFragment.h"
#include "nsTextNode.h"
#include "nsIScriptContext.h"
#include "nsIScriptError.h"
#include "nsIStyleRuleProcessor.h"
@ -946,13 +945,13 @@ nsXBLPrototypeBinding::Read(nsIObjectInputStream* aStream,
mInterfaceTable.Put(iid, mBinding);
}
AutoSafeJSContext cx;
nsCOMPtr<nsIScriptGlobalObjectOwner> globalOwner(do_QueryObject(aDocInfo));
nsIScriptGlobalObject* globalObject = globalOwner->GetScriptGlobalObject();
NS_ENSURE_TRUE(globalObject, NS_ERROR_UNEXPECTED);
nsIScriptContext *context = globalObject->GetContext();
NS_ENSURE_TRUE(context && context->GetNativeContext(), NS_ERROR_FAILURE);
AutoCxPusher pusher(context->GetNativeContext());
JS::Rooted<JSObject*> compilationGlobal(cx, globalObject->GetGlobalJSObject());
NS_ENSURE_TRUE(compilationGlobal, NS_ERROR_UNEXPECTED);
JSAutoCompartment ac(cx, compilationGlobal);
bool isFirstBinding = aFlags & XBLBinding_Serialize_IsFirstBinding;
rv = Init(id, aDocInfo, nullptr, isFirstBinding);
@ -1055,13 +1054,13 @@ nsXBLPrototypeBinding::Write(nsIObjectOutputStream* aStream)
// mKeyHandlersRegistered and mKeyHandlers are not serialized as they are
// computed on demand.
AutoSafeJSContext cx;
nsCOMPtr<nsIScriptGlobalObjectOwner> globalOwner(do_QueryObject(mXBLDocInfoWeak));
nsIScriptGlobalObject* globalObject = globalOwner->GetScriptGlobalObject();
NS_ENSURE_TRUE(globalObject, NS_ERROR_UNEXPECTED);
nsIScriptContext *context = globalObject->GetContext();
NS_ENSURE_TRUE(context && context->GetNativeContext(), NS_ERROR_FAILURE);
AutoCxPusher pusher(context->GetNativeContext());
JS::Rooted<JSObject*> compilationGlobal(cx, globalObject->GetGlobalJSObject());
NS_ENSURE_TRUE(compilationGlobal, NS_ERROR_UNEXPECTED);
JSAutoCompartment ac(cx, compilationGlobal);
uint8_t flags = mInheritStyle ? XBLBinding_Serialize_InheritStyle : 0;

View File

@ -22,7 +22,6 @@
class nsIAtom;
class nsIContent;
class nsIDocument;
class nsIScriptContext;
class nsSupportsHashtable;
class nsXBLProtoImplField;
class nsXBLBinding;

View File

@ -12,7 +12,6 @@
class nsIContent;
class nsIAtom;
class nsIScriptContext;
class nsSupportsHashtable;
class nsXBLResourceLoader;
class nsXBLPrototypeBinding;

View File

@ -11,7 +11,6 @@
class nsIContent;
class nsIAtom;
class nsIScriptContext;
class nsSupportsHashtable;
class nsXBLPrototypeResources;
class nsXBLPrototypeBinding;

View File

@ -8,7 +8,6 @@
#include "jsapi.h"
#include "nsIScriptContext.h"
#include "nsIObjectInputStream.h"
#include "nsIObjectOutputStream.h"
#include "nsINameSpaceManager.h"