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 |