diff --git a/Userland/Libraries/LibWeb/HTML/Worker.cpp b/Userland/Libraries/LibWeb/HTML/Worker.cpp index 0ab93578a32..f79ee851d11 100644 --- a/Userland/Libraries/LibWeb/HTML/Worker.cpp +++ b/Userland/Libraries/LibWeb/HTML/Worker.cpp @@ -132,6 +132,16 @@ WebIDL::ExceptionOr Worker::post_message(JS::Value message, StructuredSeri return m_outside_port->post_message(message, options); } +// https://html.spec.whatwg.org/multipage/workers.html#dom-worker-postmessage +WebIDL::ExceptionOr Worker::post_message(JS::Value message, Vector> const& transfer) +{ + // The postMessage(message, transfer) and postMessage(message, options) methods on Worker objects act as if, + // when invoked, they immediately invoked the respective postMessage(message, transfer) and + // postMessage(message, options) on the port, with the same arguments, and returned the same return value. + + return m_outside_port->post_message(message, transfer); +} + #undef __ENUMERATE #define __ENUMERATE(attribute_name, event_name) \ void Worker::set_##attribute_name(WebIDL::CallbackType* value) \ diff --git a/Userland/Libraries/LibWeb/HTML/Worker.h b/Userland/Libraries/LibWeb/HTML/Worker.h index c66f6ac528d..a60c4a411b3 100644 --- a/Userland/Libraries/LibWeb/HTML/Worker.h +++ b/Userland/Libraries/LibWeb/HTML/Worker.h @@ -36,6 +36,7 @@ public: WebIDL::ExceptionOr terminate(); WebIDL::ExceptionOr post_message(JS::Value message, StructuredSerializeOptions const&); + WebIDL::ExceptionOr post_message(JS::Value message, Vector> const& transfer); virtual ~Worker() = default; diff --git a/Userland/Libraries/LibWeb/HTML/Worker.idl b/Userland/Libraries/LibWeb/HTML/Worker.idl index 1980c0ce0d2..c7ef2855e10 100644 --- a/Userland/Libraries/LibWeb/HTML/Worker.idl +++ b/Userland/Libraries/LibWeb/HTML/Worker.idl @@ -10,8 +10,7 @@ interface Worker : EventTarget { constructor(DOMString scriptURL, optional WorkerOptions options = {}); undefined terminate(); - // FIXME: IDL overload issue here - // FIXME: undefined postMessage(any message, sequence transfer); + undefined postMessage(any message, sequence transfer); undefined postMessage(any message, optional StructuredSerializeOptions options = {}); attribute EventHandler onmessage;