#pragma once #include #include #include namespace Inspector { class InspectorConsoleAgent; class InspectorDebuggerAgent; class InspectorScriptProfilerAgent; } namespace Zig { using InspectorConsoleAgent = Inspector::InspectorConsoleAgent; using InspectorDebuggerAgent = Inspector::InspectorDebuggerAgent; using InspectorScriptProfilerAgent = Inspector::InspectorScriptProfilerAgent; class ConsoleClient final : public JSC::ConsoleClient { WTF_MAKE_FAST_ALLOCATED; public: ~ConsoleClient() final { } ConsoleClient(void* client) : JSC::ConsoleClient() { m_client = client; } static bool logToSystemConsole(); static void setLogToSystemConsole(bool); void setDebuggerAgent(InspectorDebuggerAgent* agent) { m_debuggerAgent = agent; } void setPersistentScriptProfilerAgent(InspectorScriptProfilerAgent* agent) { m_scriptProfilerAgent = agent; } void* m_client; private: void messageWithTypeAndLevel(MessageType, MessageLevel, JSC::JSGlobalObject*, Ref&&); void count(JSC::JSGlobalObject*, const String& label); void countReset(JSC::JSGlobalObject*, const String& label); void profile(JSC::JSGlobalObject*, const String& title); void profileEnd(JSC::JSGlobalObject*, const String& title); void takeHeapSnapshot(JSC::JSGlobalObject*, const String& title); void time(JSC::JSGlobalObject*, const String& label); void timeLog(JSC::JSGlobalObject*, const String& label, Ref&&); void timeEnd(JSC::JSGlobalObject*, const String& label); void timeStamp(JSC::JSGlobalObject*, Ref&&); void record(JSC::JSGlobalObject*, Ref&&); void recordEnd(JSC::JSGlobalObject*, Ref&&); void screenshot(JSC::JSGlobalObject*, Ref&&); void warnUnimplemented(const String& method); void internalAddMessage(MessageType, MessageLevel, JSC::JSGlobalObject*, Ref&&); void startConsoleProfile(); void stopConsoleProfile(); Inspector::InspectorConsoleAgent* m_consoleAgent; Inspector::InspectorDebuggerAgent* m_debuggerAgent { nullptr }; Inspector::InspectorScriptProfilerAgent* m_scriptProfilerAgent { nullptr }; Vector m_profiles; bool m_profileRestoreBreakpointActiveValue { false }; }; }