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

Side by Side Diff: tests/isolate/function_send_test.dart

Issue 742873002: Isolates: allow sending of arbitrary objects in dart2js. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Support CSP mode. Created 6 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import "dart:isolate"; 5 import "dart:isolate";
6 import "dart:async"; 6 import "dart:async";
7 import "package:expect/expect.dart"; 7 import "package:expect/expect.dart";
8 import "package:async_helper/async_helper.dart"; 8 import "package:async_helper/async_helper.dart";
9 9
10 void toplevel(port, message) { port.send("toplevel:$message"); } 10 void toplevel(port, message) { port.send("toplevel:$message"); }
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 void testUnsendable(name, func) { 146 void testUnsendable(name, func) {
147 asyncStart(); 147 asyncStart();
148 Isolate.spawn(nop, func).then((v) => throw "allowed spawn direct?", 148 Isolate.spawn(nop, func).then((v) => throw "allowed spawn direct?",
149 onError: (e,s){ asyncEnd(); }); 149 onError: (e,s){ asyncEnd(); });
150 asyncStart(); 150 asyncStart();
151 Isolate.spawn(nop, [func]).then((v) => throw "allowed spawn wrapped?", 151 Isolate.spawn(nop, [func]).then((v) => throw "allowed spawn wrapped?",
152 onError: (e,s){ asyncEnd(); }); 152 onError: (e,s){ asyncEnd(); });
153 153
154 asyncStart(); 154 asyncStart();
155 var noReply = new RawReceivePort((_) { throw "Unexpected message: $_"; }); 155 var noReply = new RawReceivePort((_) { throw "Unexpected message: $_"; });
156 // Currently succeedes incorrectly in dart2js. 156 Expect.throws(() {
157 Expect.throws(() { /// 01: ok 157 noReply.sendPort.send(func);
158 noReply.sendPort.send(func); /// 01: continued 158 }, null, "send direct");
159 }, null, "send direct"); /// 01: continued 159 Expect.throws(() {
160 Expect.throws(() { /// 01: continued 160 noReply.sendPort.send([func]);
161 noReply.sendPort.send([func]); /// 01: continued 161 }, null, "send wrapped");
162 }, null, "send wrapped"); /// 01: continued
163 scheduleMicrotask(() { 162 scheduleMicrotask(() {
164 noReply.close(); 163 noReply.close();
165 asyncEnd(); 164 asyncEnd();
166 }); 165 });
167 166
168 // Try sending through other isolate. 167 // Try sending through other isolate.
169 asyncStart(); 168 asyncStart();
170 echoPort((v) { Expect.equals(0, v); }) 169 echoPort((v) { Expect.equals(0, v); })
171 .then((p) { 170 .then((p) {
172 try { 171 try {
173 p.send(func); 172 p.send(func);
174 } finally { 173 } finally {
175 p.send(0); // Closes echo port. 174 p.send(0); // Closes echo port.
176 } 175 }
177 }) 176 })
178 .then((p) => throw "unreachable 2", 177 .then((p) => throw "unreachable 2",
179 onError: (e, s) {asyncEnd();}); 178 onError: (e, s) {asyncEnd();});
180 } 179 }
181 180
182 void nop(_) {} 181 void nop(_) {}
183 182
184 void callFunc(message) { 183 void callFunc(message) {
185 message[0](message[1], message[2]); 184 message[0](message[1], message[2]);
186 } 185 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/js_lib/shared/embedded_names.dart ('k') | tests/isolate/isolate.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698