diff --git a/Libraries/LibWeb/HTML/AudioTrack.cpp b/Libraries/LibWeb/HTML/AudioTrack.cpp index 4edbff5ecc6..02d1c7332de 100644 --- a/Libraries/LibWeb/HTML/AudioTrack.cpp +++ b/Libraries/LibWeb/HTML/AudioTrack.cpp @@ -60,12 +60,12 @@ void AudioTrack::initialize(JS::Realm& realm) m_id = String::number(id); } -void AudioTrack::play(Badge) +void AudioTrack::play() { m_audio_plugin->resume_playback(); } -void AudioTrack::pause(Badge) +void AudioTrack::pause() { m_audio_plugin->pause_playback(); } diff --git a/Libraries/LibWeb/HTML/AudioTrack.h b/Libraries/LibWeb/HTML/AudioTrack.h index 1862bd76037..48f9333f996 100644 --- a/Libraries/LibWeb/HTML/AudioTrack.h +++ b/Libraries/LibWeb/HTML/AudioTrack.h @@ -22,8 +22,8 @@ public: void set_audio_track_list(Badge, GC::Ptr audio_track_list) { m_audio_track_list = audio_track_list; } - void play(Badge); - void pause(Badge); + void play(); + void pause(); AK::Duration duration(); void seek(double, MediaSeekMode); diff --git a/Libraries/LibWeb/HTML/HTMLAudioElement.cpp b/Libraries/LibWeb/HTML/HTMLAudioElement.cpp index 9f0bf03aa1b..2801234542d 100644 --- a/Libraries/LibWeb/HTML/HTMLAudioElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLAudioElement.cpp @@ -55,14 +55,14 @@ Layout::AudioBox const* HTMLAudioElement::layout_node() const void HTMLAudioElement::on_playing() { audio_tracks()->for_each_enabled_track([](auto& audio_track) { - audio_track.play({}); + audio_track.play(); }); } void HTMLAudioElement::on_paused() { audio_tracks()->for_each_enabled_track([](auto& audio_track) { - audio_track.pause({}); + audio_track.pause(); }); } diff --git a/Libraries/LibWeb/HTML/HTMLVideoElement.cpp b/Libraries/LibWeb/HTML/HTMLVideoElement.cpp index 557b1218e1a..b9d2521fd88 100644 --- a/Libraries/LibWeb/HTML/HTMLVideoElement.cpp +++ b/Libraries/LibWeb/HTML/HTMLVideoElement.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -130,18 +131,37 @@ void HTMLVideoElement::on_playing() { if (m_video_track) m_video_track->play_video({}); + + audio_tracks()->for_each_enabled_track([](auto& audio_track) { + audio_track.play(); + }); } void HTMLVideoElement::on_paused() { if (m_video_track) m_video_track->pause_video({}); + + audio_tracks()->for_each_enabled_track([](auto& audio_track) { + audio_track.pause(); + }); } void HTMLVideoElement::on_seek(double position, MediaSeekMode seek_mode) { if (m_video_track) m_video_track->seek(AK::Duration::from_milliseconds(position * 1000.0), seek_mode); + + audio_tracks()->for_each_enabled_track([&](auto& audio_track) { + audio_track.seek(position, seek_mode); + }); +} + +void HTMLVideoElement::on_volume_change() +{ + audio_tracks()->for_each_enabled_track([&](auto& audio_track) { + audio_track.update_volume(); + }); } // https://html.spec.whatwg.org/multipage/media.html#attr-video-poster diff --git a/Libraries/LibWeb/HTML/HTMLVideoElement.h b/Libraries/LibWeb/HTML/HTMLVideoElement.h index dd2ade6efa1..58f62bf29bc 100644 --- a/Libraries/LibWeb/HTML/HTMLVideoElement.h +++ b/Libraries/LibWeb/HTML/HTMLVideoElement.h @@ -66,6 +66,7 @@ private: virtual void on_playing() override; virtual void on_paused() override; virtual void on_seek(double, MediaSeekMode) override; + virtual void on_volume_change() override; WebIDL::ExceptionOr determine_element_poster_frame(Optional const& poster);