Index: lib/html/src/Isolates.dart |
diff --git a/lib/html/src/Isolates.dart b/lib/html/src/Isolates.dart |
index e3e89c708e8335441c770d02345dfd8000b38d9b..3bbbf7f6c741d7327d89ad1e38a077cc4e2eff52 100644 |
--- a/lib/html/src/Isolates.dart |
+++ b/lib/html/src/Isolates.dart |
@@ -89,8 +89,8 @@ class _RemoteSendPortSync implements SendPortSync { |
// TODO(vsm): Set this up set once, on the first call. |
var source = '$target-result'; |
var result = null; |
- var listener = (TextEvent e) { |
- result = JSON.parse(e.data); |
+ var listener = (Event e) { |
+ result = JSON.parse(_getPortSyncEventData(e)); |
}; |
window.on[source].add(listener); |
_dispatchEvent(target, [source, message]); |
@@ -161,8 +161,8 @@ class ReceivePortSync { |
void receive(callback(var message)) { |
_callback = callback; |
if (_listener === null) { |
- _listener = (TextEvent e) { |
- var data = JSON.parse(e.data); |
+ _listener = (Event e) { |
+ var data = JSON.parse(_getPortSyncEventData(e)); |
var replyTo = data[0]; |
var message = _deserialize(data[1]); |
var result = _callback(message); |
@@ -193,7 +193,9 @@ class ReceivePortSync { |
get _isolateId => ReceivePortSync._isolateId; |
void _dispatchEvent(String receiver, var message) { |
- var event = document.$dom_createEvent('TextEvent'); |
- event.initTextEvent(receiver, false, false, window, JSON.stringify(message)); |
+ var event = document.$dom_createEvent('CustomEvent'); |
+ event.initCustomEvent(receiver, false, false, JSON.stringify(message)); |
window.$dom_dispatchEvent(event); |
} |
+ |
+String _getPortSyncEventData(CustomEvent event) => event.detail; |