SourceBuffer.cpp 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. /*
  2. * Copyright (c) 2024, Jelle Raaijmakers <jelle@ladybird.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibWeb/Bindings/Intrinsics.h>
  7. #include <LibWeb/Bindings/SourceBufferPrototype.h>
  8. #include <LibWeb/MediaSourceExtensions/EventNames.h>
  9. #include <LibWeb/MediaSourceExtensions/SourceBuffer.h>
  10. namespace Web::MediaSourceExtensions {
  11. GC_DEFINE_ALLOCATOR(SourceBuffer);
  12. SourceBuffer::SourceBuffer(JS::Realm& realm)
  13. : DOM::EventTarget(realm)
  14. {
  15. }
  16. SourceBuffer::~SourceBuffer() = default;
  17. void SourceBuffer::initialize(JS::Realm& realm)
  18. {
  19. Base::initialize(realm);
  20. WEB_SET_PROTOTYPE_FOR_INTERFACE(SourceBuffer);
  21. }
  22. // https://w3c.github.io/media-source/#dom-sourcebuffer-onupdatestart
  23. void SourceBuffer::set_onupdatestart(GC::Ptr<WebIDL::CallbackType> event_handler)
  24. {
  25. set_event_handler_attribute(EventNames::updatestart, event_handler);
  26. }
  27. // https://w3c.github.io/media-source/#dom-sourcebuffer-onupdatestart
  28. GC::Ptr<WebIDL::CallbackType> SourceBuffer::onupdatestart()
  29. {
  30. return event_handler_attribute(EventNames::updatestart);
  31. }
  32. // https://w3c.github.io/media-source/#dom-sourcebuffer-onupdate
  33. void SourceBuffer::set_onupdate(GC::Ptr<WebIDL::CallbackType> event_handler)
  34. {
  35. set_event_handler_attribute(EventNames::update, event_handler);
  36. }
  37. // https://w3c.github.io/media-source/#dom-sourcebuffer-onupdate
  38. GC::Ptr<WebIDL::CallbackType> SourceBuffer::onupdate()
  39. {
  40. return event_handler_attribute(EventNames::update);
  41. }
  42. // https://w3c.github.io/media-source/#dom-sourcebuffer-onupdateend
  43. void SourceBuffer::set_onupdateend(GC::Ptr<WebIDL::CallbackType> event_handler)
  44. {
  45. set_event_handler_attribute(EventNames::updateend, event_handler);
  46. }
  47. // https://w3c.github.io/media-source/#dom-sourcebuffer-onupdateend
  48. GC::Ptr<WebIDL::CallbackType> SourceBuffer::onupdateend()
  49. {
  50. return event_handler_attribute(EventNames::updateend);
  51. }
  52. // https://w3c.github.io/media-source/#dom-sourcebuffer-onerror
  53. void SourceBuffer::set_onerror(GC::Ptr<WebIDL::CallbackType> event_handler)
  54. {
  55. set_event_handler_attribute(EventNames::error, event_handler);
  56. }
  57. // https://w3c.github.io/media-source/#dom-sourcebuffer-onerror
  58. GC::Ptr<WebIDL::CallbackType> SourceBuffer::onerror()
  59. {
  60. return event_handler_attribute(EventNames::error);
  61. }
  62. // https://w3c.github.io/media-source/#dom-sourcebuffer-onabort
  63. void SourceBuffer::set_onabort(GC::Ptr<WebIDL::CallbackType> event_handler)
  64. {
  65. set_event_handler_attribute(EventNames::abort, event_handler);
  66. }
  67. // https://w3c.github.io/media-source/#dom-sourcebuffer-onabort
  68. GC::Ptr<WebIDL::CallbackType> SourceBuffer::onabort()
  69. {
  70. return event_handler_attribute(EventNames::abort);
  71. }
  72. }