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

Unified Diff: third_party/WebKit/Source/platform/v8_inspector/V8Console.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/V8Console.cpp
diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8Console.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8Console.cpp
index b8d116a87b2641003ca8acc48edced92cf29dffe..24f262817dedc1e32ea86bf39fcfadb17d5b8298 100644
--- a/third_party/WebKit/Source/platform/v8_inspector/V8Console.cpp
+++ b/third_party/WebKit/Source/platform/v8_inspector/V8Console.cpp
@@ -76,42 +76,48 @@ public:
return m_debuggerClient;
}
- void reportMessageToConsole(v8::Local<v8::Context> context, ConsoleAPIType type, MessageLevel level, const String16& message, const v8::FunctionCallbackInfo<v8::Value>* arguments, unsigned skipArgumentCount)
+ void reportCall(ConsoleAPIType type)
{
- InspectedContext* inspectedContext = ensureInspectedContext();
- if (!inspectedContext)
+ if (!m_info.Length())
return;
- V8DebuggerImpl* debugger = inspectedContext->debugger();
+ std::vector<v8::Local<v8::Value>> arguments;
+ for (int i = 0; i < m_info.Length(); ++i)
+ arguments.push_back(m_info[i]);
+ reportCall(type, arguments);
+ }
- std::unique_ptr<V8ConsoleMessage> consoleMessage = nullptr;
- if (arguments) {
- std::vector<v8::Local<v8::Value>> messageArguments;
- for (int i = skipArgumentCount; i < arguments->Length(); ++i)
- messageArguments.push_back((*arguments)[i]);
- consoleMessage = V8ConsoleMessage::createForConsoleAPI(debugger->client()->currentTimeMS(), type, level, message, &messageArguments, debugger->captureStackTrace(false), inspectedContext);
- } else {
- consoleMessage = V8ConsoleMessage::createForConsoleAPI(debugger->client()->currentTimeMS(), type, level, message, nullptr, debugger->captureStackTrace(false), inspectedContext);
- }
- debugger->ensureConsoleMessageStorage(inspectedContext->contextGroupId())->addMessage(std::move(consoleMessage));
+ void reportCallWithDefaultArgument(ConsoleAPIType type, const String16& message)
+ {
+ std::vector<v8::Local<v8::Value>> arguments;
+ for (int i = 0; i < m_info.Length(); ++i)
+ arguments.push_back(m_info[i]);
+ if (!m_info.Length())
+ arguments.push_back(toV8String(m_isolate, message));
+ reportCall(type, arguments);
}
- void addMessage(ConsoleAPIType type, MessageLevel level, String16 emptyText, int skipArgumentCount)
+ void reportCallWithArgument(ConsoleAPIType type, const String16& message)
{
- if (emptyText.isEmpty() && !m_info.Length())
- return;
- reportMessageToConsole(m_context, type, level, m_info.Length() <= skipArgumentCount ? emptyText : String16(), &m_info, skipArgumentCount);
+ std::vector<v8::Local<v8::Value>> arguments = { toV8String(m_isolate, message) };
+ reportCall(type, arguments);
}
- void addMessage(ConsoleAPIType type, MessageLevel level, const String16& message)
+ void reportCall(ConsoleAPIType type, const std::vector<v8::Local<v8::Value>>& arguments)
{
- reportMessageToConsole(m_context, type, level, message, nullptr, 0 /* skipArgumentsCount */);
+ InspectedContext* inspectedContext = ensureInspectedContext();
+ if (!inspectedContext)
+ return;
+ V8DebuggerImpl* debugger = inspectedContext->debugger();
+ std::unique_ptr<V8ConsoleMessage> message = V8ConsoleMessage::createForConsoleAPI(debugger->client()->currentTimeMS(), type, arguments, debugger->captureStackTrace(false), inspectedContext);
+ debugger->ensureConsoleMessageStorage(inspectedContext->contextGroupId())->addMessage(std::move(message));
}
- void addDeprecationMessage(const char* id, const String16& message)
+ void reportDeprecatedCall(const char* id, const String16& message)
{
if (checkAndSetPrivateFlagOnConsole(id, false))
return;
- reportMessageToConsole(m_context, ConsoleAPIType::kLog, WarningMessageLevel, message, nullptr, 0 /* skipArgumentsCount */);
+ std::vector<v8::Local<v8::Value>> arguments = { toV8String(m_isolate, message) };
+ reportCall(ConsoleAPIType::kWarning, arguments);
}
bool firstArgToBoolean(bool defaultValue)
@@ -282,67 +288,67 @@ void createBoundFunctionProperty(v8::Local<v8::Context> context, v8::Local<v8::O
void V8Console::debugCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kLog, DebugMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kDebug);
}
void V8Console::errorCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kLog, ErrorMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kError);
}
void V8Console::infoCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kLog, InfoMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kInfo);
}
void V8Console::logCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kLog, LogMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kLog);
}
void V8Console::warnCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kLog, WarningMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kWarning);
}
void V8Console::dirCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kDir, LogMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kDir);
}
void V8Console::dirxmlCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kDirXML, LogMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kDirXML);
}
void V8Console::tableCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kTable, LogMessageLevel, String16(), 0);
+ ConsoleHelper(info).reportCall(ConsoleAPIType::kTable);
}
void V8Console::traceCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kTrace, LogMessageLevel, String16("console.trace"), 0);
+ ConsoleHelper(info).reportCallWithDefaultArgument(ConsoleAPIType::kTrace, String16("console.trace"));
}
void V8Console::groupCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kStartGroup, LogMessageLevel, String16("console.group"), 0);
+ ConsoleHelper(info).reportCallWithDefaultArgument(ConsoleAPIType::kStartGroup, String16("console.group"));
}
void V8Console::groupCollapsedCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kStartGroupCollapsed, LogMessageLevel, String16("console.groupCollapsed"), 0);
+ ConsoleHelper(info).reportCallWithDefaultArgument(ConsoleAPIType::kStartGroupCollapsed, String16("console.groupCollapsed"));
}
void V8Console::groupEndCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kEndGroup, LogMessageLevel, String16("console.groupEnd"), 0);
+ ConsoleHelper(info).reportCallWithDefaultArgument(ConsoleAPIType::kEndGroup, String16("console.groupEnd"));
}
void V8Console::clearCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addMessage(ConsoleAPIType::kClear, LogMessageLevel, String16("console.clear"), 0);
+ ConsoleHelper(info).reportCallWithDefaultArgument(ConsoleAPIType::kClear, String16("console.clear"));
}
void V8Console::countCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
@@ -364,7 +370,7 @@ void V8Console::countCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
return;
int64_t count = helper.getIntFromMap(countMap, identifier, 0) + 1;
helper.setIntOnMap(countMap, identifier, count);
- helper.addMessage(ConsoleAPIType::kCount, DebugMessageLevel, title + ": " + String16::fromInteger(count));
+ helper.reportCallWithArgument(ConsoleAPIType::kCount, title + ": " + String16::fromInteger(count));
}
void V8Console::assertCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
@@ -372,14 +378,21 @@ void V8Console::assertCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
ConsoleHelper helper(info);
if (helper.firstArgToBoolean(false))
return;
- helper.addMessage(ConsoleAPIType::kAssert, ErrorMessageLevel, String16("console.assert"), 1);
+
+ std::vector<v8::Local<v8::Value>> arguments;
+ for (int i = 1; i < info.Length(); ++i)
+ arguments.push_back(info[i]);
+ if (info.Length() < 2)
+ arguments.push_back(toV8String(info.GetIsolate(), String16("console.assert")));
+ helper.reportCall(ConsoleAPIType::kAssert, arguments);
+
if (V8DebuggerAgentImpl* debuggerAgent = helper.debuggerAgent())
debuggerAgent->breakProgramOnException(protocol::Debugger::Paused::ReasonEnum::Assert, nullptr);
}
void V8Console::markTimelineCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addDeprecationMessage("V8Console#markTimelineDeprecated", "'console.markTimeline' is deprecated. Please use 'console.timeStamp' instead.");
+ ConsoleHelper(info).reportDeprecatedCall("V8Console#markTimelineDeprecated", "'console.markTimeline' is deprecated. Please use 'console.timeStamp' instead.");
timeStampCallback(info);
}
@@ -427,19 +440,19 @@ static void timeEndFunction(const v8::FunctionCallbackInfo<v8::Value>& info, boo
return;
double elapsed = client->currentTimeMS() - helper.getDoubleFromMap(timeMap, protocolTitle, 0.0);
String16 message = protocolTitle + ": " + String16::fromDoubleFixedPrecision(elapsed, 3) + "ms";
- helper.addMessage(ConsoleAPIType::kTimeEnd, DebugMessageLevel, message);
+ helper.reportCallWithArgument(ConsoleAPIType::kTimeEnd, message);
}
}
void V8Console::timelineCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addDeprecationMessage("V8Console#timeline", "'console.timeline' is deprecated. Please use 'console.time' instead.");
+ ConsoleHelper(info).reportDeprecatedCall("V8Console#timeline", "'console.timeline' is deprecated. Please use 'console.time' instead.");
timeFunction(info, true);
}
void V8Console::timelineEndCallback(const v8::FunctionCallbackInfo<v8::Value>& info)
{
- ConsoleHelper(info).addDeprecationMessage("V8Console#timelineEnd", "'console.timelineEnd' is deprecated. Please use 'console.timeEnd' instead.");
+ ConsoleHelper(info).reportDeprecatedCall("V8Console#timelineEnd", "'console.timelineEnd' is deprecated. Please use 'console.timeEnd' instead.");
timeEndFunction(info, true);
}

Powered by Google App Engine
This is Rietveld 408576698