Index: Source/core/page/PageConsole.cpp |
diff --git a/Source/core/page/PageConsole.cpp b/Source/core/page/PageConsole.cpp |
index 07bbb252a6ce2974edde7df033fa5d860034e9b2..e2993d23ed7a4e419d1aeb385704adbfb1c631f3 100644 |
--- a/Source/core/page/PageConsole.cpp |
+++ b/Source/core/page/PageConsole.cpp |
@@ -32,6 +32,7 @@ |
#include "core/dom/Document.h" |
#include "core/dom/ScriptableDocumentParser.h" |
#include "core/inspector/ConsoleAPITypes.h" |
+#include "core/inspector/InspectorAgent.h" |
#include "core/inspector/InspectorConsoleInstrumentation.h" |
#include "core/inspector/ScriptCallStack.h" |
#include "core/page/Chrome.h" |
@@ -46,8 +47,21 @@ namespace { |
int muteCount = 0; |
+PassOwnPtr<ConsoleMessage> createConsoleMessage(Page* page, MessageSource source, MessageLevel level, const String& message, const String& url, unsigned lineNumber, unsigned columnNumber, PassRefPtr<ScriptCallStack> callStack, ScriptState* state, unsigned long requestIdentifier) |
+{ |
+ String executionContextURL = page->mainFrame()->document()->url().string(); |
+ bool reportDetailedMessage = (state && page->chrome().client()->shouldReportDetailedMessageForContext(state->context())) |
+ || page->chrome().client()->shouldReportDetailedMessageForURL(url) |
+ || page->chrome().client()->shouldReportDetailedMessageForURL(executionContextURL); |
+ |
+ if (callStack) |
+ return adoptPtr(new ConsoleMessage(reportDetailedMessage, source, LogMessageType, level, message, executionContextURL, callStack, requestIdentifier)); |
+ |
+ return adoptPtr(new ConsoleMessage(reportDetailedMessage, source, LogMessageType, level, message, executionContextURL, url, lineNumber, columnNumber, state, requestIdentifier)); |
} |
+} // anonymous namespace |
+ |
PageConsole::PageConsole(Page* page) |
: m_page(page) |
{ |
@@ -83,15 +97,15 @@ void PageConsole::addMessage(MessageSource source, MessageLevel level, const Str |
if (!page) |
return; |
- if (callStack) |
- InspectorInstrumentation::addMessageToConsole(page, source, LogMessageType, level, message, callStack, requestIdentifier); |
- else |
- InspectorInstrumentation::addMessageToConsole(page, source, LogMessageType, level, message, url, lineNumber, columnNumber, state, requestIdentifier); |
+ OwnPtr<ConsoleMessage> consoleMessage = createConsoleMessage(page, source, level, message, url, lineNumber, columnNumber, callStack, state, requestIdentifier); |
- if (source == CSSMessageSource) |
- return; |
+ if (source != CSSMessageSource) |
+ page->chrome().client()->addMessageToConsole(source, level, message, lineNumber, url, consoleMessage->generateJSONWithoutArguments()->toJSONString()); |
- page->chrome().client()->addMessageToConsole(source, level, message, lineNumber, url); |
+ if (callStack) |
+ InspectorInstrumentation::addMessageToConsole(page, consoleMessage.release(), InspectorAgent::DontCheckFrontend); |
+ else |
+ InspectorInstrumentation::addMessageToConsole(page, consoleMessage.release(), InspectorAgent::CheckFrontend); |
} |
// static |