Bug 851695 - PreCreate for BackstagePass. r=bholley

This commit is contained in:
Gabor Krizsanits 2013-04-10 17:35:32 +02:00
parent fd8a35a930
commit 639d557288
2 changed files with 23 additions and 3 deletions

View File

@ -4660,8 +4660,9 @@ NS_IMETHODIMP
nsXPCComponents::GetHelperForLanguage(uint32_t language,
nsISupports **retval)
{
*retval = static_cast<nsIXPCComponents*>(this);
NS_ADDREF(this);
nsCOMPtr<nsISupports> supports =
do_QueryInterface(static_cast<nsIXPCComponents *>(this));
supports.forget(retval);
return NS_OK;
}

View File

@ -29,6 +29,7 @@ NS_IMPL_THREADSAFE_RELEASE(BackstagePass)
#define XPC_MAP_QUOTED_CLASSNAME "BackstagePass"
#define XPC_MAP_WANT_NEWRESOLVE
#define XPC_MAP_WANT_FINALIZE
#define XPC_MAP_WANT_PRECREATE
#define XPC_MAP_FLAGS nsIXPCScriptable::USE_JSSTUB_FOR_ADDPROPERTY | \
nsIXPCScriptable::USE_JSSTUB_FOR_DELPROPERTY | \
@ -108,7 +109,9 @@ NS_IMETHODIMP
BackstagePass::GetHelperForLanguage(uint32_t language,
nsISupports **retval)
{
*retval = nullptr;
nsCOMPtr<nsISupports> supports =
do_QueryInterface(static_cast<nsIGlobalObject *>(this));
supports.forget(retval);
return NS_OK;
}
@ -169,6 +172,22 @@ BackstagePass::Finalize(nsIXPConnectWrappedNative *wrapper, JSFreeOp * fop, JSOb
return NS_OK;
}
NS_IMETHODIMP
BackstagePass::PreCreate(nsISupports *nativeObj, JSContext *cx,
JSObject *globalObj, JSObject **parentObj)
{
// We do the same trick here as for WindowSH. Return the js global
// as parent, so XPConenct can find the right scope and the wrapper
// that already exists.
nsCOMPtr<nsIGlobalObject> global(do_QueryInterface(nativeObj));
MOZ_ASSERT(global, "nativeObj not a global object!");
JSObject *jsglobal = global->GetGlobalJSObject();
if (jsglobal)
*parentObj = jsglobal;
return NS_OK;
}
nsresult
NS_NewBackstagePass(BackstagePass** ret)
{