void ConsoleBase::internalAddMessage(MessageType type, MessageLevel level, ScriptState* scriptState, RawPtr<ScriptArguments> scriptArguments, bool acceptNoArguments) { RawPtr<ScriptArguments> arguments = scriptArguments; if (!acceptNoArguments && (!arguments || !arguments->argumentCount())) return; if (scriptState && !scriptState->contextIsValid()) arguments.clear(); String message; if (arguments) arguments->getFirstArgumentAsString(message); RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(ConsoleAPIMessageSource, level, message); consoleMessage->setType(type); consoleMessage->setScriptState(scriptState); consoleMessage->setScriptArguments(arguments); consoleMessage->setCallStack(ScriptCallStack::captureForConsole()); reportMessageToConsole(consoleMessage.release()); }
void ConsoleBase::count(ScriptState* scriptState, RawPtr<ScriptArguments> arguments) { RefPtr<ScriptCallStack> callStack(ScriptCallStack::capture(1)); // Follow Firebug's behavior of counting with null and undefined title in // the same bucket as no argument String title; arguments->getFirstArgumentAsString(title); String identifier = title.isEmpty() ? String(callStack->topSourceURL() + ':' + String::number(callStack->topLineNumber())) : String(title + '@'); HashCountedSet<String>::AddResult result = m_counts.add(identifier); String message = title + ": " + String::number(result.storedValue->value); RawPtr<ConsoleMessage> consoleMessage = ConsoleMessage::create(ConsoleAPIMessageSource, DebugMessageLevel, message); consoleMessage->setType(CountMessageType); consoleMessage->setScriptState(scriptState); consoleMessage->setCallStack(callStack.release()); reportMessageToConsole(consoleMessage.release()); }