/* * Copyright (c) 2024, Mohamed amine Bounya * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::Fetch::Infrastructure { // https://fetch.spec.whatwg.org/#concept-fetch-record class FetchRecord : public JS::Cell { GC_CELL(FetchRecord, JS::Cell); GC_DECLARE_ALLOCATOR(FetchRecord); public: [[nodiscard]] static GC::Ref create(JS::VM&, GC::Ref); [[nodiscard]] static GC::Ref create(JS::VM&, GC::Ref, GC::Ptr); [[nodiscard]] GC::Ref request() const { return m_request; } void set_request(GC::Ref request) { m_request = request; } [[nodiscard]] GC::Ptr fetch_controller() const { return m_fetch_controller; } void set_fetch_controller(GC::Ptr fetch_controller) { m_fetch_controller = fetch_controller; } private: explicit FetchRecord(GC::Ref); FetchRecord(GC::Ref, GC::Ptr); virtual void visit_edges(Visitor&) override; // https://fetch.spec.whatwg.org/#concept-request // A fetch record has an associated request (a request) GC::Ref m_request; // https://fetch.spec.whatwg.org/#fetch-controller // A fetch record has an associated controller (a fetch controller or null) GC::Ptr m_fetch_controller { nullptr }; }; }