Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Unified Diff: lib/html/dart2js/html_dart2js.dart

Side-by-side diff isn't available for this file because of its large size.
Issue 11065003: Convert between Dart and JavaScript SerializedScriptValues on postMessage. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
Download patch
« no previous file with comments | « no previous file | lib/html/scripts/generator.py » ('j') | lib/html/scripts/generator.py » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/html/dart2js/html_dart2js.dart
diff --git a/lib/html/dart2js/html_dart2js.dart b/lib/html/dart2js/html_dart2js.dart
index daf6e9f2bd4d3297f67c603f436870f009198038..2dcb62407bc3b1b6b481b9792afe07e5e738eba5 100644
--- a/lib/html/dart2js/html_dart2js.dart
+++ b/lib/html/dart2js/html_dart2js.dart
@@ -9624,7 +9624,18 @@ class _DedicatedWorkerContextImpl extends _WorkerContextImpl implements Dedicate
_DedicatedWorkerContextEventsImpl get on =>
new _DedicatedWorkerContextEventsImpl(this);
- void postMessage(Object message, [List messagePorts]) native;
+ void postMessage(message, [messagePorts]) {
+ if (?messagePorts) {
+ var message_1 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, messagePorts);
+ return;
+ }
+ var message_2 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_2);
+ return;
+ }
+ void _postMessage_1(message, List messagePorts) native "postMessage";
+ void _postMessage_2(message) native "postMessage";
}
class _DedicatedWorkerContextEventsImpl extends _WorkerContextEventsImpl implements DedicatedWorkerContextEvents {
@@ -19225,7 +19236,8 @@ abstract class MessageEvent implements Event {
class _MessageEventImpl extends _EventImpl implements MessageEvent native "*MessageEvent" {
- final Object data;
+ Dynamic get data => _convertNativeToDart_SerializedScriptValue(this._data);
+ Dynamic get _data() native "return this.data;";
final String lastEventId;
@@ -19288,7 +19300,18 @@ class _MessagePortImpl extends _EventTargetImpl implements MessagePort native "*
bool $dom_dispatchEvent(_EventImpl evt) native "dispatchEvent";
- void postMessage(Object message, [List messagePorts]) native;
+ void postMessage(message, [messagePorts]) {
+ if (?messagePorts) {
+ var message_1 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, messagePorts);
+ return;
+ }
+ var message_2 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_2);
+ return;
+ }
+ void _postMessage_1(message, List messagePorts) native "postMessage";
+ void _postMessage_2(message) native "postMessage";
void $dom_removeEventListener(String type, EventListener listener, [bool useCapture]) native "removeEventListener";
@@ -36532,7 +36555,23 @@ class _WindowImpl extends _EventTargetImpl implements Window native "@*DOMWindow
_DatabaseImpl openDatabase(String name, String version, String displayName, int estimatedSize, [DatabaseCallback creationCallback]) native;
- void postMessage(message, String targetOrigin, [List messagePorts]) native;
+ void postMessage(message, String targetOrigin, [messagePorts]) {
+ if (?message &&
+ !?messagePorts) {
+ var message_1 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, targetOrigin);
+ return;
+ }
+ if (?message &&
+ (messagePorts is List || messagePorts === null)) {
+ var message_2 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_2, targetOrigin, messagePorts);
+ return;
+ }
+ throw const Exception("Incorrect number or type of arguments");
+ }
+ void _postMessage_1(message, targetOrigin) native "postMessage";
+ void _postMessage_2(message, targetOrigin, List messagePorts) native "postMessage";
void print() native;
@@ -36894,7 +36933,18 @@ class _WorkerImpl extends _AbstractWorkerImpl implements Worker native "*Worker"
_WorkerEventsImpl get on =>
new _WorkerEventsImpl(this);
- void postMessage(message, [List messagePorts]) native;
+ void postMessage(message, [messagePorts]) {
+ if (?messagePorts) {
+ var message_1 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_1(message_1, messagePorts);
+ return;
+ }
+ var message_2 = _convertDartToNative_SerializedScriptValue(message);
+ _postMessage_2(message_2);
+ return;
+ }
+ void _postMessage_1(message, List messagePorts) native "postMessage";
+ void _postMessage_2(message) native "postMessage";
void terminate() native;
}
@@ -39430,6 +39480,12 @@ _convertDartToNative_SerializedScriptValue(value) {
return _convertDartToNative_PrepareForStructuredClone(value);
}
+// May modify original. If so, action is idempotent.
+_convertNativeToDart_SerializedScriptValue(object) {
+ return _convertNativeToDart_AcceptStructuredClone(object);
+}
+
+
/**
* Converts a Dart value into a JavaScript SerializedScriptValue. Returns the
« no previous file with comments | « no previous file | lib/html/scripts/generator.py » ('j') | lib/html/scripts/generator.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698