コード例 #1
0
void V8ConsoleMessage::appendArguments(protocol::Console::ConsoleMessage* result, V8InspectorSessionImpl* session, bool generatePreview) const
{
    if (!m_arguments.size() || !m_contextId)
        return;
    InspectedContext* inspectedContext = session->debugger()->getContext(session->contextGroupId(), m_contextId);
    if (!inspectedContext)
        return;

    v8::Isolate* isolate = inspectedContext->isolate();
    v8::HandleScope handles(isolate);
    v8::Local<v8::Context> context = inspectedContext->context();

    std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = protocol::Array<protocol::Runtime::RemoteObject>::create();
    if (m_type == TableMessageType && generatePreview) {
        v8::Local<v8::Value> table = m_arguments[0]->Get(isolate);
        v8::Local<v8::Value> columns = m_arguments.size() > 1 ? m_arguments[1]->Get(isolate) : v8::Local<v8::Value>();
        std::unique_ptr<protocol::Runtime::RemoteObject> wrapped = session->wrapTable(context, table, columns);
        if (wrapped)
            args->addItem(std::move(wrapped));
        else
            args = nullptr;
    } else {
        for (size_t i = 0; i < m_arguments.size(); ++i) {
            std::unique_ptr<protocol::Runtime::RemoteObject> wrapped = session->wrapObject(context, m_arguments[i]->Get(isolate), "console", generatePreview);
            if (!wrapped) {
                args = nullptr;
                break;
            }
            args->addItem(std::move(wrapped));
        }
    }
    if (args)
        result->setParameters(std::move(args));
}
コード例 #2
0
ファイル: V8ConsoleMessage.cpp プロジェクト: AndorZhang/node
std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException(V8InspectorSessionImpl* session, bool generatePreview) const
{
    if (!m_arguments.size() || !m_contextId)
        return nullptr;
    DCHECK_EQ(1u, m_arguments.size());
    InspectedContext* inspectedContext = session->debugger()->getContext(session->contextGroupId(), m_contextId);
    if (!inspectedContext)
        return nullptr;

    v8::Isolate* isolate = inspectedContext->isolate();
    v8::HandleScope handles(isolate);
    // TODO(dgozman): should we use different object group?
    return session->wrapObject(inspectedContext->context(), m_arguments[0]->Get(isolate), "console", generatePreview);
}