/* * Copyright (c) 2024, Jelle Raaijmakers * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::MediaSourceExtensions { // https://w3c.github.io/media-source/#dom-sourcebufferlist class SourceBufferList : public DOM::EventTarget { WEB_PLATFORM_OBJECT(SourceBufferList, DOM::EventTarget); GC_DECLARE_ALLOCATOR(SourceBufferList); public: void append(GC::Ref); size_t length() const; GC::Ref const& item(u32 index) const; void set_onaddsourcebuffer(GC::Ptr); GC::Ptr onaddsourcebuffer(); void set_onremovesourcebuffer(GC::Ptr); GC::Ptr onremovesourcebuffer(); bool contains(SourceBuffer const&) const; private: SourceBufferList(JS::Realm&); virtual ~SourceBufferList() override; virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; Vector> m_buffers; }; }