Index: Source/core/page/Console.cpp |
diff --git a/Source/core/page/Console.cpp b/Source/core/page/Console.cpp |
index bd34162ac01de4fa12be8ecbfa4529726f6c7d9f..3b0202751b48123997c9634add97c97350e7a696 100644 |
--- a/Source/core/page/Console.cpp |
+++ b/Source/core/page/Console.cpp |
@@ -69,16 +69,24 @@ static void internalAddMessage(Page* page, MessageType type, MessageLevel level, |
if (!acceptNoArguments && !arguments->argumentCount()) |
return; |
- size_t stackSize = printTrace ? ScriptCallStack::maxCallStackSizeToCapture : 1; |
- RefPtr<ScriptCallStack> callStack(createScriptCallStack(state, stackSize)); |
+ String executionContextURL = state->scriptExecutionContext()->url().string(); |
+ bool reportDetailedMessage = page->chrome().client()->shouldReportDetailedMessageForContext(state->context()) || page->chrome().client()->shouldReportDetailedMessageForURL(executionContextURL); |
+ |
+ size_t stackSize = printTrace || reportDetailedMessage ? ScriptCallStack::maxCallStackSizeToCapture : 1; |
+ RefPtr<ScriptCallStack> callStack(createScriptCallStack(stackSize)); |
const ScriptCallFrame& lastCaller = callStack->at(0); |
String message; |
bool gotMessage = arguments->getFirstArgumentAsString(message); |
InspectorInstrumentation::addMessageToConsole(page, ConsoleAPIMessageSource, type, level, message, state, arguments); |
- if (gotMessage) |
- page->chrome().client()->addMessageToConsole(ConsoleAPIMessageSource, type, level, message, lastCaller.lineNumber(), lastCaller.sourceURL()); |
+ if (gotMessage) { |
+ String details; |
+ if (reportDetailedMessage) |
+ details = page->chrome().generateConsoleMessageDetails(callStack, executionContextURL); |
+ |
+ page->chrome().client()->addMessageToConsole(ConsoleAPIMessageSource, level, message, lastCaller.lineNumber(), lastCaller.sourceURL(), details); |
+ } |
} |
void Console::debug(ScriptState* state, PassRefPtr<ScriptArguments> arguments) |