Chromium Code Reviews| Index: lib/src/runner/browser/browser_manager.dart |
| diff --git a/lib/src/runner/browser/browser_manager.dart b/lib/src/runner/browser/browser_manager.dart |
| index 0442d82bd35819400cdce2c802d588f962c6142b..4504f86b7c9cfc79a071158effc6acd851ad8a46 100644 |
| --- a/lib/src/runner/browser/browser_manager.dart |
| +++ b/lib/src/runner/browser/browser_manager.dart |
| @@ -48,12 +48,17 @@ class BrowserManager { |
| /// across the client and server. |
| int _suiteId = 0; |
| + /// Whether the channel to the browser has closed. |
| + bool _closed; |
| + |
| /// Creates a new BrowserManager that communicates with [browser] over |
| /// [webSocket]. |
| BrowserManager(this.browser, CompatibleWebSocket webSocket) |
| : _channel = new MultiChannel( |
| webSocket.map(JSON.decode), |
| - mapSink(webSocket, JSON.encode)); |
| + mapSink(webSocket, JSON.encode)) { |
| + _channel.stream.listen(null, onDone: () => _closed = true); |
|
kevmoo
2015/07/14 23:33:38
feels weird, but I guess Stream doesn't have a don
|
| + } |
| /// Tells the browser the load a test suite from the URL [url]. |
| /// |
| @@ -77,6 +82,7 @@ class BrowserManager { |
| var suiteChannel; |
| closeIframe() { |
| + if (_closed) return; |
| suiteChannel.sink.close(); |
| _channel.sink.add({ |
| "command": "closeSuite", |