Index: third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp |
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp |
index d6a02283c505438b6366882c83bbb88e33e24e60..224cc5831675afcb4d02b4c3fa3b3a961517a254 100644 |
--- a/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp |
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp |
@@ -39,20 +39,24 @@ String16 messageSourceValue(MessageSource source) |
String16 consoleAPITypeValue(ConsoleAPIType type) |
{ |
switch (type) { |
- case ConsoleAPIType::kLog: return protocol::Console::ConsoleMessage::TypeEnum::Log; |
- case ConsoleAPIType::kClear: return protocol::Console::ConsoleMessage::TypeEnum::Clear; |
- case ConsoleAPIType::kDir: return protocol::Console::ConsoleMessage::TypeEnum::Dir; |
- case ConsoleAPIType::kDirXML: return protocol::Console::ConsoleMessage::TypeEnum::Dirxml; |
- case ConsoleAPIType::kTable: return protocol::Console::ConsoleMessage::TypeEnum::Table; |
- case ConsoleAPIType::kTrace: return protocol::Console::ConsoleMessage::TypeEnum::Trace; |
- case ConsoleAPIType::kStartGroup: return protocol::Console::ConsoleMessage::TypeEnum::StartGroup; |
- case ConsoleAPIType::kStartGroupCollapsed: return protocol::Console::ConsoleMessage::TypeEnum::StartGroupCollapsed; |
- case ConsoleAPIType::kEndGroup: return protocol::Console::ConsoleMessage::TypeEnum::EndGroup; |
- case ConsoleAPIType::kAssert: return protocol::Console::ConsoleMessage::TypeEnum::Assert; |
- case ConsoleAPIType::kTimeEnd: return protocol::Console::ConsoleMessage::TypeEnum::Log; |
- case ConsoleAPIType::kCount: return protocol::Console::ConsoleMessage::TypeEnum::Log; |
+ case ConsoleAPIType::kLog: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Log; |
+ case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Debug; |
+ case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Info; |
+ case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Error; |
+ case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Warning; |
+ case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Clear; |
+ case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Dir; |
+ case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Dirxml; |
+ case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Table; |
+ case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Trace; |
+ case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICalled::TypeEnum::StartGroup; |
+ case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::ConsoleAPICalled::TypeEnum::StartGroupCollapsed; |
+ case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICalled::TypeEnum::EndGroup; |
+ case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Assert; |
+ case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Debug; |
+ case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICalled::TypeEnum::Debug; |
} |
- return protocol::Console::ConsoleMessage::TypeEnum::Log; |
+ return protocol::Runtime::ConsoleAPICalled::TypeEnum::Log; |
} |
String16 messageLevelValue(MessageLevel level) |
@@ -231,7 +235,7 @@ void V8ConsoleMessage::setLocation(const String16& url, unsigned lineNumber, uns |
void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V8InspectorSessionImpl* session, bool generatePreview) const |
{ |
- DCHECK_EQ(V8MessageOrigin::kConsole, m_origin); |
+ DCHECK(m_origin == V8MessageOrigin::kExternalConsole || m_origin == V8MessageOrigin::kConsole); |
std::unique_ptr<protocol::Console::ConsoleMessage> result = |
protocol::Console::ConsoleMessage::create() |
.setSource(messageSourceValue(m_source)) |
@@ -239,7 +243,6 @@ void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V |
.setText(m_message) |
.setTimestamp(m_timestamp / 1000) // TODO(dgozman): migrate this to milliseconds. |
.build(); |
- result->setType(consoleAPITypeValue(m_type)); |
result->setLine(static_cast<int>(m_lineNumber)); |
result->setColumn(static_cast<int>(m_columnNumber)); |
if (m_scriptId) |
@@ -249,9 +252,6 @@ void V8ConsoleMessage::reportToFrontend(protocol::Console::Frontend* frontend, V |
result->setNetworkRequestId(m_requestIdentifier); |
if (m_contextId) |
result->setExecutionContextId(m_contextId); |
- std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> args = wrapArguments(session, generatePreview); |
- if (args) |
- result->setParameters(std::move(args)); |
if (m_stackTrace) |
result->setStack(m_stackTrace->buildInspectorObject()); |
if (m_source == WorkerMessageSource && !m_workerId.isEmpty()) |
@@ -320,6 +320,19 @@ void V8ConsoleMessage::reportToFrontend(protocol::Runtime::Frontend* frontend, V |
frontend->exceptionRevoked(m_timestamp, m_message, m_revokedExceptionId); |
return; |
} |
+ if (m_origin == V8MessageOrigin::kConsole) { |
+ std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> arguments = wrapArguments(session, generatePreview); |
+ if (!arguments) { |
+ arguments = protocol::Array<protocol::Runtime::RemoteObject>::create(); |
+ if (!m_message.isEmpty()) { |
+ std::unique_ptr<protocol::Runtime::RemoteObject> messageArg = protocol::Runtime::RemoteObject::create().setType(protocol::Runtime::RemoteObject::TypeEnum::String).build(); |
+ messageArg->setValue(protocol::StringValue::create(m_message)); |
+ arguments->addItem(std::move(messageArg)); |
+ } |
+ } |
+ frontend->consoleAPICalled(consoleAPITypeValue(m_type), std::move(arguments), m_contextId, m_timestamp, m_stackTrace ? m_stackTrace->buildInspectorObject() : nullptr); |
+ return; |
+ } |
NOTREACHED(); |
} |
@@ -354,36 +367,33 @@ ConsoleAPIType V8ConsoleMessage::type() const |
} |
// static |
-std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double timestamp, ConsoleAPIType type, MessageLevel level, const String16& messageText, std::vector<v8::Local<v8::Value>>* arguments, std::unique_ptr<V8StackTrace> stackTrace, InspectedContext* context) |
+std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForConsoleAPI(double timestamp, ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& arguments, std::unique_ptr<V8StackTrace> stackTrace, InspectedContext* context) |
{ |
- String16 url; |
- unsigned lineNumber = 0; |
- unsigned columnNumber = 0; |
+ std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, LogMessageLevel, String16())); |
if (stackTrace && !stackTrace->isEmpty()) { |
- url = stackTrace->topSourceURL(); |
- lineNumber = stackTrace->topLineNumber(); |
- columnNumber = stackTrace->topColumnNumber(); |
- } |
- |
- String16 actualMessage = messageText; |
- |
- Arguments messageArguments; |
- if (arguments && arguments->size()) { |
- for (size_t i = 0; i < arguments->size(); ++i) |
- messageArguments.push_back(wrapUnique(new v8::Global<v8::Value>(context->isolate(), arguments->at(i)))); |
- if (actualMessage.isEmpty()) |
- actualMessage = V8ValueStringBuilder::toString(messageArguments.at(0)->Get(context->isolate()), context->isolate()); |
+ message->m_url = stackTrace->topSourceURL(); |
+ message->m_lineNumber = stackTrace->topLineNumber(); |
+ message->m_columnNumber = stackTrace->topColumnNumber(); |
} |
- |
- std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, level, actualMessage)); |
- message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), 0); |
+ message->m_stackTrace = std::move(stackTrace); |
message->m_type = type; |
- if (messageArguments.size()) { |
- message->m_contextId = context->contextId(); |
- message->m_arguments.swap(messageArguments); |
- } |
+ message->m_contextId = context->contextId(); |
+ for (size_t i = 0; i < arguments.size(); ++i) |
+ message->m_arguments.push_back(wrapUnique(new v8::Global<v8::Value>(context->isolate(), arguments.at(i)))); |
+ if (arguments.size()) |
+ message->m_message = V8ValueStringBuilder::toString(arguments[0], context->isolate()); |
+ |
+ MessageLevel level = LogMessageLevel; |
+ if (type == ConsoleAPIType::kDebug || type == ConsoleAPIType::kCount || type == ConsoleAPIType::kTimeEnd) |
+ level = DebugMessageLevel; |
+ if (type == ConsoleAPIType::kError || type == ConsoleAPIType::kAssert) |
+ level = ErrorMessageLevel; |
+ if (type == ConsoleAPIType::kWarning) |
+ level = WarningMessageLevel; |
+ if (type == ConsoleAPIType::kInfo) |
+ level = InfoMessageLevel; |
+ context->debugger()->client()->consoleAPIMessage(context->contextGroupId(), level, message->m_message, message->m_url, message->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get()); |
- context->debugger()->client()->messageAddedToConsole(context->contextGroupId(), message->m_source, message->m_level, message->m_message, message->m_url, message->m_lineNumber, message->m_columnNumber, message->m_stackTrace.get()); |
return message; |
} |
@@ -411,7 +421,7 @@ std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createForRevokedException(do |
// static |
std::unique_ptr<V8ConsoleMessage> V8ConsoleMessage::createExternal(double timestamp, MessageSource source, MessageLevel level, const String16& messageText, const String16& url, unsigned lineNumber, unsigned columnNumber, std::unique_ptr<V8StackTrace> stackTrace, int scriptId, const String16& requestIdentifier, const String16& workerId) |
{ |
- std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(V8MessageOrigin::kConsole, timestamp, source, level, messageText)); |
+ std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(V8MessageOrigin::kExternalConsole, timestamp, source, level, messageText)); |
message->setLocation(url, lineNumber, columnNumber, std::move(stackTrace), scriptId); |
message->m_requestIdentifier = requestIdentifier; |
message->m_workerId = workerId; |
@@ -450,10 +460,10 @@ void V8ConsoleMessageStorage::addMessage(std::unique_ptr<V8ConsoleMessage> messa |
V8InspectorSessionImpl* session = m_debugger->sessionForContextGroup(m_contextGroupId); |
if (session) { |
- if (message->origin() == V8MessageOrigin::kConsole) |
+ if (message->origin() == V8MessageOrigin::kExternalConsole || message->origin() == V8MessageOrigin::kConsole) |
session->consoleAgent()->messageAdded(message.get()); |
- else |
- session->runtimeAgent()->exceptionMessageAdded(message.get()); |
+ if (message->origin() != V8MessageOrigin::kExternalConsole) |
+ session->runtimeAgent()->messageAdded(message.get()); |
} |
DCHECK(m_messages.size() <= maxConsoleMessageCount); |