| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/v8_inspector/V8ConsoleMessage.h" | 5 #include "platform/v8_inspector/V8ConsoleMessage.h" |
| 6 | 6 |
| 7 #include "platform/v8_inspector/InspectedContext.h" | 7 #include "platform/v8_inspector/InspectedContext.h" |
| 8 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" | 8 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" |
| 9 #include "platform/v8_inspector/V8DebuggerImpl.h" | 9 #include "platform/v8_inspector/V8InspectorImpl.h" |
| 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" | 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" |
| 11 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" | 11 #include "platform/v8_inspector/V8RuntimeAgentImpl.h" |
| 12 #include "platform/v8_inspector/V8StackTraceImpl.h" | 12 #include "platform/v8_inspector/V8StackTraceImpl.h" |
| 13 #include "platform/v8_inspector/V8StringUtil.h" | 13 #include "platform/v8_inspector/V8StringUtil.h" |
| 14 #include "platform/v8_inspector/public/V8DebuggerClient.h" | 14 #include "platform/v8_inspector/public/V8InspectorClient.h" |
| 15 | 15 |
| 16 namespace blink { | 16 namespace blink { |
| 17 | 17 |
| 18 namespace { | 18 namespace { |
| 19 | 19 |
| 20 String16 consoleAPITypeValue(ConsoleAPIType type) | 20 String16 consoleAPITypeValue(ConsoleAPIType type) |
| 21 { | 21 { |
| 22 switch (type) { | 22 switch (type) { |
| 23 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE
num::Log; | 23 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE
num::Log; |
| 24 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Debug; | 24 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Debug; |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 212 result->setLine(static_cast<int>(m_lineNumber)); | 212 result->setLine(static_cast<int>(m_lineNumber)); |
| 213 result->setColumn(static_cast<int>(m_columnNumber)); | 213 result->setColumn(static_cast<int>(m_columnNumber)); |
| 214 result->setUrl(m_url); | 214 result->setUrl(m_url); |
| 215 frontend->messageAdded(std::move(result)); | 215 frontend->messageAdded(std::move(result)); |
| 216 } | 216 } |
| 217 | 217 |
| 218 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa
ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const | 218 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa
ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const |
| 219 { | 219 { |
| 220 if (!m_arguments.size() || !m_contextId) | 220 if (!m_arguments.size() || !m_contextId) |
| 221 return nullptr; | 221 return nullptr; |
| 222 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); | 222 InspectedContext* inspectedContext = session->inspector()->getContext(sessio
n->contextGroupId(), m_contextId); |
| 223 if (!inspectedContext) | 223 if (!inspectedContext) |
| 224 return nullptr; | 224 return nullptr; |
| 225 | 225 |
| 226 v8::Isolate* isolate = inspectedContext->isolate(); | 226 v8::Isolate* isolate = inspectedContext->isolate(); |
| 227 v8::HandleScope handles(isolate); | 227 v8::HandleScope handles(isolate); |
| 228 v8::Local<v8::Context> context = inspectedContext->context(); | 228 v8::Local<v8::Context> context = inspectedContext->context(); |
| 229 | 229 |
| 230 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = pro
tocol::Array<protocol::Runtime::RemoteObject>::create(); | 230 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = pro
tocol::Array<protocol::Runtime::RemoteObject>::create(); |
| 231 if (m_type == ConsoleAPIType::kTable && generatePreview) { | 231 if (m_type == ConsoleAPIType::kTable && generatePreview) { |
| 232 v8::Local<v8::Value> table = m_arguments[0]->Get(isolate); | 232 v8::Local<v8::Value> table = m_arguments[0]->Get(isolate); |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 return; | 289 return; |
| 290 } | 290 } |
| 291 NOTREACHED(); | 291 NOTREACHED(); |
| 292 } | 292 } |
| 293 | 293 |
| 294 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException
(V8InspectorSessionImpl* session, bool generatePreview) const | 294 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException
(V8InspectorSessionImpl* session, bool generatePreview) const |
| 295 { | 295 { |
| 296 if (!m_arguments.size() || !m_contextId) | 296 if (!m_arguments.size() || !m_contextId) |
| 297 return nullptr; | 297 return nullptr; |
| 298 DCHECK_EQ(1u, m_arguments.size()); | 298 DCHECK_EQ(1u, m_arguments.size()); |
| 299 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); | 299 InspectedContext* inspectedContext = session->inspector()->getContext(sessio
n->contextGroupId(), m_contextId); |
| 300 if (!inspectedContext) | 300 if (!inspectedContext) |
| 301 return nullptr; | 301 return nullptr; |
| 302 | 302 |
| 303 v8::Isolate* isolate = inspectedContext->isolate(); | 303 v8::Isolate* isolate = inspectedContext->isolate(); |
| 304 v8::HandleScope handles(isolate); | 304 v8::HandleScope handles(isolate); |
| 305 // TODO(dgozman): should we use different object group? | 305 // TODO(dgozman): should we use different object group? |
| 306 return session->wrapObject(inspectedContext->context(), m_arguments[0]->Get(
isolate), "console", generatePreview); | 306 return session->wrapObject(inspectedContext->context(), m_arguments[0]->Get(
isolate), "console", generatePreview); |
| 307 } | 307 } |
| 308 | 308 |
| 309 V8MessageOrigin V8ConsoleMessage::origin() const | 309 V8MessageOrigin V8ConsoleMessage::origin() const |
| (...skipping 27 matching lines...) Expand all Loading... |
| 337 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) | 337 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) |
| 338 clientType = V8ConsoleAPIType::kDebug; | 338 clientType = V8ConsoleAPIType::kDebug; |
| 339 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) | 339 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) |
| 340 clientType = V8ConsoleAPIType::kError; | 340 clientType = V8ConsoleAPIType::kError; |
| 341 else if (type == ConsoleAPIType::kWarning) | 341 else if (type == ConsoleAPIType::kWarning) |
| 342 clientType = V8ConsoleAPIType::kWarning; | 342 clientType = V8ConsoleAPIType::kWarning; |
| 343 else if (type == ConsoleAPIType::kInfo) | 343 else if (type == ConsoleAPIType::kInfo) |
| 344 clientType = V8ConsoleAPIType::kInfo; | 344 clientType = V8ConsoleAPIType::kInfo; |
| 345 else if (type == ConsoleAPIType::kClear) | 345 else if (type == ConsoleAPIType::kClear) |
| 346 clientType = V8ConsoleAPIType::kClear; | 346 clientType = V8ConsoleAPIType::kClear; |
| 347 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(),
clientType, message->m_message, message->m_url, message->m_lineNumber, message->
m_columnNumber, message->m_stackTrace.get()); | 347 context->inspector()->client()->consoleAPIMessage(context->contextGroupId(),
clientType, message->m_message, message->m_url, message->m_lineNumber, message-
>m_columnNumber, message->m_stackTrace.get()); |
| 348 | 348 |
| 349 return message; | 349 return message; |
| 350 } | 350 } |
| 351 | 351 |
| 352 // static | 352 // static |
| 353 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti
mestamp, const String16& detailedMessage, const String16& url, unsigned lineNumb
er, unsigned columnNumber, std::unique_ptr<V8StackTraceImpl> stackTrace, int scr
iptId, v8::Isolate* isolate, const String16& message, int contextId, v8::Local<v
8::Value> exception, unsigned exceptionId) | 353 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti
mestamp, const String16& detailedMessage, const String16& url, unsigned lineNumb
er, unsigned columnNumber, std::unique_ptr<V8StackTraceImpl> stackTrace, int scr
iptId, v8::Isolate* isolate, const String16& message, int contextId, v8::Local<v
8::Value> exception, unsigned exceptionId) |
| 354 { | 354 { |
| 355 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM
essage(V8MessageOrigin::kException, timestamp, message)); | 355 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM
essage(V8MessageOrigin::kException, timestamp, message)); |
| 356 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr
ace), scriptId); | 356 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr
ace), scriptId); |
| 357 consoleMessage->m_exceptionId = exceptionId; | 357 consoleMessage->m_exceptionId = exceptionId; |
| (...skipping 19 matching lines...) Expand all Loading... |
| 377 return; | 377 return; |
| 378 m_contextId = 0; | 378 m_contextId = 0; |
| 379 if (m_message.isEmpty()) | 379 if (m_message.isEmpty()) |
| 380 m_message = "<message collected>"; | 380 m_message = "<message collected>"; |
| 381 Arguments empty; | 381 Arguments empty; |
| 382 m_arguments.swap(empty); | 382 m_arguments.swap(empty); |
| 383 } | 383 } |
| 384 | 384 |
| 385 // ------------------------ V8ConsoleMessageStorage ---------------------------- | 385 // ------------------------ V8ConsoleMessageStorage ---------------------------- |
| 386 | 386 |
| 387 V8ConsoleMessageStorage::V8ConsoleMessageStorage(V8DebuggerImpl* debugger, int c
ontextGroupId) | 387 V8ConsoleMessageStorage::V8ConsoleMessageStorage(V8InspectorImpl* inspector, int
contextGroupId) |
| 388 : m_debugger(debugger) | 388 : m_inspector(inspector) |
| 389 , m_contextGroupId(contextGroupId) | 389 , m_contextGroupId(contextGroupId) |
| 390 , m_expiredCount(0) | 390 , m_expiredCount(0) |
| 391 { | 391 { |
| 392 } | 392 } |
| 393 | 393 |
| 394 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() | 394 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() |
| 395 { | 395 { |
| 396 clear(); | 396 clear(); |
| 397 } | 397 } |
| 398 | 398 |
| 399 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) | 399 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) |
| 400 { | 400 { |
| 401 if (message->type() == ConsoleAPIType::kClear) | 401 if (message->type() == ConsoleAPIType::kClear) |
| 402 clear(); | 402 clear(); |
| 403 | 403 |
| 404 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 404 V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_cont
extGroupId); |
| 405 if (session) { | 405 if (session) { |
| 406 if (message->origin() == V8MessageOrigin::kConsole) | 406 if (message->origin() == V8MessageOrigin::kConsole) |
| 407 session->consoleAgent()->messageAdded(message.get()); | 407 session->consoleAgent()->messageAdded(message.get()); |
| 408 session->runtimeAgent()->messageAdded(message.get()); | 408 session->runtimeAgent()->messageAdded(message.get()); |
| 409 } | 409 } |
| 410 | 410 |
| 411 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 411 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
| 412 if (m_messages.size() == maxConsoleMessageCount) { | 412 if (m_messages.size() == maxConsoleMessageCount) { |
| 413 ++m_expiredCount; | 413 ++m_expiredCount; |
| 414 m_messages.pop_front(); | 414 m_messages.pop_front(); |
| 415 } | 415 } |
| 416 m_messages.push_back(std::move(message)); | 416 m_messages.push_back(std::move(message)); |
| 417 } | 417 } |
| 418 | 418 |
| 419 void V8ConsoleMessageStorage::clear() | 419 void V8ConsoleMessageStorage::clear() |
| 420 { | 420 { |
| 421 m_messages.clear(); | 421 m_messages.clear(); |
| 422 m_expiredCount = 0; | 422 m_expiredCount = 0; |
| 423 if (V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_c
ontextGroupId)) | 423 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_
contextGroupId)) |
| 424 session->releaseObjectGroup("console"); | 424 session->releaseObjectGroup("console"); |
| 425 } | 425 } |
| 426 | 426 |
| 427 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 427 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
| 428 { | 428 { |
| 429 for (size_t i = 0; i < m_messages.size(); ++i) | 429 for (size_t i = 0; i < m_messages.size(); ++i) |
| 430 m_messages[i]->contextDestroyed(contextId); | 430 m_messages[i]->contextDestroyed(contextId); |
| 431 } | 431 } |
| 432 | 432 |
| 433 } // namespace blink | 433 } // namespace blink |
| OLD | NEW |