Skip to content

Commit f8df624

Browse files
shannonboothtrflynn89
authored andcommitted
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.
1 parent 43dc0f5 commit f8df624

File tree

2 files changed

+28
-22
lines changed

2 files changed

+28
-22
lines changed

Libraries/LibWeb/HTML/MessagePort.cpp

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -438,17 +438,28 @@ void MessagePort::close()
438438
disentangle();
439439
}
440440

441-
#undef __ENUMERATE
442-
#define __ENUMERATE(attribute_name, event_name) \
443-
void MessagePort::set_##attribute_name(WebIDL::CallbackType* value) \
444-
{ \
445-
set_event_handler_attribute(event_name, value); \
446-
} \
447-
WebIDL::CallbackType* MessagePort::attribute_name() \
448-
{ \
449-
return event_handler_attribute(event_name); \
450-
}
451-
ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(__ENUMERATE)
452-
#undef __ENUMERATE
441+
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror
442+
void MessagePort::set_onmessageerror(GC::Ptr<WebIDL::CallbackType> value)
443+
{
444+
set_event_handler_attribute(EventNames::messageerror, value);
445+
}
446+
447+
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessageerror
448+
GC::Ptr<WebIDL::CallbackType> MessagePort::onmessageerror()
449+
{
450+
return event_handler_attribute(EventNames::messageerror);
451+
}
452+
453+
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage
454+
void MessagePort::set_onmessage(GC::Ptr<WebIDL::CallbackType> value)
455+
{
456+
set_event_handler_attribute(EventNames::message, value);
457+
}
458+
459+
// https://html.spec.whatwg.org/multipage/web-messaging.html#handler-messageeventtarget-onmessage
460+
GC::Ptr<WebIDL::CallbackType> MessagePort::onmessage()
461+
{
462+
return event_handler_attribute(EventNames::message);
463+
}
453464

454465
}

Libraries/LibWeb/HTML/MessagePort.h

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,6 @@
1818

1919
namespace Web::HTML {
2020

21-
#define ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(E) \
22-
E(onmessage, HTML::EventNames::message) \
23-
E(onmessageerror, HTML::EventNames::messageerror)
24-
2521
// https://html.spec.whatwg.org/multipage/web-messaging.html#message-ports
2622
class MessagePort final : public DOM::EventTarget
2723
, public Bindings::Transferable {
@@ -50,12 +46,11 @@ class MessagePort final : public DOM::EventTarget
5046

5147
void close();
5248

53-
#undef __ENUMERATE
54-
#define __ENUMERATE(attribute_name, event_name) \
55-
void set_##attribute_name(WebIDL::CallbackType*); \
56-
WebIDL::CallbackType* attribute_name();
57-
ENUMERATE_MESSAGE_PORT_EVENT_HANDLERS(__ENUMERATE)
58-
#undef __ENUMERATE
49+
void set_onmessageerror(GC::Ptr<WebIDL::CallbackType>);
50+
GC::Ptr<WebIDL::CallbackType> onmessageerror();
51+
52+
void set_onmessage(GC::Ptr<WebIDL::CallbackType>);
53+
GC::Ptr<WebIDL::CallbackType> onmessage();
5954

6055
// ^Transferable
6156
virtual WebIDL::ExceptionOr<void> transfer_steps(HTML::TransferDataHolder&) override;

0 commit comments

Comments
 (0)