diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp
index c140d77a3f..64af6ffe38 100644
--- a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp
+++ b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp
@@ -48,6 +48,12 @@ void HTMLTrackElement::attribute_changed(FlyString const& name, Optional
} else if (name.equals_ignoring_ascii_case("srclang"sv)) {
m_track->set_language(value.value_or({}));
}
+
+ // https://html.spec.whatwg.org/multipage/media.html#dom-texttrack-id
+ // For tracks that correspond to track elements, the track's identifier is the value of the element's id attribute, if any.
+ if (name.equals_ignoring_ascii_case("id"sv)) {
+ m_track->set_id(value.value_or({}));
+ }
}
}
diff --git a/Userland/Libraries/LibWeb/HTML/TextTrack.cpp b/Userland/Libraries/LibWeb/HTML/TextTrack.cpp
index b0a060b97b..7e53d03622 100644
--- a/Userland/Libraries/LibWeb/HTML/TextTrack.cpp
+++ b/Userland/Libraries/LibWeb/HTML/TextTrack.cpp
@@ -64,6 +64,17 @@ void TextTrack::set_language(String language)
m_language = language;
}
+// https://html.spec.whatwg.org/multipage/media.html#dom-texttrack-id
+String TextTrack::id()
+{
+ return m_id;
+}
+
+void TextTrack::set_id(String id)
+{
+ m_id = id;
+}
+
// https://html.spec.whatwg.org/multipage/media.html#handler-texttrack-oncuechange
void TextTrack::set_oncuechange(WebIDL::CallbackType* event_handler)
{
diff --git a/Userland/Libraries/LibWeb/HTML/TextTrack.h b/Userland/Libraries/LibWeb/HTML/TextTrack.h
index ecd54ce00f..cfb703ccfe 100644
--- a/Userland/Libraries/LibWeb/HTML/TextTrack.h
+++ b/Userland/Libraries/LibWeb/HTML/TextTrack.h
@@ -33,6 +33,9 @@ public:
String language();
void set_language(String);
+ String id();
+ void set_id(String);
+
void set_oncuechange(WebIDL::CallbackType*);
WebIDL::CallbackType* oncuechange();
@@ -44,6 +47,8 @@ private:
Bindings::TextTrackKind m_kind { Bindings::TextTrackKind::Subtitles };
String m_label {};
String m_language {};
+
+ String m_id {};
};
Bindings::TextTrackKind text_track_kind_from_string(String);
diff --git a/Userland/Libraries/LibWeb/HTML/TextTrack.idl b/Userland/Libraries/LibWeb/HTML/TextTrack.idl
index 0b372f2a5c..e8d81f720b 100644
--- a/Userland/Libraries/LibWeb/HTML/TextTrack.idl
+++ b/Userland/Libraries/LibWeb/HTML/TextTrack.idl
@@ -13,7 +13,7 @@ interface TextTrack : EventTarget {
readonly attribute DOMString label;
readonly attribute DOMString language;
- [FIXME] readonly attribute DOMString id;
+ readonly attribute DOMString id;
[FIXME] readonly attribute DOMString inBandMetadataTrackDispatchType;
[FIXME] attribute TextTrackMode mode;