/* * Copyright (c) 2021, Brandon Scott * Copyright (c) 2020, Hunter Salyer * Copyright (c) 2021, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include "ClientConnection.h" #include #include #include #include namespace WebContent { class WebContentConsoleClient final : public JS::ConsoleClient { public: WebContentConsoleClient(JS::Console&, WeakPtr, ClientConnection&); void handle_input(String const& js_source); void send_messages(i32 start_index); private: virtual JS::Value clear() override; virtual JS::Value trace() override; virtual JS::Value assert_() override; virtual JS::ThrowCompletionOr printer(JS::Console::LogLevel log_level, Vector&) override; ClientConnection& m_client; WeakPtr m_interpreter; JS::Handle m_console_global_object; void clear_output(); void print_html(String const& line); struct ConsoleOutput { enum class Type { HTML, Clear }; Type type; String html; }; Vector m_message_log; }; }