void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleMessage) { if (muteCount) return; // FIXME: This should not need to reach for the main-frame. // Inspector code should just take the current frame and know how to walk itself. ExecutionContext* context = m_frame.document(); if (!context) return; RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = prpConsoleMessage; InspectorInstrumentation::addMessageToConsole(context, consoleMessage.get()); String messageURL; if (consoleMessage->callStack()) messageURL = consoleMessage->callStack()->at(0).sourceURL(); else messageURL = consoleMessage->url(); if (consoleMessage->source() == CSSMessageSource) return; String stackTrace; if (consoleMessage->callStack() && m_frame.chromeClient().shouldReportDetailedMessageForSource(consoleMessage->url())) stackTrace = FrameConsole::formatStackTraceString(consoleMessage->message(), consoleMessage->callStack()); m_frame.chromeClient().addMessageToConsole(&m_frame, consoleMessage->source(), consoleMessage->level(), consoleMessage->message(), consoleMessage->lineNumber(), messageURL, stackTrace); }
void FrameConsole::addMessage(PassRefPtrWillBeRawPtr<ConsoleMessage> prpConsoleMessage) { RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = prpConsoleMessage; if (muteCount && consoleMessage->source() != ConsoleAPIMessageSource) return; // FIXME: This should not need to reach for the main-frame. // Inspector code should just take the current frame and know how to walk itself. ExecutionContext* context = frame().document(); if (!context) return; if (!messageStorage()) return; String messageURL; unsigned lineNumber = 0; if (consoleMessage->callStack() && consoleMessage->callStack()->size()) { lineNumber = consoleMessage->callStack()->at(0).lineNumber(); messageURL = consoleMessage->callStack()->at(0).sourceURL(); } else { lineNumber = consoleMessage->lineNumber(); messageURL = consoleMessage->url(); } messageStorage()->reportMessage(m_frame->document(), consoleMessage); if (consoleMessage->source() == CSSMessageSource || consoleMessage->source() == NetworkMessageSource) return; RefPtrWillBeRawPtr<ScriptCallStack> reportedCallStack = nullptr; if (consoleMessage->source() != ConsoleAPIMessageSource) { if (consoleMessage->callStack() && frame().chromeClient().shouldReportDetailedMessageForSource(frame(), messageURL)) reportedCallStack = consoleMessage->callStack(); } else { if (!frame().host() || (consoleMessage->scriptArguments() && !consoleMessage->scriptArguments()->argumentCount())) return; if (!allClientReportingMessageTypes().contains(consoleMessage->type())) return; if (frame().chromeClient().shouldReportDetailedMessageForSource(frame(), messageURL)) reportedCallStack = createScriptCallStack(ScriptCallStack::maxCallStackSizeToCapture); } String stackTrace; if (reportedCallStack) stackTrace = FrameConsole::formatStackTraceString(consoleMessage->message(), reportedCallStack); frame().chromeClient().addMessageToConsole(m_frame, consoleMessage->source(), consoleMessage->level(), consoleMessage->message(), lineNumber, messageURL, stackTrace); }