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

Side by Side Diff: lib/src/runner/browser/browser_manager.dart

Issue 1390883002: Make Suite contain a single Group. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 2 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 unified diff | Download patch
« no previous file with comments | « lib/src/backend/test.dart ('k') | lib/src/runner/browser/iframe_listener.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, 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 library test.runner.browser.browser_manager; 5 library test.runner.browser.browser_manager;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 9
10 import 'package:async/async.dart'; 10 import 'package:async/async.dart';
11 import 'package:http_parser/http_parser.dart'; 11 import 'package:http_parser/http_parser.dart';
12 import 'package:pool/pool.dart'; 12 import 'package:pool/pool.dart';
13 13
14 import '../../backend/group.dart'; 14 import '../../backend/group.dart';
15 import '../../backend/metadata.dart'; 15 import '../../backend/metadata.dart';
16 import '../../backend/suite_entry.dart';
17 import '../../backend/test_platform.dart'; 16 import '../../backend/test_platform.dart';
18 import '../../util/cancelable_future.dart'; 17 import '../../util/cancelable_future.dart';
19 import '../../util/multi_channel.dart'; 18 import '../../util/multi_channel.dart';
20 import '../../util/remote_exception.dart'; 19 import '../../util/remote_exception.dart';
21 import '../../util/stack_trace_mapper.dart'; 20 import '../../util/stack_trace_mapper.dart';
22 import '../../utils.dart'; 21 import '../../utils.dart';
23 import '../application_exception.dart'; 22 import '../application_exception.dart';
24 import '../environment.dart'; 23 import '../environment.dart';
25 import '../load_exception.dart'; 24 import '../load_exception.dart';
26 import '../runner_suite.dart'; 25 import '../runner_suite.dart';
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 if (response["type"] == "error") { 237 if (response["type"] == "error") {
239 closeIframe(); 238 closeIframe();
240 var asyncError = RemoteException.deserialize(response["error"]); 239 var asyncError = RemoteException.deserialize(response["error"]);
241 await new Future.error( 240 await new Future.error(
242 new LoadException(path, asyncError.error), 241 new LoadException(path, asyncError.error),
243 asyncError.stackTrace); 242 asyncError.stackTrace);
244 } 243 }
245 244
246 return new RunnerSuite( 245 return new RunnerSuite(
247 await _environment, 246 await _environment,
248 _deserializeEntries(suiteChannel, mapper, response["entries"]), 247 _deserializeGroup(suiteChannel, mapper, response["root"]),
249 platform: _platform, 248 platform: _platform,
250 metadata: metadata,
251 path: path, 249 path: path,
252 onClose: () => closeIframe()); 250 onClose: () => closeIframe());
253 } 251 }
254 252
255 /// Deserializes [entries] into concrete [SuiteEntry] subclasses. 253 /// Deserializes [group] into a concrete [Group] class.
256 Iterable<SuiteEntry> _deserializeEntries(MultiChannel suiteChannel, 254 Group _deserializeGroup(MultiChannel suiteChannel,
257 StackTraceMapper mapper, List<Map> entries) { 255 StackTraceMapper mapper, Map group) {
258 return entries.map((entry) { 256 var metadata = new Metadata.deserialize(group['metadata']);
259 var metadata = new Metadata.deserialize(entry['metadata']); 257 return new Group(group['name'], group['entries'].map((entry) {
260 if (entry['type'] == 'group') { 258 if (entry['type'] == 'group') {
261 return new Group( 259 return _deserializeGroup(suiteChannel, mapper, entry);
262 entry['name'],
263 metadata,
264 _deserializeEntries(suiteChannel, mapper, entry['entries']));
265 } else {
266 var testChannel = suiteChannel.virtualChannel(entry['channel']);
267 return new IframeTest(entry['name'], metadata, testChannel,
268 mapper: mapper);
269 } 260 }
270 }); 261
262 var testMetadata = new Metadata.deserialize(entry['metadata']);
263 var testChannel = suiteChannel.virtualChannel(entry['channel']);
264 return new IframeTest(entry['name'], testMetadata, testChannel,
265 mapper: mapper);
266 }), metadata: metadata);
271 } 267 }
272 268
273 /// An implementation of [Environment.displayPause]. 269 /// An implementation of [Environment.displayPause].
274 CancelableFuture _displayPause() { 270 CancelableFuture _displayPause() {
275 if (_pauseCompleter != null) return _pauseCompleter.future; 271 if (_pauseCompleter != null) return _pauseCompleter.future;
276 272
277 _pauseCompleter = new CancelableCompleter(() { 273 _pauseCompleter = new CancelableCompleter(() {
278 _channel.sink.add({"command": "resume"}); 274 _channel.sink.add({"command": "resume"});
279 _pauseCompleter = null; 275 _pauseCompleter = null;
280 }); 276 });
(...skipping 30 matching lines...) Expand all
311 307
312 final Uri observatoryUrl; 308 final Uri observatoryUrl;
313 309
314 final Uri remoteDebuggerUrl; 310 final Uri remoteDebuggerUrl;
315 311
316 _BrowserEnvironment(this._manager, this.observatoryUrl, 312 _BrowserEnvironment(this._manager, this.observatoryUrl,
317 this.remoteDebuggerUrl); 313 this.remoteDebuggerUrl);
318 314
319 CancelableFuture displayPause() => _manager._displayPause(); 315 CancelableFuture displayPause() => _manager._displayPause();
320 } 316 }
OLDNEW
« no previous file with comments | « lib/src/backend/test.dart ('k') | lib/src/runner/browser/iframe_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698