Chromium Code Reviews| 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 if (session) |
|
dgozman
2016/09/07 00:21:03
remove if
kozy
2016/09/07 00:50:16
Done.
| |
| 427 session->runtimeAgent()->messageAdded(message.get()); | |
| 420 } | 428 } |
| 429 if (!inspector->hasConsoleMessageStorage(contextGroupId)) | |
| 430 return; | |
| 421 | 431 |
| 422 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 432 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
| 423 if (m_messages.size() == maxConsoleMessageCount) { | 433 if (m_messages.size() == maxConsoleMessageCount) { |
| 424 ++m_expiredCount; | 434 ++m_expiredCount; |
| 425 m_messages.pop_front(); | 435 m_messages.pop_front(); |
| 426 } | 436 } |
| 427 m_messages.push_back(std::move(message)); | 437 m_messages.push_back(std::move(message)); |
| 428 } | 438 } |
| 429 | 439 |
| 430 void V8ConsoleMessageStorage::clear() | 440 void V8ConsoleMessageStorage::clear() |
| 431 { | 441 { |
| 432 m_messages.clear(); | 442 m_messages.clear(); |
| 433 m_expiredCount = 0; | 443 m_expiredCount = 0; |
| 434 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_ contextGroupId)) | 444 if (V8InspectorSessionImpl* session = m_inspector->sessionForContextGroup(m_ contextGroupId)) |
| 435 session->releaseObjectGroup("console"); | 445 session->releaseObjectGroup("console"); |
| 436 } | 446 } |
| 437 | 447 |
| 438 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 448 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
| 439 { | 449 { |
| 440 for (size_t i = 0; i < m_messages.size(); ++i) | 450 for (size_t i = 0; i < m_messages.size(); ++i) |
| 441 m_messages[i]->contextDestroyed(contextId); | 451 m_messages[i]->contextDestroyed(contextId); |
| 442 } | 452 } |
| 443 | 453 |
| 444 } // namespace v8_inspector | 454 } // namespace v8_inspector |
| OLD | NEW |