Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Unified Diff: third_party/WebKit/Source/platform/v8_inspector/V8ConsoleMessage.cpp

Issue 2139543002: [DevTools] Report console API calls through Runtime. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 fb6bc1b7e0917dc33d31db00a24f5e7ff665f150..3d47de3b3fc3287d1eac94e6bfa1052c90deeeb8 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::ConsoleAPICall::TypeEnum::Log;
+ case ConsoleAPIType::kDebug: return protocol::Runtime::ConsoleAPICall::TypeEnum::Debug;
+ case ConsoleAPIType::kInfo: return protocol::Runtime::ConsoleAPICall::TypeEnum::Info;
+ case ConsoleAPIType::kError: return protocol::Runtime::ConsoleAPICall::TypeEnum::Error;
+ case ConsoleAPIType::kWarning: return protocol::Runtime::ConsoleAPICall::TypeEnum::Warning;
+ case ConsoleAPIType::kClear: return protocol::Runtime::ConsoleAPICall::TypeEnum::Clear;
+ case ConsoleAPIType::kDir: return protocol::Runtime::ConsoleAPICall::TypeEnum::Dir;
+ case ConsoleAPIType::kDirXML: return protocol::Runtime::ConsoleAPICall::TypeEnum::Dirxml;
+ case ConsoleAPIType::kTable: return protocol::Runtime::ConsoleAPICall::TypeEnum::Table;
+ case ConsoleAPIType::kTrace: return protocol::Runtime::ConsoleAPICall::TypeEnum::Trace;
+ case ConsoleAPIType::kStartGroup: return protocol::Runtime::ConsoleAPICall::TypeEnum::StartGroup;
+ case ConsoleAPIType::kStartGroupCollapsed: return protocol::Runtime::ConsoleAPICall::TypeEnum::StartGroupCollapsed;
+ case ConsoleAPIType::kEndGroup: return protocol::Runtime::ConsoleAPICall::TypeEnum::EndGroup;
+ case ConsoleAPIType::kAssert: return protocol::Runtime::ConsoleAPICall::TypeEnum::Assert;
+ case ConsoleAPIType::kTimeEnd: return protocol::Runtime::ConsoleAPICall::TypeEnum::Debug;
+ case ConsoleAPIType::kCount: return protocol::Runtime::ConsoleAPICall::TypeEnum::Debug;
}
- return protocol::Console::ConsoleMessage::TypeEnum::Log;
+ return protocol::Runtime::ConsoleAPICall::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_EQ(V8MessageOrigin::kExternalConsole, m_origin);
std::unique_ptr<protocol::Console::ConsoleMessage> result =
protocol::Console::ConsoleMessage::create()
.setSource(messageSourceValue(m_source))
@@ -320,6 +324,22 @@ 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));
+ }
+ }
+ if (m_stackTrace)
+ frontend->consoleAPICall(m_timestamp, consoleAPITypeValue(m_type), std::move(arguments), m_contextId, m_stackTrace->buildInspectorObject());
+ else
+ frontend->consoleAPICall(m_timestamp, consoleAPITypeValue(m_type), std::move(arguments), m_contextId);
kozy 2016/07/13 18:26:39 Can we replace it with smthg like: frontend->conso
dgozman 2016/07/13 21:08:07 Done.
+ return;
+ }
NOTREACHED();
}
@@ -354,36 +374,36 @@ 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)
{
+ std::unique_ptr<V8ConsoleMessage> message = wrapUnique(new V8ConsoleMessage(V8MessageOrigin::kConsole, timestamp, ConsoleAPIMessageSource, LogMessageLevel, String16()));
+ message->m_stackTrace = std::move(stackTrace);
+ message->m_type = type;
+ 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;
String16 url;
unsigned lineNumber = 0;
unsigned columnNumber = 0;
- 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());
- }
-
- 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_type = type;
- if (messageArguments.size()) {
- message->m_contextId = context->contextId();
- message->m_arguments.swap(messageArguments);
+ if (message->m_stackTrace && !message->m_stackTrace->isEmpty()) {
+ url = message->m_stackTrace->topSourceURL();
+ lineNumber = message->m_stackTrace->topLineNumber();
+ columnNumber = message->m_stackTrace->topColumnNumber();
}
+ context->debugger()->client()->consoleAPIMessage(context->contextGroupId(), level, message->m_message, url, lineNumber, 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 +431,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 +470,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)
session->consoleAgent()->messageAdded(message.get());
else
- session->runtimeAgent()->exceptionMessageAdded(message.get());
+ session->runtimeAgent()->messageAdded(message.get());
}
DCHECK(m_messages.size() <= maxConsoleMessageCount);

Powered by Google App Engine
This is Rietveld 408576698