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);