| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <AK/String.h>
 | 
					
						
							| 
									
										
										
										
											2024-11-15 04:01:23 +13:00
										 |  |  | #include <LibGC/Ptr.h>
 | 
					
						
							| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  | #include <LibJS/Forward.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Bindings/TextTrackPrototype.h>
 | 
					
						
							|  |  |  | #include <LibWeb/DOM/EventTarget.h>
 | 
					
						
							|  |  |  | #include <LibWeb/Forward.h>
 | 
					
						
							|  |  |  | #include <LibWeb/WebIDL/ExceptionOr.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace Web::HTML { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class TextTrack final : public DOM::EventTarget { | 
					
						
							|  |  |  |     WEB_PLATFORM_OBJECT(TextTrack, DOM::EventTarget); | 
					
						
							| 
									
										
										
										
											2024-11-15 04:01:23 +13:00
										 |  |  |     GC_DECLARE_ALLOCATOR(TextTrack); | 
					
						
							| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2024-07-25 20:21:57 +01:00
										 |  |  |     // https://html.spec.whatwg.org/multipage/media.html#text-track-readiness-state
 | 
					
						
							|  |  |  |     enum class ReadinessState { | 
					
						
							|  |  |  |         NotLoaded, | 
					
						
							|  |  |  |         Loading, | 
					
						
							|  |  |  |         Loaded, | 
					
						
							|  |  |  |         FailedToLoad, | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-11-15 04:01:23 +13:00
										 |  |  |     static GC::Ref<TextTrack> create(JS::Realm&); | 
					
						
							| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  |     virtual ~TextTrack() override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Bindings::TextTrackKind kind(); | 
					
						
							|  |  |  |     void set_kind(Bindings::TextTrackKind); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     String label(); | 
					
						
							|  |  |  |     void set_label(String); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     String language(); | 
					
						
							|  |  |  |     void set_language(String); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-05 19:46:06 +01:00
										 |  |  |     String id(); | 
					
						
							|  |  |  |     void set_id(String); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-25 20:21:06 +01:00
										 |  |  |     Bindings::TextTrackMode mode(); | 
					
						
							|  |  |  |     void set_mode(Bindings::TextTrackMode); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  |     void set_oncuechange(WebIDL::CallbackType*); | 
					
						
							|  |  |  |     WebIDL::CallbackType* oncuechange(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-07-25 20:21:57 +01:00
										 |  |  |     ReadinessState readiness_state() { return m_readiness_state; } | 
					
						
							|  |  |  |     void set_readiness_state(ReadinessState readiness_state) { m_readiness_state = readiness_state; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  | private: | 
					
						
							|  |  |  |     TextTrack(JS::Realm&); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     virtual void initialize(JS::Realm&) override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Bindings::TextTrackKind m_kind { Bindings::TextTrackKind::Subtitles }; | 
					
						
							|  |  |  |     String m_label {}; | 
					
						
							|  |  |  |     String m_language {}; | 
					
						
							| 
									
										
										
										
											2024-07-05 19:46:06 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     String m_id {}; | 
					
						
							| 
									
										
										
										
											2024-07-25 20:21:06 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     Bindings::TextTrackMode m_mode { Bindings::TextTrackMode::Disabled }; | 
					
						
							| 
									
										
										
										
											2024-07-25 20:21:57 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     ReadinessState m_readiness_state { ReadinessState::NotLoaded }; | 
					
						
							| 
									
										
										
										
											2024-06-09 10:32:20 +01:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Bindings::TextTrackKind text_track_kind_from_string(String); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |