本文整理汇总了C++中XPCJSContextStack::HasJSContext方法的典型用法代码示例。如果您正苦于以下问题:C++ XPCJSContextStack::HasJSContext方法的具体用法?C++ XPCJSContextStack::HasJSContext怎么用?C++ XPCJSContextStack::HasJSContext使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类XPCJSContextStack
的用法示例。
在下文中一共展示了XPCJSContextStack::HasJSContext方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: mScriptIsRunning
AutoCxPusher::AutoCxPusher(JSContext* cx, bool allowNull) : mScriptIsRunning(false)
{
MOZ_ASSERT_IF(!allowNull, cx);
// Hold a strong ref to the nsIScriptContext, if any. This ensures that we
// only destroy the mContext of an nsJSContext when it is not on the cx stack
// (and therefore not in use). See nsJSContext::DestroyJSContext().
if (cx)
mScx = GetScriptContextFromJSContext(cx);
// NB: The GetDynamicScriptContext is historical and might not be sane.
XPCJSContextStack *stack = XPCJSRuntime::Get()->GetJSContextStack();
if (cx && nsJSUtils::GetDynamicScriptContext(cx) && stack->HasJSContext(cx))
{
// If the context is on the stack, that means that a script
// is running at the moment in the context.
mScriptIsRunning = true;
}
if (!stack->Push(cx)) {
MOZ_CRASH();
}
#ifdef DEBUG
mPushedContext = cx;
mCompartmentDepthOnEntry = cx ? js::GetEnterCompartmentDepth(cx) : 0;
#endif
// Enter a request and a compartment for the duration that the cx is on the
// stack if non-null.
//
// NB: We call UnmarkGrayContext so that this can obsolete the need for the
// old XPCAutoRequest as well.
if (cx) {
mAutoRequest.construct(cx);
if (js::DefaultObjectForContextOrNull(cx))
mAutoCompartment.construct(cx, js::DefaultObjectForContextOrNull(cx));
xpc_UnmarkGrayContext(cx);
}
}