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

Unified Diff: lib/src/runner/browser/static/host.dart

Issue 1206033004: Only load a certain number of test suites at once. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 6 months 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 side-by-side diff with in-line comments
Download patch
Index: lib/src/runner/browser/static/host.dart
diff --git a/lib/src/runner/browser/static/host.dart b/lib/src/runner/browser/static/host.dart
index 92ef3ba9d3aa55822d194faccf67c79a483975c3..b433ceb36237c469d8b00182f3635decb4657b38 100644
--- a/lib/src/runner/browser/static/host.dart
+++ b/lib/src/runner/browser/static/host.dart
@@ -13,6 +13,9 @@ import 'package:stack_trace/stack_trace.dart';
import 'package:test/src/util/multi_channel.dart';
import 'package:test/src/util/stream_channel.dart';
+/// The iframes created for each loaded test suite, indexed by the suite id.
+final _iframes = new Map<int, IFrameElement>();
+
// TODO(nweiz): test this once we can run browser tests.
/// Code that runs in the browser and loads test suites at the server's behest.
///
@@ -74,10 +77,14 @@ void main() {
runZoned(() {
var serverChannel = _connectToServer();
serverChannel.stream.listen((message) {
- assert(message['command'] == 'loadSuite');
- var suiteChannel = serverChannel.virtualChannel(message['channel']);
- var iframeChannel = _connectToIframe(message['url']);
- suiteChannel.pipe(iframeChannel);
+ if (message['command'] == 'loadSuite') {
+ var suiteChannel = serverChannel.virtualChannel(message['channel']);
+ var iframeChannel = _connectToIframe(message['url'], message['id']);
+ suiteChannel.pipe(iframeChannel);
+ } else {
+ assert(message['command'] == 'closeSuite');
+ _iframes[message['id']].remove();
+ }
});
}, onError: (error, stackTrace) {
print("$error\n${new Trace.from(stackTrace).terse}");
@@ -105,8 +112,11 @@ MultiChannel _connectToServer() {
/// Creates an iframe with `src` [url] and establishes a connection to it using
/// `postMessage`.
-StreamChannel _connectToIframe(String url) {
+///
+/// [id] identifies the suite loaded in this iframe.
+StreamChannel _connectToIframe(String url, int id) {
var iframe = new IFrameElement();
+ _iframes[id] = iframe;
iframe.src = url;
document.body.children.add(iframe);

Powered by Google App Engine
This is Rietveld 408576698