mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-12-07 21:59:54 +00:00
With this commit, all PlaybackManager can do is autoplay a file from start to finish, with no pausing or seeking functionality. All audio playback functionality has been removed from HTMLMediaElement and HTMLAudioElement in anticipation of PlaybackManager taking that over, for both audio-only and audio/video.
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
/*
|
|
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Badge.h>
|
|
#include <AK/String.h>
|
|
#include <LibGC/RootVector.h>
|
|
#include <LibWeb/DOM/EventTarget.h>
|
|
#include <LibWeb/HTML/VideoTrack.h>
|
|
|
|
namespace Web::HTML {
|
|
|
|
class VideoTrackList final : public DOM::EventTarget {
|
|
WEB_PLATFORM_OBJECT(VideoTrackList, DOM::EventTarget);
|
|
GC_DECLARE_ALLOCATOR(VideoTrackList);
|
|
|
|
public:
|
|
void add_track(Badge<HTMLMediaElement>, GC::Ref<VideoTrack>);
|
|
void remove_all_tracks(Badge<HTMLMediaElement>);
|
|
|
|
Span<GC::Ref<VideoTrack>> video_tracks() { return m_video_tracks; }
|
|
|
|
// https://html.spec.whatwg.org/multipage/media.html#dom-videotracklist-length
|
|
size_t length() const { return m_video_tracks.size(); }
|
|
|
|
GC::Ptr<VideoTrack> get_track_by_id(StringView id) const;
|
|
i32 selected_index() const;
|
|
|
|
template<typename Callback>
|
|
void for_each_track(Callback&& callback)
|
|
{
|
|
for (auto& video_track : m_video_tracks) {
|
|
auto iteration_decision = callback(*video_track);
|
|
if (iteration_decision == IterationDecision::Break)
|
|
break;
|
|
}
|
|
}
|
|
|
|
void set_onchange(WebIDL::CallbackType*);
|
|
WebIDL::CallbackType* onchange();
|
|
|
|
void set_onaddtrack(WebIDL::CallbackType*);
|
|
WebIDL::CallbackType* onaddtrack();
|
|
|
|
void set_onremovetrack(WebIDL::CallbackType*);
|
|
WebIDL::CallbackType* onremovetrack();
|
|
|
|
private:
|
|
explicit VideoTrackList(JS::Realm&);
|
|
|
|
virtual void visit_edges(Visitor&) override;
|
|
|
|
virtual void initialize(JS::Realm&) override;
|
|
virtual JS::ThrowCompletionOr<Optional<JS::PropertyDescriptor>> internal_get_own_property(JS::PropertyKey const& property_name) const override;
|
|
|
|
Vector<GC::Ref<VideoTrack>> m_video_tracks;
|
|
};
|
|
|
|
}
|