diff --git a/Tests/LibWeb/Text/expected/HTML/HTMLTrackElement-readyState-attribute.txt b/Tests/LibWeb/Text/expected/HTML/HTMLTrackElement-readyState-attribute.txt new file mode 100644 index 00000000000..d7b8b6d41d9 --- /dev/null +++ b/Tests/LibWeb/Text/expected/HTML/HTMLTrackElement-readyState-attribute.txt @@ -0,0 +1 @@ +track.readyState == NONE: true diff --git a/Tests/LibWeb/Text/input/HTML/HTMLTrackElement-readyState-attribute.html b/Tests/LibWeb/Text/input/HTML/HTMLTrackElement-readyState-attribute.html new file mode 100644 index 00000000000..6d49f5aa350 --- /dev/null +++ b/Tests/LibWeb/Text/input/HTML/HTMLTrackElement-readyState-attribute.html @@ -0,0 +1,8 @@ + + + diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp index f2ed55bfae7..fef19156005 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.cpp @@ -56,4 +56,30 @@ void HTMLTrackElement::attribute_changed(FlyString const& name, Optional } } +// https://html.spec.whatwg.org/multipage/media.html#dom-track-readystate +WebIDL::UnsignedShort HTMLTrackElement::ready_state() +{ + // The readyState attribute must return the numeric value corresponding to the text track readiness state of the track element's text track, as defined by the following list: + switch (m_track->readiness_state()) { + case TextTrack::ReadinessState::NotLoaded: + // NONE (numeric value 0) + // The text track not loaded state. + return 0; + case TextTrack::ReadinessState::Loading: + // LOADING (numeric value 1) + // The text track loading state. + return 1; + case TextTrack::ReadinessState::Loaded: + // LOADED (numeric value 2) + // The text track loaded state. + return 2; + case TextTrack::ReadinessState::FailedToLoad: + // ERROR (numeric value 3) + // The text track failed to load state. + return 3; + } + + VERIFY_NOT_REACHED(); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.h b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.h index ae501e0b68d..67e482127e0 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.h @@ -19,6 +19,8 @@ class HTMLTrackElement final : public HTMLElement { public: virtual ~HTMLTrackElement() override; + WebIDL::UnsignedShort ready_state(); + JS::Handle track() { return m_track; } private: diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.idl b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.idl index d59a67330df..bd4533df98e 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.idl +++ b/Userland/Libraries/LibWeb/HTML/HTMLTrackElement.idl @@ -26,7 +26,7 @@ interface HTMLTrackElement : HTMLElement { const unsigned short LOADING = 1; const unsigned short LOADED = 2; const unsigned short ERROR = 3; - [FIXME] readonly attribute unsigned short readyState; + readonly attribute unsigned short readyState; readonly attribute TextTrack track;