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

Unified Diff: lib/src/runner/browser/browser_manager.dart

Issue 1422963004: Add RunnerSuite.{on,is}Debugging properties. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Code review changes Created 5 years, 1 month 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
« no previous file with comments | « no previous file | lib/src/runner/browser/iframe_listener.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 1b1f4c94609676893e86b4616b2a9af547863e8a..a6222bea183ba8e45b7c865c05b58a3443b9a35a 100644
--- a/lib/src/runner/browser/browser_manager.dart
+++ b/lib/src/runner/browser/browser_manager.dart
@@ -11,27 +11,23 @@ import 'package:async/async.dart';
import 'package:http_parser/http_parser.dart';
import 'package:pool/pool.dart';
-import '../../backend/group.dart';
import '../../backend/metadata.dart';
-import '../../backend/test.dart';
import '../../backend/test_platform.dart';
import '../../util/multi_channel.dart';
-import '../../util/remote_exception.dart';
import '../../util/stack_trace_mapper.dart';
import '../../utils.dart';
import '../application_exception.dart';
import '../environment.dart';
-import '../load_exception.dart';
import '../runner_suite.dart';
import 'browser.dart';
import 'chrome.dart';
import 'content_shell.dart';
import 'dartium.dart';
import 'firefox.dart';
-import 'iframe_test.dart';
import 'internet_explorer.dart';
import 'phantom_js.dart';
import 'safari.dart';
+import 'suite.dart';
/// A class that manages the connection to a single running browser.
///
@@ -180,18 +176,16 @@ class BrowserManager {
// prematurely (e.g. via Control-C).
var suiteVirtualChannel = _channel.virtualChannel();
var suiteId = _suiteId++;
- var suiteChannel;
closeIframe() {
if (_closed) return;
- suiteChannel.sink.close();
_channel.sink.add({
"command": "closeSuite",
"id": suiteId
});
}
- var response = await _pool.withResource(() {
+ return await _pool.withResource(() async {
_channel.sink.add({
"command": "loadSuite",
"url": url.toString(),
@@ -199,85 +193,15 @@ class BrowserManager {
"channel": suiteVirtualChannel.id
});
- // Create a nested MultiChannel because the iframe will be using a channel
- // wrapped within the host's channel.
- suiteChannel = new MultiChannel(
- suiteVirtualChannel.stream, suiteVirtualChannel.sink);
-
- var completer = new Completer();
- suiteChannel.stream.listen((response) {
- if (response["type"] == "print") {
- print(response["line"]);
- } else {
- completer.complete(response);
- }
- }, onDone: () {
- if (!completer.isCompleted) completer.complete();
- });
-
- return completer.future.timeout(new Duration(minutes: 1), onTimeout: () {
- throw new LoadException(
- path,
- "Timed out waiting for the test suite to connect on "
- "${_platform.name}.");
- });
- });
-
- if (response == null) {
- closeIframe();
- throw new LoadException(
- path, "Connection closed before test suite loaded.");
- }
-
- if (response["type"] == "loadException") {
- closeIframe();
- throw new LoadException(path, response["message"]);
- }
-
- if (response["type"] == "error") {
- closeIframe();
- var asyncError = RemoteException.deserialize(response["error"]);
- await new Future.error(
- new LoadException(path, asyncError.error),
- asyncError.stackTrace);
- }
-
- return new RunnerSuite(
- await _environment,
- _deserializeGroup(suiteChannel, mapper, response["root"]),
- platform: _platform,
- path: path,
- onClose: () => closeIframe());
- }
-
- /// Deserializes [group] into a concrete [Group] class.
- Group _deserializeGroup(MultiChannel suiteChannel,
- StackTraceMapper mapper, Map group) {
- var metadata = new Metadata.deserialize(group['metadata']);
- return new Group(group['name'], group['entries'].map((entry) {
- if (entry['type'] == 'group') {
- return _deserializeGroup(suiteChannel, mapper, entry);
+ try {
+ return await loadBrowserSuite(
+ suiteVirtualChannel, await _environment, path,
+ mapper: mapper, platform: _platform, onClose: () => closeIframe());
+ } catch (_) {
+ closeIframe();
+ rethrow;
}
-
- return _deserializeTest(suiteChannel, mapper, entry);
- }),
- metadata: metadata,
- setUpAll: _deserializeTest(suiteChannel, mapper, group['setUpAll']),
- tearDownAll:
- _deserializeTest(suiteChannel, mapper, group['tearDownAll']));
- }
-
- /// Deserializes [test] into a concrete [Test] class.
- ///
- /// Returns `null` if [test] is `null`.
- Test _deserializeTest(MultiChannel suiteChannel, StackTraceMapper mapper,
- Map test) {
- if (test == null) return null;
-
- var metadata = new Metadata.deserialize(test['metadata']);
- var testChannel = suiteChannel.virtualChannel(test['channel']);
- return new IframeTest(test['name'], metadata, testChannel,
- mapper: mapper);
+ });
}
/// An implementation of [Environment.displayPause].
« no previous file with comments | « no previous file | lib/src/runner/browser/iframe_listener.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698