Index: lib/src/runner/browser/iframe_test.dart |
diff --git a/lib/src/runner/isolate_test.dart b/lib/src/runner/browser/iframe_test.dart |
similarity index 57% |
copy from lib/src/runner/isolate_test.dart |
copy to lib/src/runner/browser/iframe_test.dart |
index 7914ca75732b42a4fcf7ee656620515be7bed0a5..e4aee5282384ecf711ae2d81ef41e2c58045615d 100644 |
--- a/lib/src/runner/isolate_test.dart |
+++ b/lib/src/runner/browser/iframe_test.dart |
@@ -2,40 +2,37 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-library unittest.runner.isolate_test; |
- |
-import 'dart:isolate'; |
- |
-import '../backend/live_test.dart'; |
-import '../backend/live_test_controller.dart'; |
-import '../backend/state.dart'; |
-import '../backend/suite.dart'; |
-import '../backend/test.dart'; |
-import '../util/remote_exception.dart'; |
- |
-/// A test in another isolate. |
-class IsolateTest implements Test { |
+library unittest.runner.browser.iframe_test; |
+ |
+import '../../backend/live_test.dart'; |
+import '../../backend/live_test_controller.dart'; |
+import '../../backend/state.dart'; |
+import '../../backend/suite.dart'; |
+import '../../backend/test.dart'; |
+import '../../util/multi_channel.dart'; |
+import '../../util/remote_exception.dart'; |
+ |
+/// A test in a running iframe. |
+class IframeTest implements Test { |
final String name; |
- /// The port on which to communicate with the remote test. |
- final SendPort _sendPort; |
+ /// The channel used to communicate with the test's [IframeListener]. |
+ final MultiChannel _channel; |
- IsolateTest(this.name, this._sendPort); |
+ IframeTest(this.name, this._channel); |
- /// Loads a single runnable instance of this test. |
LiveTest load(Suite suite) { |
- var receivePort; |
var controller; |
controller = new LiveTestController(suite, this, () { |
controller.setState(const State(Status.running, Result.success)); |
- receivePort = new ReceivePort(); |
- _sendPort.send({ |
+ var testChannel = _channel.virtualChannel(); |
+ _channel.sink.add({ |
'command': 'run', |
- 'reply': receivePort.sendPort |
+ 'channel': testChannel.id |
}); |
- receivePort.listen((message) { |
+ testChannel.stream.listen((message) { |
if (message['type'] == 'error') { |
var asyncError = RemoteException.deserialize(message['error']); |
controller.addError(asyncError.error, asyncError.stackTrace); |
@@ -49,8 +46,6 @@ class IsolateTest implements Test { |
controller.completer.complete(); |
} |
}); |
- }, onClose: () { |
- if (receivePort != null) receivePort.close(); |
}); |
return controller.liveTest; |
} |