/* * Copyright (c) 2023, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace WebWorker { class ConnectionFromClient final : public IPC::ConnectionFromClient { C_OBJECT(ConnectionFromClient); public: virtual ~ConnectionFromClient() override; virtual void die() override; virtual void close_worker() override; void request_file(Web::FileRequest); PageHost& page_host() { return *m_page_host; } PageHost const& page_host() const { return *m_page_host; } private: explicit ConnectionFromClient(IPC::Transport); Web::Page& page(); Web::Page const& page() const; virtual void start_dedicated_worker(URL::URL const& url, Web::Bindings::WorkerType const& type, Web::Bindings::RequestCredentials const& credentials, String const& name, Web::HTML::TransferDataHolder const&, Web::HTML::SerializedEnvironmentSettingsObject const&) override; virtual void handle_file_return(i32 error, Optional const& file, i32 request_id) override; GC::Root m_page_host; // FIXME: Route console messages to the Browser UI using a ConsoleClient HashMap m_requested_files {}; int last_id { 0 }; RefPtr m_worker_host; }; }