void InspectorConsoleAgent::count(JSC::ExecState* state, PassRefPtr<ScriptArguments> arguments) { RefPtr<ScriptCallStack> callStack(createScriptCallStackForConsole(state, ScriptCallStack::maxCallStackSizeToCapture)); String title; String identifier; if (!arguments->argumentCount()) { // '@' prefix for engine generated labels. title = ASCIILiteral("Global"); identifier = makeString('@', title); } else { // '#' prefix for user labels. arguments->getFirstArgumentAsString(title); identifier = makeString('#', title); } auto result = m_counts.add(identifier, 1); if (!result.isNewEntry) result.iterator->value += 1; // FIXME: Web Inspector should have a better UI for counters, but for now we just log an updated counter value. String message = makeString(title, ": ", String::number(result.iterator->value)); addMessageToConsole(std::make_unique<ConsoleMessage>(MessageSource::ConsoleAPI, MessageType::Log, MessageLevel::Debug, message, callStack)); }
void InspectorConsoleAgent::consoleCount(ScriptState* state, PassRefPtr<ScriptArguments> arguments) { RefPtr<ScriptCallStack> callStack(createScriptCallStackForConsole()); const ScriptCallFrame& lastCaller = callStack->at(0); // 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(lastCaller.sourceURL() + ':' + String::number(lastCaller.lineNumber())) : String(title + '@'); HashMap<String, unsigned>::iterator it = m_counts.find(identifier); int count; if (it == m_counts.end()) count = 1; else { count = it->value + 1; m_counts.remove(it); } m_counts.add(identifier, count); String message = title + ": " + String::number(count); addMessageToConsole(ConsoleAPIMessageSource, LogMessageType, DebugMessageLevel, message, callStack); }
void InspectorConsoleAgent::count(JSC::ExecState* state, PassRefPtr<ScriptArguments> arguments) { RefPtr<ScriptCallStack> callStack(createScriptCallStackForConsole(state, ScriptCallStack::maxCallStackSizeToCapture)); const ScriptCallFrame& lastCaller = callStack->at(0); // 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 + '@' + lastCaller.sourceURL() + ':' + String::number(lastCaller.lineNumber()); HashMap<String, unsigned>::iterator it = m_counts.find(identifier); int count; if (it == m_counts.end()) count = 1; else { count = it->value + 1; m_counts.remove(it); } m_counts.add(identifier, count); String message; if (title.isEmpty()) message = "<no label>: " + String::number(count); else message = title + ": " + String::number(count); addMessageToConsole(std::make_unique<ConsoleMessage>(MessageSource::ConsoleAPI, MessageType::Log, MessageLevel::Debug, message, callStack)); }
void InspectorInstrumentation::consoleTimeStampImpl(InstrumentingAgents* instrumentingAgents, PassRefPtr<ScriptArguments> arguments) { if (InspectorTimelineAgent* timelineAgent = instrumentingAgents->inspectorTimelineAgent()) { String message; arguments->getFirstArgumentAsString(message); timelineAgent->didTimeStamp(message); } }
void InspectorInstrumentation::consoleMarkTimelineImpl(InspectorAgent* inspectorAgent, PassRefPtr<ScriptArguments> arguments) { if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(inspectorAgent)) { String message; arguments->getFirstArgumentAsString(message); timelineAgent->didMarkTimeline(message); } }
void InspectorConsoleAgent::consoleCount(ScriptState* state, PassRefPtr<ScriptArguments> arguments) { RefPtr<ScriptCallStack> callStack(createScriptCallStackForConsole()); const ScriptCallFrame& lastCaller = callStack->at(0); // 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(lastCaller.sourceURL() + ':' + String::number(lastCaller.lineNumber())) : String(title + '@'); HashCountedSet<String>::AddResult result = m_counts.add(identifier); String message = title + ": " + String::number(result.storedValue->value); addMessageToConsole(ConsoleAPIMessageSource, LogMessageType, DebugMessageLevel, message, callStack); }
void InspectorConsoleAgent::count(PassRefPtr<ScriptArguments> arguments, PassRefPtr<ScriptCallStack> callStack) { const ScriptCallFrame& lastCaller = callStack->at(0); // 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 = makeString(title, '@', lastCaller.sourceURL(), ':', String::number(lastCaller.lineNumber())); HashMap<String, unsigned>::iterator it = m_counts.find(identifier); int count; if (it == m_counts.end()) count = 1; else { count = it->second + 1; m_counts.remove(it); } m_counts.add(identifier, count); String message = makeString(title, ": ", String::number(count)); addMessageToConsole(JSMessageSource, LogMessageType, LogMessageLevel, message, lastCaller.lineNumber(), lastCaller.sourceURL()); }