Files
ladybird/Libraries/LibWeb/HTML/TextTrack.h
Shannon Booth fd44da6829 LibWeb/Bindings: Emit one bindings header and cpp per IDL
Previously, the LibWeb bindings generator would output multiple per
interface files like Prototype/Constructor/Namespace/GlobalMixin
depending on the contents of that IDL file.

This complicates the build system as it means that it does not know
what files will be generated without knowledge of the contents of that
IDL file.

Instead, for each IDL file only generate a single Bindings/<IDLFile>.h
and Bindings/<IDLFile>.cpp.
2026-04-21 07:36:13 +02:00

81 lines
2.0 KiB
C++

/*
* Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/String.h>
#include <LibGC/Ptr.h>
#include <LibJS/Forward.h>
#include <LibWeb/Bindings/TextTrack.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);
GC_DECLARE_ALLOCATOR(TextTrack);
public:
// https://html.spec.whatwg.org/multipage/media.html#text-track-readiness-state
enum class ReadinessState {
NotLoaded,
Loading,
Loaded,
FailedToLoad,
};
static GC::Ref<TextTrack> create(JS::Realm&);
virtual ~TextTrack() override;
Bindings::TextTrackKind kind();
void set_kind(Bindings::TextTrackKind);
String label();
void set_label(String);
String language();
void set_language(String);
String id();
void set_id(String);
Bindings::TextTrackMode mode();
void set_mode(Bindings::TextTrackMode);
void set_oncuechange(WebIDL::CallbackType*);
WebIDL::CallbackType* oncuechange();
ReadinessState readiness_state() { return m_readiness_state; }
void set_readiness_state(ReadinessState readiness_state);
void register_observer(Badge<TextTrackObserver>, TextTrackObserver&);
void unregister_observer(Badge<TextTrackObserver>, TextTrackObserver&);
private:
TextTrack(JS::Realm&);
virtual void initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
Bindings::TextTrackKind m_kind { Bindings::TextTrackKind::Subtitles };
String m_label {};
String m_language {};
String m_id {};
Bindings::TextTrackMode m_mode { Bindings::TextTrackMode::Disabled };
ReadinessState m_readiness_state { ReadinessState::NotLoaded };
HashTable<GC::Ref<TextTrackObserver>> m_observers;
};
Bindings::TextTrackKind text_track_kind_from_string(String);
}