/* * Copyright (c) 2021, Brandon Scott * Copyright (c) 2020, Hunter Salyer * Copyright (c) 2021-2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include namespace WebContent { class WebContentConsoleClient : public JS::ConsoleClient , public Weakable { GC_CELL(WebContentConsoleClient, JS::ConsoleClient); GC_DECLARE_ALLOCATOR(WebContentConsoleClient); public: virtual ~WebContentConsoleClient() override; void handle_input(StringView js_source); virtual void handle_result(JS::Value) = 0; virtual void send_messages(i32 start_index) = 0; protected: WebContentConsoleClient(JS::Realm&, JS::Console&, PageClient&, ConsoleGlobalEnvironmentExtensions&); virtual void visit_edges(JS::Cell::Visitor&) override; GC::Ref m_realm; GC::Ref m_client; GC::Ref m_console_global_environment_extensions; }; }