diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
index a6305928e23..a5c7a2a556f 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.cpp
@@ -30,6 +30,8 @@
#include
#include
#include
+#include
+#include
#include
#include
#include
@@ -56,6 +58,7 @@ void HTMLMediaElement::initialize(JS::Realm& realm)
m_audio_tracks = realm.heap().allocate(realm, realm);
m_video_tracks = realm.heap().allocate(realm, realm);
+ m_text_tracks = realm.heap().allocate(realm, realm);
m_document_observer = realm.heap().allocate(realm, realm, document());
// https://html.spec.whatwg.org/multipage/media.html#playing-the-media-resource:media-element-82
@@ -88,6 +91,7 @@ void HTMLMediaElement::visit_edges(Cell::Visitor& visitor)
visitor.visit(m_error);
visitor.visit(m_audio_tracks);
visitor.visit(m_video_tracks);
+ visitor.visit(m_text_tracks);
visitor.visit(m_document_observer);
visitor.visit(m_source_element_selector);
visitor.visit(m_fetch_controller);
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
index e707757bc8e..353d57beff0 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.h
@@ -105,6 +105,7 @@ public:
JS::NonnullGCPtr audio_tracks() const { return *m_audio_tracks; }
JS::NonnullGCPtr video_tracks() const { return *m_video_tracks; }
+ JS::NonnullGCPtr text_tracks() const { return *m_text_tracks; }
WebIDL::ExceptionOr handle_keydown(Badge, UIEvents::KeyCode);
@@ -260,6 +261,9 @@ private:
// https://html.spec.whatwg.org/multipage/media.html#dom-media-videotracks
JS::GCPtr m_video_tracks;
+ // https://html.spec.whatwg.org/multipage/media.html#dom-media-texttracks
+ JS::GCPtr m_text_tracks;
+
// https://html.spec.whatwg.org/multipage/media.html#media-data
ByteBuffer m_media_data;
diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
index 7ea2b195a91..9c7db3a23c0 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
+++ b/Userland/Libraries/LibWeb/HTML/HTMLMediaElement.idl
@@ -1,6 +1,7 @@
#import
#import
#import
+#import
#import
#import
#import
@@ -68,7 +69,7 @@ interface HTMLMediaElement : HTMLElement {
// tracks
[SameObject] readonly attribute AudioTrackList audioTracks;
[SameObject] readonly attribute VideoTrackList videoTracks;
- [FIXME, SameObject] readonly attribute TextTrackList textTracks;
+ [SameObject] readonly attribute TextTrackList textTracks;
[FIXME] TextTrack addTextTrack(TextTrackKind kind, optional DOMString label = "", optional DOMString language = "");
};