| 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/V8DebuggerImpl.h" |
| 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" | 10 #include "platform/v8_inspector/V8InspectorSessionImpl.h" |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 299 } | 299 } |
| 300 | 300 |
| 301 MessageType V8ConsoleMessage::type() const | 301 MessageType V8ConsoleMessage::type() const |
| 302 { | 302 { |
| 303 return m_type; | 303 return m_type; |
| 304 } | 304 } |
| 305 | 305 |
| 306 // static | 306 // static |
| 307 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestampMS, MessageType type, MessageLevel level, const String16& messageText, s
td::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stack
Trace, InspectedContext* context) | 307 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestampMS, MessageType type, MessageLevel level, const String16& messageText, s
td::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stack
Trace, InspectedContext* context) |
| 308 { | 308 { |
| 309 v8::Isolate* isolate = context->isolate(); |
| 310 int contextId = context->contextId(); |
| 311 int contextGroupId = context->contextGroupId(); |
| 312 V8DebuggerImpl* debugger = context->debugger(); |
| 313 |
| 309 String16 url; | 314 String16 url; |
| 310 unsigned lineNumber = 0; | 315 unsigned lineNumber = 0; |
| 311 unsigned columnNumber = 0; | 316 unsigned columnNumber = 0; |
| 312 if (stackTrace && !stackTrace->isEmpty()) { | 317 if (stackTrace && !stackTrace->isEmpty()) { |
| 313 url = stackTrace->topSourceURL(); | 318 url = stackTrace->topSourceURL(); |
| 314 lineNumber = stackTrace->topLineNumber(); | 319 lineNumber = stackTrace->topLineNumber(); |
| 315 columnNumber = stackTrace->topColumnNumber(); | 320 columnNumber = stackTrace->topColumnNumber(); |
| 316 } | 321 } |
| 317 | 322 |
| 318 String16 actualMessage = messageText; | 323 String16 actualMessage = messageText; |
| 319 | 324 |
| 320 Arguments messageArguments; | 325 Arguments messageArguments; |
| 321 if (arguments && arguments->size()) { | 326 if (arguments && arguments->size()) { |
| 322 for (size_t i = 0; i < arguments->size(); ++i) | 327 for (size_t i = 0; i < arguments->size(); ++i) |
| 323 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont
ext->isolate(), arguments->at(i)))); | 328 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol
ate, arguments->at(i)))); |
| 324 if (actualMessage.isEmpty()) | 329 if (actualMessage.isEmpty()) |
| 325 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0
)->Get(context->isolate()), context->isolate()); | 330 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0
)->Get(isolate), isolate); |
| 326 } | 331 } |
| 327 | 332 |
| 328 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
timestampMS, ConsoleAPIMessageSource, level, actualMessage, url, lineNumber, col
umnNumber, std::move(stackTrace), 0 /* scriptId */, String16() /* requestIdentif
ier */)); | 333 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
timestampMS, ConsoleAPIMessageSource, level, actualMessage, url, lineNumber, col
umnNumber, std::move(stackTrace), 0 /* scriptId */, String16() /* requestIdentif
ier */)); |
| 329 message->m_type = type; | 334 message->m_type = type; |
| 330 if (messageArguments.size()) { | 335 if (messageArguments.size()) { |
| 331 message->m_contextId = context->contextId(); | 336 message->m_contextId = contextId; |
| 332 message->m_arguments.swap(messageArguments); | 337 message->m_arguments.swap(messageArguments); |
| 333 } | 338 } |
| 334 | 339 |
| 335 context->debugger()->client()->messageAddedToConsole(context->contextGroupId
(), message->m_source, message->m_level, message->m_message, message->m_url, mes
sage->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get()); | 340 debugger->client()->messageAddedToConsole(contextGroupId, message->m_source,
message->m_level, message->m_message, message->m_url, message->m_lineNumber, me
ssage->m_columnNumber, message->m_stackTrace.get()); |
| 336 return message; | 341 return message; |
| 337 } | 342 } |
| 338 | 343 |
| 339 void V8ConsoleMessage::contextDestroyed(int contextId) | 344 void V8ConsoleMessage::contextDestroyed(int contextId) |
| 340 { | 345 { |
| 341 if (contextId != m_contextId) | 346 if (contextId != m_contextId) |
| 342 return; | 347 return; |
| 343 m_contextId = 0; | 348 m_contextId = 0; |
| 344 if (m_message.isEmpty()) | 349 if (m_message.isEmpty()) |
| 345 m_message = "<message collected>"; | 350 m_message = "<message collected>"; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 375 { | 380 { |
| 376 } | 381 } |
| 377 | 382 |
| 378 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() | 383 V8ConsoleMessageStorage::~V8ConsoleMessageStorage() |
| 379 { | 384 { |
| 380 clear(); | 385 clear(); |
| 381 } | 386 } |
| 382 | 387 |
| 383 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) | 388 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) |
| 384 { | 389 { |
| 390 int contextGroupId = m_contextGroupId; |
| 391 V8DebuggerImpl* debugger = m_debugger; |
| 392 |
| 385 if (message->type() == ClearMessageType) | 393 if (message->type() == ClearMessageType) |
| 386 clear(); | 394 clear(); |
| 387 | 395 |
| 388 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 396 V8InspectorSessionImpl* session = debugger->sessionForContextGroup(contextGr
oupId); |
| 389 if (session) | 397 if (session) |
| 390 session->consoleAgent()->messageAdded(message.get()); | 398 session->consoleAgent()->messageAdded(message.get()); |
| 399 if (!debugger->hasConsoleMessageStorage(contextGroupId)) |
| 400 return; |
| 391 | 401 |
| 392 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 402 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
| 393 if (m_messages.size() == maxConsoleMessageCount) { | 403 if (m_messages.size() == maxConsoleMessageCount) { |
| 394 ++m_expiredCount; | 404 ++m_expiredCount; |
| 395 m_messages.pop_front(); | 405 m_messages.pop_front(); |
| 396 } | 406 } |
| 397 m_messages.push_back(std::move(message)); | 407 m_messages.push_back(std::move(message)); |
| 398 } | 408 } |
| 399 | 409 |
| 400 void V8ConsoleMessageStorage::clear() | 410 void V8ConsoleMessageStorage::clear() |
| 401 { | 411 { |
| 402 m_messages.clear(); | 412 m_messages.clear(); |
| 403 m_expiredCount = 0; | 413 m_expiredCount = 0; |
| 404 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 414 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); |
| 405 if (session) { | 415 if (session) { |
| 406 session->consoleAgent()->reset(); | 416 session->consoleAgent()->reset(); |
| 407 session->releaseObjectGroup("console"); | 417 session->releaseObjectGroup("console"); |
| 408 session->client()->consoleCleared(); | 418 session->client()->consoleCleared(); |
| 409 } | 419 } |
| 410 } | 420 } |
| 411 | 421 |
| 412 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 422 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
| 413 { | 423 { |
| 414 for (size_t i = 0; i < m_messages.size(); ++i) | 424 for (size_t i = 0; i < m_messages.size(); ++i) |
| 415 m_messages[i]->contextDestroyed(contextId); | 425 m_messages[i]->contextDestroyed(contextId); |
| 416 } | 426 } |
| 417 | 427 |
| 418 } // namespace blink | 428 } // namespace blink |
| OLD | NEW |