diff --git a/dom/messagechannel/MessagePort.cpp b/dom/messagechannel/MessagePort.cpp index a79687d8fb70..afcecc72c835 100644 --- a/dom/messagechannel/MessagePort.cpp +++ b/dom/messagechannel/MessagePort.cpp @@ -411,6 +411,14 @@ MessagePort::PostMessage(JSContext* aCx, JS::Handle aMessage, mActor->SendPostMessages(messages); } +void +MessagePort::PostMessage(JSContext* aCx, JS::Handle aMessage, + const PostMessageOptions& aOptions, + ErrorResult& aRv) +{ + PostMessage(aCx, aMessage, aOptions.mTransfer, aRv); +} + void MessagePort::Start() { diff --git a/dom/messagechannel/MessagePort.h b/dom/messagechannel/MessagePort.h index 517b62eb6b00..6b9ef8cfee13 100644 --- a/dom/messagechannel/MessagePort.h +++ b/dom/messagechannel/MessagePort.h @@ -24,6 +24,7 @@ namespace dom { class ClonedMessageData; class MessagePortChild; class MessagePortIdentifier; +struct PostMessageOptions; class PostMessageRunnable; class SharedMessagePortMessage; class StrongWorkerRef; @@ -58,6 +59,11 @@ public: const Sequence& aTransferable, ErrorResult& aRv); + void + PostMessage(JSContext* aCx, JS::Handle aMessage, + const PostMessageOptions& aOptions, + ErrorResult& aRv); + void Start(); void Close(); diff --git a/dom/webidl/MessagePort.webidl b/dom/webidl/MessagePort.webidl index ccb0eef0962e..369116356d79 100644 --- a/dom/webidl/MessagePort.webidl +++ b/dom/webidl/MessagePort.webidl @@ -10,7 +10,9 @@ [Exposed=(Window,Worker,AudioWorklet)] interface MessagePort : EventTarget { [Throws] - void postMessage(any message, optional sequence transferable = []); + void postMessage(any message, sequence transferable); + [Throws] + void postMessage(any message, optional PostMessageOptions options); void start(); void close(); @@ -20,3 +22,7 @@ interface MessagePort : EventTarget { attribute EventHandler onmessageerror; }; // MessagePort implements Transferable; + +dictionary PostMessageOptions { + sequence transfer = []; +}; diff --git a/testing/web-platform/meta/webmessaging/message-channels/dictionary-transferrable.html.ini b/testing/web-platform/meta/webmessaging/message-channels/dictionary-transferrable.html.ini deleted file mode 100644 index f4e7c423804c..000000000000 --- a/testing/web-platform/meta/webmessaging/message-channels/dictionary-transferrable.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[dictionary-transferrable.html] - [basic messagechannel with transfer] - expected: FAIL -