| 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/StringUtil.h" | 8 #include "platform/v8_inspector/StringUtil.h" |
| 9 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" | 9 #include "platform/v8_inspector/V8ConsoleAgentImpl.h" |
| 10 #include "platform/v8_inspector/V8InspectorImpl.h" | 10 #include "platform/v8_inspector/V8InspectorImpl.h" |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 } | 323 } |
| 324 | 324 |
| 325 ConsoleAPIType V8ConsoleMessage::type() const | 325 ConsoleAPIType V8ConsoleMessage::type() const |
| 326 { | 326 { |
| 327 return m_type; | 327 return m_type; |
| 328 } | 328 } |
| 329 | 329 |
| 330 // static | 330 // static |
| 331 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& argument
s, std::unique_ptr<V8StackTraceImpl> stackTrace, InspectedContext* context) | 331 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& argument
s, std::unique_ptr<V8StackTraceImpl> stackTrace, InspectedContext* context) |
| 332 { | 332 { |
| 333 v8::Isolate* isolate = context->isolate(); |
| 334 int contextId = context->contextId(); |
| 335 int contextGroupId = context->contextGroupId(); |
| 336 V8InspectorImpl* inspector = context->inspector(); |
| 337 |
| 333 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kConsole, timestamp, String16())); | 338 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kConsole, timestamp, String16())); |
| 334 if (stackTrace && !stackTrace->isEmpty()) { | 339 if (stackTrace && !stackTrace->isEmpty()) { |
| 335 message->m_url = toString16(stackTrace->topSourceURL()); | 340 message->m_url = toString16(stackTrace->topSourceURL()); |
| 336 message->m_lineNumber = stackTrace->topLineNumber(); | 341 message->m_lineNumber = stackTrace->topLineNumber(); |
| 337 message->m_columnNumber = stackTrace->topColumnNumber(); | 342 message->m_columnNumber = stackTrace->topColumnNumber(); |
| 338 } | 343 } |
| 339 message->m_stackTrace = std::move(stackTrace); | 344 message->m_stackTrace = std::move(stackTrace); |
| 340 message->m_type = type; | 345 message->m_type = type; |
| 341 message->m_contextId = context->contextId(); | 346 message->m_contextId = contextId; |
| 342 for (size_t i = 0; i < arguments.size(); ++i) | 347 for (size_t i = 0; i < arguments.size(); ++i) |
| 343 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont
ext->isolate(), arguments.at(i)))); | 348 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol
ate, arguments.at(i)))); |
| 344 if (arguments.size()) | 349 if (arguments.size()) |
| 345 message->m_message = V8ValueStringBuilder::toString(arguments[0], contex
t->isolate()); | 350 message->m_message = V8ValueStringBuilder::toString(arguments[0], isolat
e); |
| 346 | 351 |
| 347 V8ConsoleAPIType clientType = V8ConsoleAPIType::kLog; | 352 V8ConsoleAPIType clientType = V8ConsoleAPIType::kLog; |
| 348 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) | 353 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) |
| 349 clientType = V8ConsoleAPIType::kDebug; | 354 clientType = V8ConsoleAPIType::kDebug; |
| 350 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) | 355 else if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) |
| 351 clientType = V8ConsoleAPIType::kError; | 356 clientType = V8ConsoleAPIType::kError; |
| 352 else if (type == ConsoleAPIType::kWarning) | 357 else if (type == ConsoleAPIType::kWarning) |
| 353 clientType = V8ConsoleAPIType::kWarning; | 358 clientType = V8ConsoleAPIType::kWarning; |
| 354 else if (type == ConsoleAPIType::kInfo) | 359 else if (type == ConsoleAPIType::kInfo) |
| 355 clientType = V8ConsoleAPIType::kInfo; | 360 clientType = V8ConsoleAPIType::kInfo; |
| 356 else if (type == ConsoleAPIType::kClear) | 361 else if (type == ConsoleAPIType::kClear) |
| 357 clientType = V8ConsoleAPIType::kClear; | 362 clientType = V8ConsoleAPIType::kClear; |
| 358 context->inspector()->client()->consoleAPIMessage(context->contextGroupId(),
clientType, toStringView(message->m_message), toStringView(message->m_url), mes
sage->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get()); | 363 inspector->client()->consoleAPIMessage(contextGroupId, clientType, toStringV
iew(message->m_message), toStringView(message->m_url), message->m_lineNumber, me
ssage->m_columnNumber, message->m_stackTrace.get()); |
| 359 | 364 |
| 360 return message; | 365 return message; |
| 361 } | 366 } |
| 362 | 367 |
| 363 // static | 368 // static |
| 364 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) | 369 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) |
| 365 { | 370 { |
| 366 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM
essage(V8MessageOrigin::kException, timestamp, message)); | 371 std::unique_ptr<V8ConsoleMessage> consoleMessage = wrapUnique(new V8ConsoleM
essage(V8MessageOrigin::kException, timestamp, message)); |
| 367 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr
ace), scriptId); | 372 consoleMessage->setLocation(url, lineNumber, columnNumber, std::move(stackTr
ace), scriptId); |
| 368 consoleMessage->m_exceptionId = exceptionId; | 373 consoleMessage->m_exceptionId = exceptionId; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 402 { | 407 { |
| 403 } | 408 } |
| 404 | 409 |
| 405 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() | 410 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() |
| 406 { | 411 { |
| 407 clear(); | 412 clear(); |
| 408 } | 413 } |
| 409 | 414 |
| 410 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) | 415 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) |
| 411 { | 416 { |
| 417 int contextGroupId = m_contextGroupId; |
| 418 V8InspectorImpl* inspector = m_inspector; |
| 412 if (message->type() == ConsoleAPIType::kClear) | 419 if (message->type() == ConsoleAPIType::kClear) |
| 413 clear(); | 420 clear(); |
| 414 | 421 |
| 415 V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_cont
extGroupId); | 422 V8InspectorSessionImpl* session = inspector->sessionForContextGroup(contextG
roupId); |
| 416 if (session) { | 423 if (session) { |
| 417 if (message->origin() == V8MessageOrigin::kConsole) | 424 if (message->origin() == V8MessageOrigin::kConsole) |
| 418 session->consoleAgent()->messageAdded(message.get()); | 425 session->consoleAgent()->messageAdded(message.get()); |
| 419 session->runtimeAgent()->messageAdded(message.get()); | 426 session->runtimeAgent()->messageAdded(message.get()); |
| 420 } | 427 } |
| 428 if (!inspector->hasConsoleMessageStorage(contextGroupId)) |
| 429 return; |
| 421 | 430 |
| 422 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 431 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
| 423 if (m_messages.size() == maxConsoleMessageCount) { | 432 if (m_messages.size() == maxConsoleMessageCount) { |
| 424 ++m_expiredCount; | 433 ++m_expiredCount; |
| 425 m_messages.pop_front(); | 434 m_messages.pop_front(); |
| 426 } | 435 } |
| 427 m_messages.push_back(std::move(message)); | 436 m_messages.push_back(std::move(message)); |
| 428 } | 437 } |
| 429 | 438 |
| 430 void V8ConsoleMessageStorage::clear() | 439 void V8ConsoleMessageStorage::clear() |
| 431 { | 440 { |
| 432 m_messages.clear(); | 441 m_messages.clear(); |
| 433 m_expiredCount = 0; | 442 m_expiredCount = 0; |
| 434 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_
contextGroupId)) | 443 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_
contextGroupId)) |
| 435 session->releaseObjectGroup("console"); | 444 session->releaseObjectGroup("console"); |
| 436 } | 445 } |
| 437 | 446 |
| 438 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 447 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
| 439 { | 448 { |
| 440 for (size_t i = 0; i < m_messages.size(); ++i) | 449 for (size_t i = 0; i < m_messages.size(); ++i) |
| 441 m_messages[i]->contextDestroyed(contextId); | 450 m_messages[i]->contextDestroyed(contextId); |
| 442 } | 451 } |
| 443 | 452 |
| 444 } // namespace v8_inspector | 453 } // namespace v8_inspector |
| OLD | NEW |