Index: lib/src/runner/browser/iframe_listener.dart |
diff --git a/lib/src/runner/browser/iframe_listener.dart b/lib/src/runner/browser/iframe_listener.dart |
index b345f3795adecb5bf59702faa12c4f8367b11281..76804517adbcb9adf3422e950dd0b608cd1cfa91 100644 |
--- a/lib/src/runner/browser/iframe_listener.dart |
+++ b/lib/src/runner/browser/iframe_listener.dart |
@@ -56,24 +56,23 @@ class IframeListener { |
} |
var declarer = new Declarer(); |
- try { |
- runZoned(main, zoneValues: {#test.declarer: declarer}); |
- } catch (error, stackTrace) { |
+ runZoned(() => new Future.sync(main), zoneValues: { |
+ #test.declarer: declarer |
+ }).then((_) { |
+ var url = Uri.parse(window.location.href); |
+ var message = JSON.decode(Uri.decodeFull(url.fragment)); |
+ var metadata = new Metadata.deserialize(message['metadata']); |
+ var browser = TestPlatform.find(message['browser']); |
+ |
+ var suite = new Suite(declarer.tests, metadata: metadata) |
+ .forPlatform(browser); |
+ new IframeListener._(suite)._listen(channel); |
+ }, onError: (error, stackTrace) { |
channel.sink.add({ |
"type": "error", |
"error": RemoteException.serialize(error, stackTrace) |
}); |
- return; |
- } |
- |
- var url = Uri.parse(window.location.href); |
- var message = JSON.decode(Uri.decodeFull(url.fragment)); |
- var metadata = new Metadata.deserialize(message['metadata']); |
- var browser = TestPlatform.find(message['browser']); |
- |
- var suite = new Suite(declarer.tests, metadata: metadata) |
- .forPlatform(browser); |
- new IframeListener._(suite)._listen(channel); |
+ }); |
} |
/// Constructs a [MultiChannel] wrapping the `postMessage` communication with |