/* * Copyright (c) 2026, The Ladybird developers * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Web::MediaCapture { // https://w3c.github.io/mediacapture-main/#dictdef-mediastreamtrackeventinit struct MediaStreamTrackEventInit final : public DOM::EventInit { GC::Ptr track; }; // https://w3c.github.io/mediacapture-main/#mediastreamtrackevent class MediaStreamTrackEvent final : public DOM::Event { WEB_PLATFORM_OBJECT(MediaStreamTrackEvent, DOM::Event); GC_DECLARE_ALLOCATOR(MediaStreamTrackEvent); public: [[nodiscard]] static GC::Ref create(JS::Realm&, FlyString const& event_name, MediaStreamTrackEventInit const& event_init); [[nodiscard]] static GC::Ref construct_impl(JS::Realm&, FlyString const& event_name, MediaStreamTrackEventInit const& event_init); virtual ~MediaStreamTrackEvent() override; GC::Ref track() const { return m_track; } private: MediaStreamTrackEvent(JS::Realm&, FlyString const& event_name, MediaStreamTrackEventInit const& event_init); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; GC::Ref m_track; }; }