Index: tests/html/isolates_test.dart |
diff --git a/tests/html/isolates_test.dart b/tests/html/isolates_test.dart |
index 1320d226dd0d1c14794be10871f54fd8a9f280a8..fe35c20904e1bd5535f5e119fb8227056f0b4d77 100644 |
--- a/tests/html/isolates_test.dart |
+++ b/tests/html/isolates_test.dart |
@@ -7,7 +7,10 @@ import 'dart:isolate' as isolate; |
String responseFor(message) => 'response for $message'; |
-void isolateEntry() { |
+void isolateEntry(isolate.SendPort initialReplyTo) { |
+ var port = new isolate.ReceivePort(); |
+ initialReplyTo.send(port.sendPort); |
+ |
bool wasThrown = false; |
try { |
window.alert('Test'); |
@@ -22,28 +25,41 @@ void isolateEntry() { |
// Check that convert library was loaded to isolate. |
JSON.encode([1, 2, 3]); |
- isolate.port.receive((message, replyTo) { |
- replyTo.send(responseFor(message), null); |
+ port.listen((message) { |
+ var data = message[0]; |
+ var replyTo = message[1]; |
+ replyTo.send(responseFor(data)); |
}); |
} |
+Future sendReceive(isolate.SendPort port, msg) { |
+ var response = new isolate.ReceivePort(); |
+ port.send([msg, response.sendPort]); |
+ return response.first; |
+} |
+ |
main() { |
useHtmlConfiguration(); |
test('IsolateSpawn', () { |
- isolate.spawnFunction(isolateEntry); |
+ var port = new isolate.ReceivePort(); |
+ isolate.Isolate.spawn(isolateEntry, port.sendPort); |
+ port.close(); |
}); |
test('NonDOMIsolates', () { |
var callback = expectAsync0((){}); |
- var port = isolate.spawnFunction(isolateEntry); |
- final msg1 = 'foo'; |
- final msg2 = 'bar'; |
- port.call(msg1).then((response) { |
- guardAsync(() { |
- expect(response, equals(responseFor(msg1))); |
- port.call(msg2).then((response) { |
- guardAsync(() { |
- expect(response, equals(responseFor(msg2))); |
- callback(); |
+ var response = new isolate.ReceivePort(); |
+ var remote = isolate.Isolate.spawn(isolateEntry, response.sendPort); |
+ response.first.then((port) { |
+ final msg1 = 'foo'; |
+ final msg2 = 'bar'; |
+ sendReceive(port, msg1).then((response) { |
+ guardAsync(() { |
+ expect(response, equals(responseFor(msg1))); |
+ sendReceive(port, msg2).then((response) { |
+ guardAsync(() { |
+ expect(response, equals(responseFor(msg2))); |
+ callback(); |
+ }); |
}); |
}); |
}); |