Chromium Code Reviews| Index: Source/core/frame/FrameConsole.cpp |
| diff --git a/Source/core/frame/FrameConsole.cpp b/Source/core/frame/FrameConsole.cpp |
| index 28dc4d3da49113cd0162f15067ff2b393264a289..d3fc317f623ab39615d27c476102da9bba502d23 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,7 @@ FrameConsole::FrameConsole(LocalFrame& frame) |
| void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleMessage) |
| { |
| - if (muteCount) |
| + if (muteCount && prpConsoleMessage->source() != ConsoleAPIMessageSource) |
|
vsevik
2014/08/18 18:41:06
You should never use prp* parameters as is.
kozyatinskiy1
2014/08/19 07:31:06
Done.
|
| return; |
| // FIXME: This should not need to reach for the main-frame. |
| @@ -67,20 +68,39 @@ void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleM |
| 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) |