当前位置: 首页>>代码示例>>C++>>正文


C++ JSAutoStructuredCloneBuffer::adopt方法代码示例

本文整理汇总了C++中JSAutoStructuredCloneBuffer::adopt方法的典型用法代码示例。如果您正苦于以下问题:C++ JSAutoStructuredCloneBuffer::adopt方法的具体用法?C++ JSAutoStructuredCloneBuffer::adopt怎么用?C++ JSAutoStructuredCloneBuffer::adopt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在JSAutoStructuredCloneBuffer的用法示例。


在下文中一共展示了JSAutoStructuredCloneBuffer::adopt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: cx

NS_IMETHODIMP
PostMessageRunnable::Run()
{
    MOZ_ASSERT(mPort);

    // Ensure that the buffer is freed even if we fail to post the message
    JSAutoStructuredCloneBuffer buffer;
    buffer.adopt(mMessage, mMessageLen);
    mMessage = nullptr;
    mMessageLen = 0;

    // Get the JSContext for the target window
    nsCOMPtr<nsIScriptGlobalObject> sgo = do_QueryInterface(mPort->GetOwner());
    NS_ENSURE_STATE(sgo);
    nsCOMPtr<nsIScriptContext> scriptContext = sgo->GetContext();
    AutoPushJSContext cx(scriptContext ? scriptContext->GetNativeContext()
                         : nsContentUtils::GetSafeJSContext());

    MOZ_ASSERT(cx);

    // Deserialize the structured clone data
    JS::Rooted<JS::Value> messageData(cx);
    {
        StructuredCloneInfo scInfo;
        scInfo.mEvent = this;
        scInfo.mPort = mPort;

        if (!buffer.read(cx, messageData.address(), &kPostMessageCallbacks,
                         &scInfo)) {
            return NS_ERROR_DOM_DATA_CLONE_ERR;
        }
    }

    // Create the event
    nsIDocument* doc = mPort->GetOwner()->GetExtantDoc();
    if (!doc) {
        return NS_OK;
    }

    ErrorResult error;
    nsRefPtr<nsDOMEvent> event =
        doc->CreateEvent(NS_LITERAL_STRING("MessageEvent"), error);
    if (error.Failed()) {
        return NS_OK;
    }

    nsCOMPtr<nsIDOMMessageEvent> message = do_QueryInterface(event);
    nsresult rv = message->InitMessageEvent(NS_LITERAL_STRING("message"),
                                            false /* non-bubbling */,
                                            true /* cancelable */,
                                            messageData,
                                            EmptyString(),
                                            EmptyString(),
                                            mPort->GetOwner());
    if (NS_FAILED(rv)) {
        return NS_OK;
    }

    message->SetTrusted(true);

    bool status;
    mPort->DispatchEvent(event, &status);
    return status ? NS_OK : NS_ERROR_FAILURE;
}
开发者ID:rainemak,项目名称:mozilla-central,代码行数:64,代码来源:MessagePort.cpp


注:本文中的JSAutoStructuredCloneBuffer::adopt方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。