ServiceWorker.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * Copyright (c) 2024, Andrew Kaster <andrew@ladybird.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibGC/Heap.h>
  7. #include <LibJS/Runtime/Realm.h>
  8. #include <LibWeb/Bindings/Intrinsics.h>
  9. #include <LibWeb/HTML/EventNames.h>
  10. #include <LibWeb/ServiceWorker/ServiceWorker.h>
  11. namespace Web::ServiceWorker {
  12. ServiceWorker::ServiceWorker(JS::Realm& realm, String script_url)
  13. : DOM::EventTarget(realm)
  14. , m_script_url(move(script_url))
  15. {
  16. }
  17. ServiceWorker::~ServiceWorker() = default;
  18. GC::Ref<ServiceWorker> ServiceWorker::create(JS::Realm& realm)
  19. {
  20. return realm.create<ServiceWorker>(realm, ""_string);
  21. }
  22. void ServiceWorker::initialize(JS::Realm& realm)
  23. {
  24. Base::initialize(realm);
  25. WEB_SET_PROTOTYPE_FOR_INTERFACE(ServiceWorker);
  26. }
  27. #undef __ENUMERATE
  28. #define __ENUMERATE(attribute_name, event_name) \
  29. void ServiceWorker::set_##attribute_name(WebIDL::CallbackType* value) \
  30. { \
  31. set_event_handler_attribute(event_name, value); \
  32. } \
  33. WebIDL::CallbackType* ServiceWorker::attribute_name() \
  34. { \
  35. return event_handler_attribute(event_name); \
  36. }
  37. ENUMERATE_SERVICE_WORKER_EVENT_HANDLERS(__ENUMERATE)
  38. #undef __ENUMERATE
  39. }