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 |