From f8df624171cb9948e4f0a2d1a4d43f155239767c Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 15 Dec 2024 01:17:08 +1300 Subject: [PATCH] LibWeb/HTML: Do not use macro to implement MessagePort event handlers This is not really any more code, and will make it easier to implement the custom behaviour specified for the onmessage setter. --- Libraries/LibWeb/HTML/MessagePort.cpp | 35 ++++++++++++++++++--------- Libraries/LibWeb/HTML/MessagePort.h | 15 ++++-------- 2 files changed, 28 insertions(+), 22 deletions(-) diff --git a/Libraries/LibWeb/HTML/MessagePort.cpp b/Libraries/LibWeb/HTML/MessagePort.cpp index e46b7a64182..10b0b920277 100644 --- a/Libraries/LibWeb/HTML/MessagePort.cpp +++ b/Libraries/LibWeb/HTML/MessagePort.cpp @@ -438,17 +438,28 @@ void MessagePort::close() disentangle(); } -#undef __ENUMERATE -#define __ENUMERATE(attribute_name, event_name) \ - void MessagePort::set_##attribute_name(WebIDL::CallbackType* value) \ - { \ - set_event_handler_attribute(event_name, value); \ - } \ - WebIDL::CallbackType* MessagePort::attribute_name() \ - { \ - return event_handler_attribute(event_name); \ - } -ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(__ENUMERATE) -#undef __ENUMERATE +// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror +void MessagePort::set_onmessageerror(GC::Ptr value) +{ + set_event_handler_attribute(EventNames::messageerror, value); +} + +// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror +GC::Ptr MessagePort::onmessageerror() +{ + return event_handler_attribute(EventNames::messageerror); +} + +// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage +void MessagePort::set_onmessage(GC::Ptr value) +{ + set_event_handler_attribute(EventNames::message, value); +} + +// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage +GC::Ptr MessagePort::onmessage() +{ + return event_handler_attribute(EventNames::message); +} } diff --git a/Libraries/LibWeb/HTML/MessagePort.h b/Libraries/LibWeb/HTML/MessagePort.h index 8a0968d50ee..881e6da333d 100644 --- a/Libraries/LibWeb/HTML/MessagePort.h +++ b/Libraries/LibWeb/HTML/MessagePort.h @@ -18,10 +18,6 @@ namespace Web::HTML { -#define ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(E) \ - E(onmessage, HTML::EventNames::message) \ - E(onmessageerror, HTML::EventNames::messageerror) - // https://html.spec.whatwg.org/multipage/web-messaging.html#message-ports class MessagePort final : public DOM::EventTarget , public Bindings::Transferable { @@ -50,12 +46,11 @@ public: void close(); -#undef __ENUMERATE -#define __ENUMERATE(attribute_name, event_name) \ - void set_##attribute_name(WebIDL::CallbackType*); \ - WebIDL::CallbackType* attribute_name(); - ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(__ENUMERATE) -#undef __ENUMERATE + void set_onmessageerror(GC::Ptr); + GC::Ptr onmessageerror(); + + void set_onmessage(GC::Ptr); + GC::Ptr onmessage(); // ^Transferable virtual WebIDL::ExceptionOr transfer_steps(HTML::TransferDataHolder&) override;