| 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 21 matching lines...) Expand all Loading... |
| 32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou
rceEnum::Deprecation; | 32 case DeprecationMessageSource: return protocol::Console::ConsoleMessage::Sou
rceEnum::Deprecation; |
| 33 case WorkerMessageSource: return protocol::Console::ConsoleMessage::SourceEn
um::Worker; | 33 case WorkerMessageSource: return protocol::Console::ConsoleMessage::SourceEn
um::Worker; |
| 34 } | 34 } |
| 35 return protocol::Console::ConsoleMessage::SourceEnum::Other; | 35 return protocol::Console::ConsoleMessage::SourceEnum::Other; |
| 36 } | 36 } |
| 37 | 37 |
| 38 | 38 |
| 39 String16 consoleAPITypeValue(ConsoleAPIType type) | 39 String16 consoleAPITypeValue(ConsoleAPIType type) |
| 40 { | 40 { |
| 41 switch (type) { | 41 switch (type) { |
| 42 case ConsoleAPIType::kLog: return protocol::Console::ConsoleMessage::TypeEnu
m::Log; | 42 case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeE
num::Log; |
| 43 case ConsoleAPIType::kClear: return protocol::Console::ConsoleMessage::TypeE
num::Clear; | 43 case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Debug; |
| 44 case ConsoleAPIType::kDir: return protocol::Console::ConsoleMessage::TypeEnu
m::Dir; | 44 case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICalled::Type
Enum::Info; |
| 45 case ConsoleAPIType::kDirXML: return protocol::Console::ConsoleMessage::Type
Enum::Dirxml; | 45 case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Error; |
| 46 case ConsoleAPIType::kTable: return protocol::Console::ConsoleMessage::TypeE
num::Table; | 46 case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICalled::T
ypeEnum::Warning; |
| 47 case ConsoleAPIType::kTrace: return protocol::Console::ConsoleMessage::TypeE
num::Trace; | 47 case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Clear; |
| 48 case ConsoleAPIType::kStartGroup: return protocol::Console::ConsoleMessage::
TypeEnum::StartGroup; | 48 case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICalled::TypeE
num::Dir; |
| 49 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Console::Console
Message::TypeEnum::StartGroupCollapsed; | 49 case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICalled::Ty
peEnum::Dirxml; |
| 50 case ConsoleAPIType::kEndGroup: return protocol::Console::ConsoleMessage::Ty
peEnum::EndGroup; | 50 case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Table; |
| 51 case ConsoleAPIType::kAssert: return protocol::Console::ConsoleMessage::Type
Enum::Assert; | 51 case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Trace; |
| 52 case ConsoleAPIType::kTimeEnd: return protocol::Console::ConsoleMessage::Typ
eEnum::Log; | 52 case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICalled
::TypeEnum::StartGroup; |
| 53 case ConsoleAPIType::kCount: return protocol::Console::ConsoleMessage::TypeE
num::Log; | 53 case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::Console
APICalled::TypeEnum::StartGroupCollapsed; |
| 54 case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICalled::
TypeEnum::EndGroup; |
| 55 case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICalled::Ty
peEnum::Assert; |
| 56 case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICalled::T
ypeEnum::Debug; |
| 57 case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICalled::Typ
eEnum::Debug; |
| 54 } | 58 } |
| 55 return protocol::Console::ConsoleMessage::TypeEnum::Log; | 59 return protocol::Runtime::ConsoleAPICalled::TypeEnum::Log; |
| 56 } | 60 } |
| 57 | 61 |
| 58 String16 messageLevelValue(MessageLevel level) | 62 String16 messageLevelValue(MessageLevel level) |
| 59 { | 63 { |
| 60 switch (level) { | 64 switch (level) { |
| 61 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:
:Debug; | 65 case DebugMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:
:Debug; |
| 62 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L
og; | 66 case LogMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::L
og; |
| 63 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu
m::Warning; | 67 case WarningMessageLevel: return protocol::Console::ConsoleMessage::LevelEnu
m::Warning; |
| 64 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:
:Error; | 68 case ErrorMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum:
:Error; |
| 65 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::
Info; | 69 case InfoMessageLevel: return protocol::Console::ConsoleMessage::LevelEnum::
Info; |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 { | 228 { |
| 225 m_url = url; | 229 m_url = url; |
| 226 m_lineNumber = lineNumber; | 230 m_lineNumber = lineNumber; |
| 227 m_columnNumber = columnNumber; | 231 m_columnNumber = columnNumber; |
| 228 m_stackTrace = std::move(stackTrace); | 232 m_stackTrace = std::move(stackTrace); |
| 229 m_scriptId = scriptId; | 233 m_scriptId = scriptId; |
| 230 } | 234 } |
| 231 | 235 |
| 232 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V
8InspectorSessionImpl* session, bool generatePreview) const | 236 void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V
8InspectorSessionImpl* session, bool generatePreview) const |
| 233 { | 237 { |
| 234 DCHECK_EQ(V8MessageOrigin::kConsole, m_origin); | 238 DCHECK(m_origin == V8MessageOrigin::kExternalConsole || m_origin == V8Messag
eOrigin::kConsole); |
| 235 std::unique_ptr<protocol::Console::ConsoleMessage> result = | 239 std::unique_ptr<protocol::Console::ConsoleMessage> result = |
| 236 protocol::Console::ConsoleMessage::create() | 240 protocol::Console::ConsoleMessage::create() |
| 237 .setSource(messageSourceValue(m_source)) | 241 .setSource(messageSourceValue(m_source)) |
| 238 .setLevel(messageLevelValue(m_level)) | 242 .setLevel(messageLevelValue(m_level)) |
| 239 .setText(m_message) | 243 .setText(m_message) |
| 240 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill
iseconds. | 244 .setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to mill
iseconds. |
| 241 .build(); | 245 .build(); |
| 242 result->setType(consoleAPITypeValue(m_type)); | |
| 243 result->setLine(static_cast<int>(m_lineNumber)); | 246 result->setLine(static_cast<int>(m_lineNumber)); |
| 244 result->setColumn(static_cast<int>(m_columnNumber)); | 247 result->setColumn(static_cast<int>(m_columnNumber)); |
| 245 if (m_scriptId) | 248 if (m_scriptId) |
| 246 result->setScriptId(String16::fromInteger(m_scriptId)); | 249 result->setScriptId(String16::fromInteger(m_scriptId)); |
| 247 result->setUrl(m_url); | 250 result->setUrl(m_url); |
| 248 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) | 251 if (m_source == NetworkMessageSource && !m_requestIdentifier.isEmpty()) |
| 249 result->setNetworkRequestId(m_requestIdentifier); | 252 result->setNetworkRequestId(m_requestIdentifier); |
| 250 if (m_contextId) | 253 if (m_contextId) |
| 251 result->setExecutionContextId(m_contextId); | 254 result->setExecutionContextId(m_contextId); |
| 252 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wra
pArguments(session, generatePreview); | |
| 253 if (args) | |
| 254 result->setParameters(std::move(args)); | |
| 255 if (m_stackTrace) | 255 if (m_stackTrace) |
| 256 result->setStack(m_stackTrace->buildInspectorObject()); | 256 result->setStack(m_stackTrace->buildInspectorObject()); |
| 257 if (m_source == WorkerMessageSource && !m_workerId.isEmpty()) | 257 if (m_source == WorkerMessageSource && !m_workerId.isEmpty()) |
| 258 result->setWorkerId(m_workerId); | 258 result->setWorkerId(m_workerId); |
| 259 frontend->messageAdded(std::move(result)); | 259 frontend->messageAdded(std::move(result)); |
| 260 } | 260 } |
| 261 | 261 |
| 262 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa
ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const | 262 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> V8ConsoleMessa
ge::wrapArguments(V8InspectorSessionImpl* session, bool generatePreview) const |
| 263 { | 263 { |
| 264 if (!m_arguments.size() || !m_contextId) | 264 if (!m_arguments.size() || !m_contextId) |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 313 if (exception) | 313 if (exception) |
| 314 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta
ils), std::move(exception), m_contextId); | 314 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta
ils), std::move(exception), m_contextId); |
| 315 else | 315 else |
| 316 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta
ils)); | 316 frontend->exceptionThrown(m_exceptionId, m_timestamp, std::move(deta
ils)); |
| 317 return; | 317 return; |
| 318 } | 318 } |
| 319 if (m_origin == V8MessageOrigin::kRevokedException) { | 319 if (m_origin == V8MessageOrigin::kRevokedException) { |
| 320 frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId)
; | 320 frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId)
; |
| 321 return; | 321 return; |
| 322 } | 322 } |
| 323 if (m_origin == V8MessageOrigin::kConsole) { |
| 324 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> argume
nts = wrapArguments(session, generatePreview); |
| 325 if (!arguments) { |
| 326 arguments = protocol::Array<protocol::Runtime::RemoteObject>::create
(); |
| 327 if (!m_message.isEmpty()) { |
| 328 std::unique_ptr<protocol::Runtime::RemoteObject> messageArg = pr
otocol::Runtime::RemoteObject::create().setType(protocol::Runtime::RemoteObject:
:TypeEnum::String).build(); |
| 329 messageArg->setValue(protocol::StringValue::create(m_message)); |
| 330 arguments->addItem(std::move(messageArg)); |
| 331 } |
| 332 } |
| 333 frontend->consoleAPICalled(consoleAPITypeValue(m_type), std::move(argume
nts), m_contextId, m_timestamp, m_stackTrace ? m_stackTrace->buildInspectorObjec
t() : nullptr); |
| 334 return; |
| 335 } |
| 323 NOTREACHED(); | 336 NOTREACHED(); |
| 324 } | 337 } |
| 325 | 338 |
| 326 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException
(V8InspectorSessionImpl* session, bool generatePreview) const | 339 std::unique_ptr<protocol::Runtime::RemoteObject> V8ConsoleMessage::wrapException
(V8InspectorSessionImpl* session, bool generatePreview) const |
| 327 { | 340 { |
| 328 if (!m_arguments.size() || !m_contextId) | 341 if (!m_arguments.size() || !m_contextId) |
| 329 return nullptr; | 342 return nullptr; |
| 330 DCHECK_EQ(1u, m_arguments.size()); | 343 DCHECK_EQ(1u, m_arguments.size()); |
| 331 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); | 344 InspectedContext* inspectedContext = session->debugger()->getContext(session
->contextGroupId(), m_contextId); |
| 332 if (!inspectedContext) | 345 if (!inspectedContext) |
| (...skipping 14 matching lines...) Expand all Loading... |
| 347 { | 360 { |
| 348 return m_arguments.size(); | 361 return m_arguments.size(); |
| 349 } | 362 } |
| 350 | 363 |
| 351 ConsoleAPIType V8ConsoleMessage::type() const | 364 ConsoleAPIType V8ConsoleMessage::type() const |
| 352 { | 365 { |
| 353 return m_type; | 366 return m_type; |
| 354 } | 367 } |
| 355 | 368 |
| 356 // static | 369 // static |
| 357 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestamp, ConsoleAPIType type, MessageLevel level, const String16& messageText,
std::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stac
kTrace, InspectedContext* context) | 370 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double t
imestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& argument
s, std::unique_ptr<V8StackTrace> stackTrace, InspectedContext* context) |
| 358 { | 371 { |
| 359 String16 url; | 372 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, LogMessageLevel,
String16())); |
| 360 unsigned lineNumber = 0; | |
| 361 unsigned columnNumber = 0; | |
| 362 if (stackTrace && !stackTrace->isEmpty()) { | 373 if (stackTrace && !stackTrace->isEmpty()) { |
| 363 url = stackTrace->topSourceURL(); | 374 message->m_url = stackTrace->topSourceURL(); |
| 364 lineNumber = stackTrace->topLineNumber(); | 375 message->m_lineNumber = stackTrace->topLineNumber(); |
| 365 columnNumber = stackTrace->topColumnNumber(); | 376 message->m_columnNumber = stackTrace->topColumnNumber(); |
| 366 } | 377 } |
| 378 message->m_stackTrace = std::move(stackTrace); |
| 379 message->m_type = type; |
| 380 message->m_contextId = context->contextId(); |
| 381 for (size_t i = 0; i < arguments.size(); ++i) |
| 382 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont
ext->isolate(), arguments.at(i)))); |
| 383 if (arguments.size()) |
| 384 message->m_message = V8ValueStringBuilder::toString(arguments[0], contex
t->isolate()); |
| 367 | 385 |
| 368 String16 actualMessage = messageText; | 386 MessageLevel level = LogMessageLevel; |
| 387 if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type
== ConsoleAPIType::kTimeEnd) |
| 388 level = DebugMessageLevel; |
| 389 if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) |
| 390 level = ErrorMessageLevel; |
| 391 if (type == ConsoleAPIType::kWarning) |
| 392 level = WarningMessageLevel; |
| 393 if (type == ConsoleAPIType::kInfo) |
| 394 level = InfoMessageLevel; |
| 395 context->debugger()->client()->consoleAPIMessage(context->contextGroupId(),
level, message->m_message, message->m_url, message->m_lineNumber, message->m_col
umnNumber, message->m_stackTrace.get()); |
| 369 | 396 |
| 370 Arguments messageArguments; | |
| 371 if (arguments && arguments->size()) { | |
| 372 for (size_t i = 0; i < arguments->size(); ++i) | |
| 373 messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(cont
ext->isolate(), arguments->at(i)))); | |
| 374 if (actualMessage.isEmpty()) | |
| 375 actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0
)->Get(context->isolate()), context->isolate()); | |
| 376 } | |
| 377 | |
| 378 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, level, actualMess
age)); | |
| 379 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), 0
); | |
| 380 message->m_type = type; | |
| 381 if (messageArguments.size()) { | |
| 382 message->m_contextId = context->contextId(); | |
| 383 message->m_arguments.swap(messageArguments); | |
| 384 } | |
| 385 | |
| 386 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()); | |
| 387 return message; | 397 return message; |
| 388 } | 398 } |
| 389 | 399 |
| 390 // static | 400 // static |
| 391 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti
mestamp, const String16& messageText, const String16& url, unsigned lineNumber,
unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId, v
8::Isolate* isolate, int contextId, v8::Local<v8::Value> exception, unsigned exc
eptionId) | 401 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForException(double ti
mestamp, const String16& messageText, const String16& url, unsigned lineNumber,
unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId, v
8::Isolate* isolate, int contextId, v8::Local<v8::Value> exception, unsigned exc
eptionId) |
| 392 { | 402 { |
| 393 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess
ageText)); | 403 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kException, timestamp, JSMessageSource, ErrorMessageLevel, mess
ageText)); |
| 394 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s
criptId); | 404 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s
criptId); |
| 395 message->m_exceptionId = exceptionId; | 405 message->m_exceptionId = exceptionId; |
| 396 if (contextId && !exception.IsEmpty()) { | 406 if (contextId && !exception.IsEmpty()) { |
| 397 message->m_contextId = contextId; | 407 message->m_contextId = contextId; |
| 398 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol
ate, exception))); | 408 message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(isol
ate, exception))); |
| 399 } | 409 } |
| 400 return message; | 410 return message; |
| 401 } | 411 } |
| 402 | 412 |
| 403 // static | 413 // static |
| 404 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do
uble timestamp, const String16& messageText, unsigned revokedExceptionId) | 414 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do
uble timestamp, const String16& messageText, unsigned revokedExceptionId) |
| 405 { | 415 { |
| 406 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve
l, messageText)); | 416 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kRevokedException, timestamp, JSMessageSource, ErrorMessageLeve
l, messageText)); |
| 407 message->m_revokedExceptionId = revokedExceptionId; | 417 message->m_revokedExceptionId = revokedExceptionId; |
| 408 return message; | 418 return message; |
| 409 } | 419 } |
| 410 | 420 |
| 411 // static | 421 // static |
| 412 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createExternal(double timest
amp, MessageSource source, MessageLevel level, const String16& messageText, cons
t String16& url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr<V8S
tackTrace> stackTrace, int scriptId, const String16& requestIdentifier, const St
ring16& workerId) | 422 std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createExternal(double timest
amp, MessageSource source, MessageLevel level, const String16& messageText, cons
t String16& url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr<V8S
tackTrace> stackTrace, int scriptId, const String16& requestIdentifier, const St
ring16& workerId) |
| 413 { | 423 { |
| 414 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kConsole, timestamp, source, level, messageText)); | 424 std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(
V8MessageOrigin::kExternalConsole, timestamp, source, level, messageText)); |
| 415 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s
criptId); | 425 message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), s
criptId); |
| 416 message->m_requestIdentifier = requestIdentifier; | 426 message->m_requestIdentifier = requestIdentifier; |
| 417 message->m_workerId = workerId; | 427 message->m_workerId = workerId; |
| 418 return message; | 428 return message; |
| 419 } | 429 } |
| 420 | 430 |
| 421 void V8ConsoleMessage::contextDestroyed(int contextId) | 431 void V8ConsoleMessage::contextDestroyed(int contextId) |
| 422 { | 432 { |
| 423 if (contextId != m_contextId) | 433 if (contextId != m_contextId) |
| 424 return; | 434 return; |
| (...skipping 18 matching lines...) Expand all Loading... |
| 443 clear(); | 453 clear(); |
| 444 } | 454 } |
| 445 | 455 |
| 446 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) | 456 void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa
ge) |
| 447 { | 457 { |
| 448 if (message->type() == ConsoleAPIType::kClear) | 458 if (message->type() == ConsoleAPIType::kClear) |
| 449 clear(); | 459 clear(); |
| 450 | 460 |
| 451 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 461 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); |
| 452 if (session) { | 462 if (session) { |
| 453 if (message->origin() == V8MessageOrigin::kConsole) | 463 if (message->origin() == V8MessageOrigin::kExternalConsole || message->o
rigin() == V8MessageOrigin::kConsole) |
| 454 session->consoleAgent()->messageAdded(message.get()); | 464 session->consoleAgent()->messageAdded(message.get()); |
| 455 else | 465 if (message->origin() != V8MessageOrigin::kExternalConsole) |
| 456 session->runtimeAgent()->exceptionMessageAdded(message.get()); | 466 session->runtimeAgent()->messageAdded(message.get()); |
| 457 } | 467 } |
| 458 | 468 |
| 459 DCHECK(m_messages.size() <= maxConsoleMessageCount); | 469 DCHECK(m_messages.size() <= maxConsoleMessageCount); |
| 460 if (m_messages.size() == maxConsoleMessageCount) { | 470 if (m_messages.size() == maxConsoleMessageCount) { |
| 461 ++m_expiredCount; | 471 ++m_expiredCount; |
| 462 m_messages.pop_front(); | 472 m_messages.pop_front(); |
| 463 } | 473 } |
| 464 m_messages.push_back(std::move(message)); | 474 m_messages.push_back(std::move(message)); |
| 465 } | 475 } |
| 466 | 476 |
| 467 void V8ConsoleMessageStorage::clear() | 477 void V8ConsoleMessageStorage::clear() |
| 468 { | 478 { |
| 469 m_messages.clear(); | 479 m_messages.clear(); |
| 470 m_expiredCount = 0; | 480 m_expiredCount = 0; |
| 471 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); | 481 V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_conte
xtGroupId); |
| 472 if (session) { | 482 if (session) { |
| 473 session->releaseObjectGroup("console"); | 483 session->releaseObjectGroup("console"); |
| 474 session->client()->consoleCleared(); | 484 session->client()->consoleCleared(); |
| 475 } | 485 } |
| 476 } | 486 } |
| 477 | 487 |
| 478 void V8ConsoleMessageStorage::contextDestroyed(int contextId) | 488 void V8ConsoleMessageStorage::contextDestroyed(int contextId) |
| 479 { | 489 { |
| 480 for (size_t i = 0; i < m_messages.size(); ++i) | 490 for (size_t i = 0; i < m_messages.size(); ++i) |
| 481 m_messages[i]->contextDestroyed(contextId); | 491 m_messages[i]->contextDestroyed(contextId); |
| 482 } | 492 } |
| 483 | 493 |
| 484 } // namespace blink | 494 } // namespace blink |
| OLD | NEW |