mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-26 01:35:08 +02:00
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.
81 lines
2.0 KiB
C++
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);
|
|
|
|
}
|