本文整理汇总了C++中XPCJSRuntime::GetJSRuntime方法的典型用法代码示例。如果您正苦于以下问题:C++ XPCJSRuntime::GetJSRuntime方法的具体用法?C++ XPCJSRuntime::GetJSRuntime怎么用?C++ XPCJSRuntime::GetJSRuntime使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XPCJSRuntime
的用法示例。
在下文中一共展示了XPCJSRuntime::GetJSRuntime方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: XPCJSRuntime
// static
XPCJSRuntime*
XPCJSRuntime::newXPCJSRuntime(nsXPConnect* aXPConnect,
nsIJSRuntimeService* aJSRuntimeService)
{
NS_PRECONDITION(aXPConnect,"bad param");
NS_PRECONDITION(aJSRuntimeService,"bad param");
XPCJSRuntime* self;
self = new XPCJSRuntime(aXPConnect,
aJSRuntimeService);
if(self &&
self->GetJSRuntime() &&
self->GetContextMap() &&
self->GetWrappedJSMap() &&
self->GetWrappedJSClassMap() &&
self->GetIID2NativeInterfaceMap() &&
self->GetClassInfo2NativeSetMap() &&
self->GetNativeSetMap() &&
self->GetThisTranslatorMap() &&
self->GetNativeScriptableSharedMap() &&
self->GetDyingWrappedNativeProtoMap() &&
self->GetExplicitNativeWrapperMap() &&
self->GetMapLock())
{
return self;
}
delete self;
return nsnull;
}
示例2:
void
xpc_PrintAllReferencesTo(void *p)
{
/* p must be a JS object */
XPCJSRuntime* rt = nsXPConnect::GetRuntimeInstance();
JS_DumpHeap(rt->GetJSRuntime(), stdout, nullptr, JSTRACE_OBJECT, p, 0x7fffffff, nullptr);
}
示例3: req
/* attribute JSContext safeJSContext; */
NS_IMETHODIMP
XPCJSContextStack::GetSafeJSContext(JSContext * *aSafeJSContext)
{
if(!mSafeJSContext)
{
#ifndef XPCONNECT_STANDALONE
// Start by getting the principal holder and principal for this
// context. If we can't manage that, don't bother with the rest.
nsRefPtr<nsNullPrincipal> principal = new nsNullPrincipal();
nsCOMPtr<nsIScriptObjectPrincipal> sop;
if(principal)
{
nsresult rv = principal->Init();
if(NS_SUCCEEDED(rv))
sop = new PrincipalHolder(principal);
}
if(!sop)
{
*aSafeJSContext = nsnull;
return NS_ERROR_FAILURE;
}
#endif /* !XPCONNECT_STANDALONE */
JSRuntime *rt;
XPCJSRuntime* xpcrt;
nsXPConnect* xpc = nsXPConnect::GetXPConnect();
nsCOMPtr<nsIXPConnect> xpcholder(static_cast<nsIXPConnect*>(xpc));
if(xpc && (xpcrt = xpc->GetRuntime()) && (rt = xpcrt->GetJSRuntime()))
{
JSObject *glob;
mSafeJSContext = JS_NewContext(rt, 8192);
if(mSafeJSContext)
{
nsCString origin;
principal->GetOrigin(getter_Copies(origin));
// scoped JS Request
JSAutoRequest req(mSafeJSContext);
JSCompartment *compartment;
nsresult rv = xpc_CreateGlobalObject(mSafeJSContext, &global_class,
origin, principal, &glob,
&compartment);
if(NS_FAILED(rv))
glob = nsnull;
#ifndef XPCONNECT_STANDALONE
if(glob)
{
// Make sure the context is associated with a proper compartment
// and not the default compartment.
JS_SetGlobalObject(mSafeJSContext, glob);
// Note: make sure to set the private before calling
// InitClasses
nsIScriptObjectPrincipal* priv = nsnull;
sop.swap(priv);
if(!JS_SetPrivate(mSafeJSContext, glob, priv))
{
// Drop the whole thing
NS_RELEASE(priv);
glob = nsnull;
}
}
// After this point either glob is null and the
// nsIScriptObjectPrincipal ownership is either handled by the
// nsCOMPtr or dealt with, or we'll release in the finalize
// hook.
#endif
if(glob && NS_FAILED(xpc->InitClasses(mSafeJSContext, glob)))
{
glob = nsnull;
}
}
if(mSafeJSContext && !glob)
{
// Destroy the context outside the scope of JSAutoRequest that
// uses the context in its destructor.
JS_DestroyContext(mSafeJSContext);
mSafeJSContext = nsnull;
}
// Save it off so we can destroy it later, even if
// mSafeJSContext has been set to another context
// via SetSafeJSContext. If we don't get here,
// then mSafeJSContext must have been set via
// SetSafeJSContext, and we're not responsible for
// destroying the passed-in context.
mOwnSafeJSContext = mSafeJSContext;
}
}
*aSafeJSContext = mSafeJSContext;
return mSafeJSContext ? NS_OK : NS_ERROR_UNEXPECTED;
}
示例4: req
JSContext*
XPCJSContextStack::GetSafeJSContext()
{
if (mSafeJSContext)
return mSafeJSContext;
// Start by getting the principal holder and principal for this
// context. If we can't manage that, don't bother with the rest.
nsRefPtr<nsNullPrincipal> principal = new nsNullPrincipal();
nsresult rv = principal->Init();
if (NS_FAILED(rv))
return NULL;
nsCOMPtr<nsIScriptObjectPrincipal> sop = new PrincipalHolder(principal);
nsRefPtr<nsXPConnect> xpc = nsXPConnect::GetXPConnect();
if (!xpc)
return NULL;
XPCJSRuntime* xpcrt = xpc->GetRuntime();
if (!xpcrt)
return NULL;
JSRuntime *rt = xpcrt->GetJSRuntime();
if (!rt)
return NULL;
mSafeJSContext = JS_NewContext(rt, 8192);
if (!mSafeJSContext)
return NULL;
JSObject *glob;
{
// scoped JS Request
JSAutoRequest req(mSafeJSContext);
JS_SetErrorReporter(mSafeJSContext, mozJSLoaderErrorReporter);
glob = xpc::CreateGlobalObject(mSafeJSContext, &global_class, principal);
if (glob) {
// Make sure the context is associated with a proper compartment
// and not the default compartment.
JS_SetGlobalObject(mSafeJSContext, glob);
// Note: make sure to set the private before calling
// InitClasses
nsIScriptObjectPrincipal* priv = nullptr;
sop.swap(priv);
JS_SetPrivate(glob, priv);
}
// After this point either glob is null and the
// nsIScriptObjectPrincipal ownership is either handled by the
// nsCOMPtr or dealt with, or we'll release in the finalize
// hook.
if (glob && NS_FAILED(xpc->InitClasses(mSafeJSContext, glob))) {
glob = nullptr;
}
}
if (mSafeJSContext && !glob) {
// Destroy the context outside the scope of JSAutoRequest that
// uses the context in its destructor.
JS_DestroyContext(mSafeJSContext);
mSafeJSContext = nullptr;
}
// Save it off so we can destroy it later.
mOwnSafeJSContext = mSafeJSContext;
return mSafeJSContext;
}
示例5: req
/* attribute JSContext safeJSContext; */
NS_IMETHODIMP
XPCJSContextStack::GetSafeJSContext(JSContext * *aSafeJSContext)
{
if(!mSafeJSContext)
{
#ifndef XPCONNECT_STANDALONE
// Start by getting the principal holder and principal for this
// context. If we can't manage that, don't bother with the rest.
nsCOMPtr<nsIPrincipal> principal =
do_CreateInstance("@mozilla.org/nullprincipal;1");
nsCOMPtr<nsIScriptObjectPrincipal> sop;
if(principal)
{
sop = new PrincipalHolder(principal);
}
if(!sop)
{
*aSafeJSContext = nsnull;
return NS_ERROR_FAILURE;
}
#endif /* !XPCONNECT_STANDALONE */
JSRuntime *rt;
XPCJSRuntime* xpcrt;
nsXPConnect* xpc = nsXPConnect::GetXPConnect();
nsCOMPtr<nsIXPConnect> xpcholder(static_cast<nsIXPConnect*>(xpc));
if(xpc && (xpcrt = xpc->GetRuntime()) && (rt = xpcrt->GetJSRuntime()))
{
mSafeJSContext = JS_NewContext(rt, 8192);
if(mSafeJSContext)
{
// scoped JS Request
AutoJSRequestWithNoCallContext req(mSafeJSContext);
JSObject *glob;
glob = JS_NewObject(mSafeJSContext, &global_class, NULL, NULL);
#ifndef XPCONNECT_STANDALONE
if(glob)
{
// Note: make sure to set the private before calling
// InitClasses
nsIScriptObjectPrincipal* priv = nsnull;
sop.swap(priv);
if(!JS_SetPrivate(mSafeJSContext, glob, priv))
{
// Drop the whole thing
NS_RELEASE(priv);
glob = nsnull;
}
}
// After this point either glob is null and the
// nsIScriptObjectPrincipal ownership is either handled by the
// nsCOMPtr or dealt with, or we'll release in the finalize
// hook.
#endif
if(!glob || NS_FAILED(xpc->InitClasses(mSafeJSContext, glob)))
{
// Explicitly end the request since we are about to kill
// the JSContext that 'req' will try to use when it
// goes out of scope.
req.EndRequest();
JS_DestroyContext(mSafeJSContext);
mSafeJSContext = nsnull;
}
// Save it off so we can destroy it later, even if
// mSafeJSContext has been set to another context
// via SetSafeJSContext. If we don't get here,
// then mSafeJSContext must have been set via
// SetSafeJSContext, and we're not responsible for
// destroying the passed-in context.
mOwnSafeJSContext = mSafeJSContext;
}
}
}
*aSafeJSContext = mSafeJSContext;
return mSafeJSContext ? NS_OK : NS_ERROR_UNEXPECTED;
}