/* * 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 { JS_CELL(WorkerAgent, JS::Cell); JS_DECLARE_ALLOCATOR(WorkerAgent); WorkerAgent(URL::URL url, WorkerOptions const& options, JS::GCPtr outside_port, JS::NonnullGCPtr outside_settings); private: virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; WorkerOptions m_worker_options; URL::URL m_url; JS::GCPtr m_message_port; JS::GCPtr m_outside_port; JS::NonnullGCPtr m_outside_settings; RefPtr m_worker_ipc; }; }