/* * Copyright (c) 2024, stelar7 * Copyright (c) 2025, Luke Wilde * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::IndexedDB { class RequestList final : public AK::Vector> { AK_MAKE_NONMOVABLE(RequestList); AK_MAKE_NONCOPYABLE(RequestList); public: RequestList() = default; void all_requests_processed(GC::Heap&, GC::Ref> on_complete); void all_previous_requests_processed(GC::Heap&, GC::Ref const& request, GC::Ref> on_complete); private: struct PendingRequestProcess final : public GC::Cell { GC_CELL(PendingRequestProcess, GC::Cell); GC_DECLARE_ALLOCATOR(PendingRequestProcess); virtual void visit_edges(Cell::Visitor&) override; void add_request_to_observe(GC::Ref); Vector> requests_waiting_on; GC::Ptr> after_all; }; Vector> m_pending_request_queue; }; }