/src/serenity/Userland/Libraries/LibWeb/HTML/TextTrack.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #pragma once |
8 | | |
9 | | #include <AK/String.h> |
10 | | #include <LibJS/Forward.h> |
11 | | #include <LibJS/Heap/GCPtr.h> |
12 | | #include <LibWeb/Bindings/TextTrackPrototype.h> |
13 | | #include <LibWeb/DOM/EventTarget.h> |
14 | | #include <LibWeb/Forward.h> |
15 | | #include <LibWeb/WebIDL/ExceptionOr.h> |
16 | | |
17 | | namespace Web::HTML { |
18 | | |
19 | | class TextTrack final : public DOM::EventTarget { |
20 | | WEB_PLATFORM_OBJECT(TextTrack, DOM::EventTarget); |
21 | | JS_DECLARE_ALLOCATOR(TextTrack); |
22 | | |
23 | | public: |
24 | | // https://html.spec.whatwg.org/multipage/media.html#text-track-readiness-state |
25 | | enum class ReadinessState { |
26 | | NotLoaded, |
27 | | Loading, |
28 | | Loaded, |
29 | | FailedToLoad, |
30 | | }; |
31 | | |
32 | | static JS::NonnullGCPtr<TextTrack> create(JS::Realm&); |
33 | | virtual ~TextTrack() override; |
34 | | |
35 | | Bindings::TextTrackKind kind(); |
36 | | void set_kind(Bindings::TextTrackKind); |
37 | | |
38 | | String label(); |
39 | | void set_label(String); |
40 | | |
41 | | String language(); |
42 | | void set_language(String); |
43 | | |
44 | | String id(); |
45 | | void set_id(String); |
46 | | |
47 | | Bindings::TextTrackMode mode(); |
48 | | void set_mode(Bindings::TextTrackMode); |
49 | | |
50 | | void set_oncuechange(WebIDL::CallbackType*); |
51 | | WebIDL::CallbackType* oncuechange(); |
52 | | |
53 | 0 | ReadinessState readiness_state() { return m_readiness_state; } |
54 | 0 | void set_readiness_state(ReadinessState readiness_state) { m_readiness_state = readiness_state; } |
55 | | |
56 | | private: |
57 | | TextTrack(JS::Realm&); |
58 | | |
59 | | virtual void initialize(JS::Realm&) override; |
60 | | |
61 | | Bindings::TextTrackKind m_kind { Bindings::TextTrackKind::Subtitles }; |
62 | | String m_label {}; |
63 | | String m_language {}; |
64 | | |
65 | | String m_id {}; |
66 | | |
67 | | Bindings::TextTrackMode m_mode { Bindings::TextTrackMode::Disabled }; |
68 | | |
69 | | ReadinessState m_readiness_state { ReadinessState::NotLoaded }; |
70 | | }; |
71 | | |
72 | | Bindings::TextTrackKind text_track_kind_from_string(String); |
73 | | |
74 | | } |