/* * 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; void request_file(Web::FileRequest); PageHost& page_host() { return *m_page_host; } PageHost const& page_host() const { return *m_page_host; } private: explicit ConnectionFromClient(NonnullOwnPtr); Web::Page& page(); Web::Page const& page() const; virtual void start_dedicated_worker(URL const& url, String const&, String const&, String const&, Web::HTML::TransferDataHolder const&, Web::HTML::SerializedEnvironmentSettingsObject const&) override; virtual void handle_file_return(i32 error, Optional const& file, i32 request_id) override; JS::Handle 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; }; }