diff --git a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp index e675d4f4f92..7f6fd502b19 100644 --- a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp +++ b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.cpp @@ -1,5 +1,6 @@ /* * Copyright (c) 2024, Tim Ledbetter + * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ @@ -7,6 +8,7 @@ #include #include #include +#include #include namespace Web::HTML { @@ -29,4 +31,16 @@ JS::NonnullGCPtr ServiceWorkerContainer::create(JS::Real return realm.heap().allocate(realm, realm); } +// https://w3c.github.io/ServiceWorker/#dom-serviceworkercontainer-onmessage +WebIDL::CallbackType* ServiceWorkerContainer::onmessage() +{ + return event_handler_attribute(HTML::EventNames::message); +} + +// https://w3c.github.io/ServiceWorker/#dom-serviceworkercontainer-onmessage +void ServiceWorkerContainer::set_onmessage(WebIDL::CallbackType* event_handler) +{ + set_event_handler_attribute(HTML::EventNames::message, event_handler); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h index 27a3a602441..66a658cf53b 100644 --- a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h +++ b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.h @@ -1,5 +1,6 @@ /* * Copyright (c) 2024, Tim Ledbetter + * Copyright (c) 2024, Jamie Mansfield * * SPDX-License-Identifier: BSD-2-Clause */ @@ -16,10 +17,14 @@ class ServiceWorkerContainer : public DOM::EventTarget { public: [[nodiscard]] static JS::NonnullGCPtr create(JS::Realm& realm); - - explicit ServiceWorkerContainer(JS::Realm&); virtual ~ServiceWorkerContainer() override = default; + WebIDL::CallbackType* onmessage(); + void set_onmessage(WebIDL::CallbackType*); + +private: + explicit ServiceWorkerContainer(JS::Realm&); + virtual void initialize(JS::Realm&) override; }; diff --git a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.idl b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.idl index f3271cd2462..dad3b0f975a 100644 --- a/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.idl +++ b/Userland/Libraries/LibWeb/HTML/ServiceWorkerContainer.idl @@ -18,7 +18,7 @@ interface ServiceWorkerContainer : EventTarget { // events [FIXME] attribute EventHandler oncontrollerchange; - [FIXME] attribute EventHandler onmessage; // event.source of message events is ServiceWorker object + attribute EventHandler onmessage; // event.source of message events is ServiceWorker object [FIXME] attribute EventHandler onmessageerror; };