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); }
void FrameConsole::didFailLoading(unsigned long requestIdentifier, const ResourceError& error) { if (error.isCancellation()) // Report failures only. return; StringBuilder message; message.appendLiteral("Failed to load resource"); if (!error.localizedDescription().isEmpty()) { message.appendLiteral(": "); message.append(error.localizedDescription()); } RefPtrWillBeRawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(NetworkMessageSource, ErrorMessageLevel, message.toString(), error.failingURL()); consoleMessage->setRequestIdentifier(requestIdentifier); messageStorage()->reportMessage(consoleMessage.release()); }
void PageConsoleAgent::workerTerminated(WorkerInspectorProxy* workerInspectorProxy) { WorkerGlobalScopeProxy* proxy = workerInspectorProxy->workerGlobalScopeProxy(); if (!proxy) return; HashSet<WorkerGlobalScopeProxy*>::iterator iterator = m_workersWithEnabledConsole.find(proxy); bool workerAgentWasEnabled = iterator != m_workersWithEnabledConsole.end(); if (workerAgentWasEnabled) return; ConsoleMessageStorage* storage = messageStorage(); size_t messageCount = storage->size(); for (size_t i = 0; i < messageCount; ++i) { ConsoleMessage* message = storage->at(i); if (message->workerGlobalScopeProxy() == proxy) { message->setWorkerGlobalScopeProxy(nullptr); sendConsoleMessageToFrontend(message, false); } } }
void FrameConsole::adoptWorkerMessagesAfterTermination(WorkerGlobalScopeProxy* proxy) { ConsoleMessageStorage* storage = messageStorage(); if (storage) storage->adoptWorkerMessagesAfterTermination(proxy); }
void FrameConsole::clearMessages() { ConsoleMessageStorage* storage = messageStorage(); if (storage) storage->clear(m_frame->document()); }
void WorkerConsoleAgent::clearMessages(ErrorString*) { messageStorage()->clear(m_workerGlobalScope.get()); }
void FrameConsole::adoptWorkerMessagesAfterTermination(WorkerGlobalScopeProxy* proxy) { messageStorage()->adoptWorkerMessagesAfterTermination(proxy); }
void FrameConsole::clearMessages() { messageStorage()->clear(); }
void PageConsoleAgent::clearMessages(ErrorString* errorString) { m_inspectorDOMAgent->releaseDanglingNodes(); messageStorage()->clear(m_inspectedFrames->root()->document()); }