From f6c3724b54a68850b19b30d344e828696f4b1554 Mon Sep 17 00:00:00 2001 From: Ms2ger Date: Sat, 5 May 2012 11:00:06 +0200 Subject: [PATCH] Bug 745478 - Pass JSObjects to nsXBLProtoImplMember::InstallMember; r=jst --- content/xbl/src/nsXBLProtoImplMember.h | 4 ++-- content/xbl/src/nsXBLProtoImplMethod.cpp | 23 ++++++++++------------ content/xbl/src/nsXBLProtoImplMethod.h | 8 ++++---- content/xbl/src/nsXBLProtoImplProperty.cpp | 21 +++++++++----------- content/xbl/src/nsXBLProtoImplProperty.h | 4 ++-- 5 files changed, 27 insertions(+), 33 deletions(-) diff --git a/content/xbl/src/nsXBLProtoImplMember.h b/content/xbl/src/nsXBLProtoImplMember.h index 3bc560c3403b..c4515ecc2e25 100644 --- a/content/xbl/src/nsXBLProtoImplMember.h +++ b/content/xbl/src/nsXBLProtoImplMember.h @@ -110,8 +110,8 @@ public: virtual nsresult InstallMember(nsIScriptContext* aContext, nsIContent* aBoundElement, - void* aScriptObject, - void* aTargetClassObject, + JSObject* aScriptObject, // Unused + JSObject* aTargetClassObject, const nsCString& aClassStr) = 0; virtual nsresult CompileMember(nsIScriptContext* aContext, const nsCString& aClassStr, diff --git a/content/xbl/src/nsXBLProtoImplMethod.cpp b/content/xbl/src/nsXBLProtoImplMethod.cpp index 10f276c7d940..f86a13223ef2 100644 --- a/content/xbl/src/nsXBLProtoImplMethod.cpp +++ b/content/xbl/src/nsXBLProtoImplMethod.cpp @@ -122,31 +122,28 @@ nsXBLProtoImplMethod::SetLineNumber(PRUint32 aLineNumber) nsresult nsXBLProtoImplMethod::InstallMember(nsIScriptContext* aContext, nsIContent* aBoundElement, - void* aScriptObject, - void* aTargetClassObject, + JSObject* aScriptObject, + JSObject* aTargetClassObject, const nsCString& aClassStr) { NS_PRECONDITION(IsCompiled(), "Should not be installing an uncompiled method"); JSContext* cx = aContext->GetNativeContext(); - nsIDocument *ownerDoc = aBoundElement->OwnerDoc(); - nsIScriptGlobalObject *sgo; + nsIScriptGlobalObject* sgo = aBoundElement->OwnerDoc()->GetScopeObject(); - if (!(sgo = ownerDoc->GetScopeObject())) { + if (!sgo) { return NS_ERROR_UNEXPECTED; } - JSObject * scriptObject = (JSObject *) aScriptObject; - NS_ASSERTION(scriptObject, "uh-oh, script Object should NOT be null or bad things will happen"); - if (!scriptObject) + NS_ASSERTION(aScriptObject, "uh-oh, script Object should NOT be null or bad things will happen"); + if (!aScriptObject) return NS_ERROR_FAILURE; - JSObject * targetClassObject = (JSObject *) aTargetClassObject; - JSObject * globalObject = sgo->GetGlobalJSObject(); + JSObject* globalObject = sgo->GetGlobalJSObject(); // now we want to reevaluate our property using aContext and the script object for this window... - if (mJSMethodObject && targetClassObject) { + if (mJSMethodObject && aTargetClassObject) { nsDependentString name(mName); JSAutoRequest ar(cx); JSAutoEnterCompartment ac; @@ -160,8 +157,8 @@ nsXBLProtoImplMethod::InstallMember(nsIScriptContext* aContext, return NS_ERROR_OUT_OF_MEMORY; } - if (!::JS_DefineUCProperty(cx, targetClassObject, - reinterpret_cast(mName), + if (!::JS_DefineUCProperty(cx, aTargetClassObject, + static_cast(mName), name.Length(), OBJECT_TO_JSVAL(method), NULL, NULL, JSPROP_ENUMERATE)) { return NS_ERROR_OUT_OF_MEMORY; diff --git a/content/xbl/src/nsXBLProtoImplMethod.h b/content/xbl/src/nsXBLProtoImplMethod.h index 0447153a26fd..90d1640df649 100644 --- a/content/xbl/src/nsXBLProtoImplMethod.h +++ b/content/xbl/src/nsXBLProtoImplMethod.h @@ -122,8 +122,8 @@ public: virtual nsresult InstallMember(nsIScriptContext* aContext, nsIContent* aBoundElement, - void* aScriptObject, - void* aTargetClassObject, + JSObject* aScriptObject, + JSObject* aTargetClassObject, const nsCString& aClassStr); virtual nsresult CompileMember(nsIScriptContext* aContext, const nsCString& aClassStr, @@ -174,8 +174,8 @@ public: // prototype implementation). virtual nsresult InstallMember(nsIScriptContext* aContext, nsIContent* aBoundElement, - void* aScriptObject, - void* aTargetClassObject, + JSObject* aScriptObject, + JSObject* aTargetClassObject, const nsCString& aClassStr) { return NS_OK; } diff --git a/content/xbl/src/nsXBLProtoImplProperty.cpp b/content/xbl/src/nsXBLProtoImplProperty.cpp index 2037a6bd62de..4d6b9f13bdee 100644 --- a/content/xbl/src/nsXBLProtoImplProperty.cpp +++ b/content/xbl/src/nsXBLProtoImplProperty.cpp @@ -166,31 +166,28 @@ const char* gPropertyArgs[] = { "val" }; nsresult nsXBLProtoImplProperty::InstallMember(nsIScriptContext* aContext, nsIContent* aBoundElement, - void* aScriptObject, - void* aTargetClassObject, + JSObject* aScriptObject, + JSObject* aTargetClassObject, const nsCString& aClassStr) { NS_PRECONDITION(mIsCompiled, "Should not be installing an uncompiled property"); JSContext* cx = aContext->GetNativeContext(); - nsIDocument *ownerDoc = aBoundElement->OwnerDoc(); - nsIScriptGlobalObject *sgo; + nsIScriptGlobalObject* sgo = aBoundElement->OwnerDoc()->GetScopeObject(); - if (!(sgo = ownerDoc->GetScopeObject())) { + if (!sgo) { return NS_ERROR_UNEXPECTED; } - JSObject * scriptObject = (JSObject *) aScriptObject; - NS_ASSERTION(scriptObject, "uh-oh, script Object should NOT be null or bad things will happen"); - if (!scriptObject) + NS_ASSERTION(aScriptObject, "uh-oh, script Object should NOT be null or bad things will happen"); + if (!aScriptObject) return NS_ERROR_FAILURE; - JSObject * targetClassObject = (JSObject *) aTargetClassObject; JSObject * globalObject = sgo->GetGlobalJSObject(); // now we want to reevaluate our property using aContext and the script object for this window... - if ((mJSGetterObject || mJSSetterObject) && targetClassObject) { + if ((mJSGetterObject || mJSSetterObject) && aTargetClassObject) { JSObject * getter = nsnull; JSAutoRequest ar(cx); JSAutoEnterCompartment ac; @@ -208,8 +205,8 @@ nsXBLProtoImplProperty::InstallMember(nsIScriptContext* aContext, return NS_ERROR_OUT_OF_MEMORY; nsDependentString name(mName); - if (!::JS_DefineUCProperty(cx, targetClassObject, - reinterpret_cast(mName), + if (!::JS_DefineUCProperty(cx, aTargetClassObject, + static_cast(mName), name.Length(), JSVAL_VOID, JS_DATA_TO_FUNC_PTR(JSPropertyOp, getter), JS_DATA_TO_FUNC_PTR(JSStrictPropertyOp, setter), diff --git a/content/xbl/src/nsXBLProtoImplProperty.h b/content/xbl/src/nsXBLProtoImplProperty.h index b7dc7b9dc33a..f73fa6bd04eb 100644 --- a/content/xbl/src/nsXBLProtoImplProperty.h +++ b/content/xbl/src/nsXBLProtoImplProperty.h @@ -67,8 +67,8 @@ public: virtual nsresult InstallMember(nsIScriptContext* aContext, nsIContent* aBoundElement, - void* aScriptObject, - void* aTargetClassObject, + JSObject* aScriptObject, + JSObject* aTargetClassObject, const nsCString& aClassStr); virtual nsresult CompileMember(nsIScriptContext* aContext, const nsCString& aClassStr,