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

Unified Diff: Source/core/frame/FrameConsole.cpp

Issue 472023002: [DevTools] ConsoleAPI messages pass through frame console (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: PassRefPtr<ConsoleMessage> -> PassRefPtrWillBeRawPtr<ConsoleMessage> Created 6 years, 4 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
« no previous file with comments | « Source/core/frame/ConsoleBase.cpp ('k') | Source/core/inspector/ConsoleMessage.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/frame/FrameConsole.cpp
diff --git a/Source/core/frame/FrameConsole.cpp b/Source/core/frame/FrameConsole.cpp
index 5c42d4457d0ff69a841a9eeabea487aaff5ce751..bab484912618e92abaa33971a0f6ffe52730cb47 100644
--- a/Source/core/frame/FrameConsole.cpp
+++ b/Source/core/frame/FrameConsole.cpp
@@ -29,6 +29,7 @@
#include "config.h"
#include "core/frame/FrameConsole.h"
+#include "bindings/core/v8/ScriptCallStackFactory.h"
#include "core/frame/FrameHost.h"
#include "core/inspector/ConsoleAPITypes.h"
#include "core/inspector/ConsoleMessage.h"
@@ -55,7 +56,8 @@ FrameConsole::FrameConsole(LocalFrame& frame)
void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleMessage)
{
- if (muteCount)
+ RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = prpConsoleMessage;
+ if (muteCount && consoleMessage->source() != ConsoleAPIMessageSource)
return;
// FIXME: This should not need to reach for the main-frame.
@@ -64,23 +66,41 @@ void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleM
if (!context)
return;
- RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = prpConsoleMessage;
InspectorInstrumentation::addMessageToConsole(context, consoleMessage.get());
+ if (consoleMessage->source() == CSSMessageSource)
+ return;
+
String messageURL;
- if (consoleMessage->callStack())
+ unsigned lineNumber = 0;
+ if (consoleMessage->callStack()) {
+ lineNumber = consoleMessage->callStack()->at(0).lineNumber();
messageURL = consoleMessage->callStack()->at(0).sourceURL();
- else
+ } else {
+ lineNumber = consoleMessage->lineNumber();
messageURL = consoleMessage->url();
+ }
- if (consoleMessage->source() == CSSMessageSource)
- return;
+ RefPtr<ScriptCallStack> reportedCallStack;
+ if (consoleMessage->source() != ConsoleAPIMessageSource) {
+ if (consoleMessage->callStack() && m_frame.chromeClient().shouldReportDetailedMessageForSource(messageURL))
+ reportedCallStack = consoleMessage->callStack();
+ } else {
+ if (!m_frame.host() || (consoleMessage->scriptArguments() && consoleMessage->scriptArguments()->argumentCount() == 0))
+ return;
- String stackTrace;
- if (consoleMessage->callStack() && m_frame.chromeClient().shouldReportDetailedMessageForSource(consoleMessage->url()))
- stackTrace = FrameConsole::formatStackTraceString(consoleMessage->message(), consoleMessage->callStack());
+ MessageType type = consoleMessage->type();
+ if (type == StartGroupMessageType || type == EndGroupMessageType || type == StartGroupCollapsedMessageType)
+ return;
- m_frame.chromeClient().addMessageToConsole(&m_frame, consoleMessage->source(), consoleMessage->level(), consoleMessage->message(), consoleMessage->lineNumber(), messageURL, stackTrace);
+ if (m_frame.chromeClient().shouldReportDetailedMessageForSource(messageURL))
+ reportedCallStack = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture);
+ }
+
+ String stackTrace;
+ if (reportedCallStack)
+ stackTrace = FrameConsole::formatStackTraceString(consoleMessage->message(), reportedCallStack);
+ m_frame.chromeClient().addMessageToConsole(&m_frame, consoleMessage->source(), consoleMessage->level(), consoleMessage->message(), lineNumber, messageURL, stackTrace);
}
String FrameConsole::formatStackTraceString(const String& originalMessage, PassRefPtrWillBeRawPtr<ScriptCallStack> callStack)
« no previous file with comments | « Source/core/frame/ConsoleBase.cpp ('k') | Source/core/inspector/ConsoleMessage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698