/* * Copyright (c) 2023, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::HTML { struct WorkerOptions { Bindings::WorkerType type { Bindings::WorkerType::Classic }; Bindings::RequestCredentials credentials { Bindings::RequestCredentials::SameOrigin }; String name { String {} }; }; class WorkerAgent : public JS::Cell { GC_CELL(WorkerAgent, JS::Cell); GC_DECLARE_ALLOCATOR(WorkerAgent); WorkerAgent(URL::URL url, WorkerOptions const& options, GC::Ptr outside_port, GC::Ref outside_settings); private: virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; WorkerOptions m_worker_options; URL::URL m_url; GC::Ptr m_message_port; GC::Ptr m_outside_port; GC::Ref m_outside_settings; RefPtr m_worker_ipc; }; }