1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 13:18:13 +00:00

LibWeb: Support TrackEvent instances with an AudioTrack track type

This commit is contained in:
Timothy Flynn 2023-06-13 10:55:03 -04:00 committed by Andreas Kling
parent 11af5119b6
commit 6520a9a849
5 changed files with 33 additions and 16 deletions

View file

@ -10,19 +10,19 @@
namespace Web::HTML {
WebIDL::ExceptionOr<JS::NonnullGCPtr<TrackEvent>> TrackEvent::create(JS::Realm& realm, FlyString const& event_name, TrackEventInit const& event_init)
WebIDL::ExceptionOr<JS::NonnullGCPtr<TrackEvent>> TrackEvent::create(JS::Realm& realm, FlyString const& event_name, TrackEventInit event_init)
{
return MUST_OR_THROW_OOM(realm.heap().allocate<TrackEvent>(realm, realm, event_name, event_init));
return MUST_OR_THROW_OOM(realm.heap().allocate<TrackEvent>(realm, realm, event_name, move(event_init)));
}
WebIDL::ExceptionOr<JS::NonnullGCPtr<TrackEvent>> TrackEvent::construct_impl(JS::Realm& realm, FlyString const& event_name, TrackEventInit const& event_init)
WebIDL::ExceptionOr<JS::NonnullGCPtr<TrackEvent>> TrackEvent::construct_impl(JS::Realm& realm, FlyString const& event_name, TrackEventInit event_init)
{
return create(realm, event_name, event_init);
return create(realm, event_name, move(event_init));
}
TrackEvent::TrackEvent(JS::Realm& realm, FlyString const& event_name, TrackEventInit const& event_init)
TrackEvent::TrackEvent(JS::Realm& realm, FlyString const& event_name, TrackEventInit event_init)
: DOM::Event(realm, event_name, event_init)
, m_track(event_init.track)
, m_track(move(event_init.track))
{
}
@ -34,4 +34,15 @@ JS::ThrowCompletionOr<void> TrackEvent::initialize(JS::Realm& realm)
return {};
}
Variant<Empty, JS::Handle<VideoTrack>, JS::Handle<AudioTrack>> TrackEvent::track() const
{
// FIXME: This is a bit awkward. When creating a nullable union, our IDL generator creates a type of
// Optional<Variant<...>>, using an empty Optional to represent null. But when retrieving the
// attribute, it expects a type of Variant<Empty, ...>, using Empty to represent null.
if (!m_track.has_value())
return Empty {};
return *m_track;
}
}