/* * Copyright (c) 2023, Tim Flynn * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Web::HTML { class AudioTrack final : public Bindings::PlatformObject { WEB_PLATFORM_OBJECT(AudioTrack, Bindings::PlatformObject); GC_DECLARE_ALLOCATOR(AudioTrack); public: virtual ~AudioTrack() override; void set_audio_track_list(Badge, GC::Ptr audio_track_list) { m_audio_track_list = audio_track_list; } void play(Badge); void pause(Badge); AK::Duration duration(); void seek(double, MediaSeekMode); void update_volume(); String const& id() const { return m_id; } String const& kind() const { return m_kind; } String const& label() const { return m_label; } String const& language() const { return m_language; } bool enabled() const { return m_enabled; } void set_enabled(bool enabled); private: AudioTrack(JS::Realm&, GC::Ref, NonnullRefPtr); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; // https://html.spec.whatwg.org/multipage/media.html#dom-audiotrack-id String m_id; // https://html.spec.whatwg.org/multipage/media.html#dom-audiotrack-kind String m_kind; // https://html.spec.whatwg.org/multipage/media.html#dom-audiotrack-label String m_label; // https://html.spec.whatwg.org/multipage/media.html#dom-audiotrack-language String m_language; // https://html.spec.whatwg.org/multipage/media.html#dom-audiotrack-enabled bool m_enabled { false }; GC::Ref m_media_element; GC::Ptr m_audio_track_list; NonnullOwnPtr m_audio_plugin; }; }