TextTrack.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. * Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/String.h>
  8. #include <LibGC/Ptr.h>
  9. #include <LibJS/Forward.h>
  10. #include <LibWeb/Bindings/TextTrackPrototype.h>
  11. #include <LibWeb/DOM/EventTarget.h>
  12. #include <LibWeb/Forward.h>
  13. #include <LibWeb/WebIDL/ExceptionOr.h>
  14. namespace Web::HTML {
  15. class TextTrack final : public DOM::EventTarget {
  16. WEB_PLATFORM_OBJECT(TextTrack, DOM::EventTarget);
  17. GC_DECLARE_ALLOCATOR(TextTrack);
  18. public:
  19. // https://html.spec.whatwg.org/multipage/media.html#text-track-readiness-state
  20. enum class ReadinessState {
  21. NotLoaded,
  22. Loading,
  23. Loaded,
  24. FailedToLoad,
  25. };
  26. static GC::Ref<TextTrack> create(JS::Realm&);
  27. virtual ~TextTrack() override;
  28. Bindings::TextTrackKind kind();
  29. void set_kind(Bindings::TextTrackKind);
  30. String label();
  31. void set_label(String);
  32. String language();
  33. void set_language(String);
  34. String id();
  35. void set_id(String);
  36. Bindings::TextTrackMode mode();
  37. void set_mode(Bindings::TextTrackMode);
  38. void set_oncuechange(WebIDL::CallbackType*);
  39. WebIDL::CallbackType* oncuechange();
  40. ReadinessState readiness_state() { return m_readiness_state; }
  41. void set_readiness_state(ReadinessState readiness_state) { m_readiness_state = readiness_state; }
  42. private:
  43. TextTrack(JS::Realm&);
  44. virtual void initialize(JS::Realm&) override;
  45. Bindings::TextTrackKind m_kind { Bindings::TextTrackKind::Subtitles };
  46. String m_label {};
  47. String m_language {};
  48. String m_id {};
  49. Bindings::TextTrackMode m_mode { Bindings::TextTrackMode::Disabled };
  50. ReadinessState m_readiness_state { ReadinessState::NotLoaded };
  51. };
  52. Bindings::TextTrackKind text_track_kind_from_string(String);
  53. }