diff --git a/sdk/lib/html/dart2js/html_dart2js.dart b/sdk/lib/html/dart2js/html_dart2js.dart
index 1ecba16a765..8acae64c58b 100644
--- a/sdk/lib/html/dart2js/html_dart2js.dart
+++ b/sdk/lib/html/dart2js/html_dart2js.dart
@@ -8464,7 +8464,26 @@ class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
@DomName('DedicatedWorkerGlobalScope.postMessage')
@DocsEditable()
@Experimental() // untriaged
- void postMessage(Object message, [List transfer]) native;
+ void postMessage(/*any*/ message, [List transfer]) {
+ if (transfer != null) {
+ var message_1 = convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, transfer);
+ return;
+ }
+ var message_1 = convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_1);
+ return;
+ }
+ @JSName('postMessage')
+ @DomName('DedicatedWorkerGlobalScope.postMessage')
+ @DocsEditable()
+ @Experimental() // untriaged
+ void _postMessage_1(message, List transfer) native;
+ @JSName('postMessage')
+ @DomName('DedicatedWorkerGlobalScope.postMessage')
+ @DocsEditable()
+ @Experimental() // untriaged
+ void _postMessage_2(message) native;
/// Stream of `message` events handled by this [DedicatedWorkerGlobalScope].
@DomName('DedicatedWorkerGlobalScope.onmessage')
@@ -27427,7 +27446,26 @@ class ServiceWorkerClient extends Interceptor {
@DomName('ServiceWorkerClient.postMessage')
@DocsEditable()
@Experimental() // untriaged
- void postMessage(/*SerializedScriptValue*/ message, [List transfer]) native;
+ void postMessage(/*SerializedScriptValue*/ message, [List transfer]) {
+ if (transfer != null) {
+ var message_1 = convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, transfer);
+ return;
+ }
+ var message_1 = convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_1);
+ return;
+ }
+ @JSName('postMessage')
+ @DomName('ServiceWorkerClient.postMessage')
+ @DocsEditable()
+ @Experimental() // untriaged
+ void _postMessage_1(message, List transfer) native;
+ @JSName('postMessage')
+ @DomName('ServiceWorkerClient.postMessage')
+ @DocsEditable()
+ @Experimental() // untriaged
+ void _postMessage_2(message) native;
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
@@ -34017,7 +34055,24 @@ class Worker extends EventTarget implements AbstractWorker {
@DomName('Worker.postMessage')
@DocsEditable()
- void postMessage(/*SerializedScriptValue*/ message, [List transfer]) native;
+ void postMessage(/*SerializedScriptValue*/ message, [List transfer]) {
+ if (transfer != null) {
+ var message_1 = convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, transfer);
+ return;
+ }
+ var message_1 = convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_1);
+ return;
+ }
+ @JSName('postMessage')
+ @DomName('Worker.postMessage')
+ @DocsEditable()
+ void _postMessage_1(message, List transfer) native;
+ @JSName('postMessage')
+ @DomName('Worker.postMessage')
+ @DocsEditable()
+ void _postMessage_2(message) native;
@DomName('Worker.terminate')
@DocsEditable()
diff --git a/sdk/lib/html/dartium/html_dartium.dart b/sdk/lib/html/dartium/html_dartium.dart
index 319c762d4dd..6b1a7f79486 100644
--- a/sdk/lib/html/dartium/html_dartium.dart
+++ b/sdk/lib/html/dartium/html_dartium.dart
@@ -9535,7 +9535,7 @@ class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
@DomName('DedicatedWorkerGlobalScope.postMessage')
@DocsEditable()
@Experimental() // untriaged
- void postMessage(Object message, [List transfer]) => _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_2_(unwrap_jso(this), message, transfer);
+ void postMessage(Object message, [List transfer]) => _blink.BlinkDedicatedWorkerGlobalScope.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
/// Stream of `message` events handled by this [DedicatedWorkerGlobalScope].
@DomName('DedicatedWorkerGlobalScope.onmessage')
@@ -33019,7 +33019,7 @@ class ServiceWorkerClient extends DartHtmlDomObject {
@DomName('ServiceWorkerClient.postMessage')
@DocsEditable()
@Experimental() // untriaged
- void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkServiceWorkerClient.instance.postMessage_Callback_2_(unwrap_jso(this), message, transfer);
+ void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkServiceWorkerClient.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
}
// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
@@ -40677,7 +40677,7 @@ class Worker extends EventTarget implements AbstractWorker {
@DomName('Worker.postMessage')
@DocsEditable()
- void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkWorker.instance.postMessage_Callback_2_(unwrap_jso(this), message, transfer);
+ void postMessage(/*SerializedScriptValue*/ message, [List transfer]) => _blink.BlinkWorker.instance.postMessage_Callback_2_(unwrap_jso(this), convertDartToNative_SerializedScriptValue(message), transfer);
@DomName('Worker.terminate')
@DocsEditable()
diff --git a/tools/dom/scripts/generator.py b/tools/dom/scripts/generator.py
index 0f8867d0d14..92a5ed0e98c 100644
--- a/tools/dom/scripts/generator.py
+++ b/tools/dom/scripts/generator.py
@@ -722,6 +722,9 @@ dart2js_conversions = monitored.Dict('generator.dart2js_conversions', {
# postMessage
'any set MessagePort.postMessage': _serialize_SSV,
'SerializedScriptValue set Window.postMessage': _serialize_SSV,
+ 'SerializedScriptValue set Worker.postMessage': _serialize_SSV,
+ 'any set DedicatedWorkerGlobalScope.postMessage' : _serialize_SSV,
+ 'SerializedScriptValue set ServiceWorkerClient.postMessage': _serialize_SSV,
'* get CustomEvent.detail':
Conversion('convertNativeToDart_SerializedScriptValue',