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.
This commit is contained in:
Shannon Booth 2024-12-15 01:17:08 +13:00 committed by Tim Flynn
parent 43dc0f52a6
commit f8df624171
Notes: github-actions[bot] 2025-01-20 12:53:59 +00:00
2 changed files with 28 additions and 22 deletions

View file

@ -438,17 +438,28 @@ void MessagePort::close()
disentangle(); disentangle();
} }
#undef __ENUMERATE // https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror
#define __ENUMERATE(attribute_name, event_name) \ void MessagePort::set_onmessageerror(GC::Ptr<WebIDL::CallbackType> value)
void MessagePort::set_##attribute_name(WebIDL::CallbackType* value) \ {
{ \ set_event_handler_attribute(EventNames::messageerror, value);
set_event_handler_attribute(event_name, value); \ }
} \
WebIDL::CallbackType* MessagePort::attribute_name() \ // https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror
{ \ GC::Ptr<WebIDL::CallbackType> MessagePort::onmessageerror()
return event_handler_attribute(event_name); \ {
} return event_handler_attribute(EventNames::messageerror);
ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(__ENUMERATE) }
#undef __ENUMERATE
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage
void MessagePort::set_onmessage(GC::Ptr<WebIDL::CallbackType> value)
{
set_event_handler_attribute(EventNames::message, value);
}
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage
GC::Ptr<WebIDL::CallbackType> MessagePort::onmessage()
{
return event_handler_attribute(EventNames::message);
}
} }

View file

@ -18,10 +18,6 @@
namespace Web::HTML { 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 // https://html.spec.whatwg.org/multipage/web-messaging.html#message-ports
class MessagePort final : public DOM::EventTarget class MessagePort final : public DOM::EventTarget
, public Bindings::Transferable { , public Bindings::Transferable {
@ -50,12 +46,11 @@ public:
void close(); void close();
#undef __ENUMERATE void set_onmessageerror(GC::Ptr<WebIDL::CallbackType>);
#define __ENUMERATE(attribute_name, event_name) \ GC::Ptr<WebIDL::CallbackType> onmessageerror();
void set_##attribute_name(WebIDL::CallbackType*); \
WebIDL::CallbackType* attribute_name(); void set_onmessage(GC::Ptr<WebIDL::CallbackType>);
ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(__ENUMERATE) GC::Ptr<WebIDL::CallbackType> onmessage();
#undef __ENUMERATE
// ^Transferable // ^Transferable
virtual WebIDL::ExceptionOr<void> transfer_steps(HTML::TransferDataHolder&) override; virtual WebIDL::ExceptionOr<void> transfer_steps(HTML::TransferDataHolder&) override;