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

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

Issue 1145483003: Use http_multi_server for serving on localhost. (Closed) Base URL: git@github.com:dart-lang/test@master
Patch Set: Created 5 years, 7 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 | « no previous file | pubspec.yaml » ('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.server; 5 library test.runner.browser.server;
6 6
7 import 'dart:async'; 7 import 'dart:async';
8 import 'dart:convert'; 8 import 'dart:convert';
9 import 'dart:io'; 9 import 'dart:io';
10 10
11 import 'package:http_multi_server/http_multi_server.dart';
11 import 'package:path/path.dart' as p; 12 import 'package:path/path.dart' as p;
12 import 'package:pool/pool.dart'; 13 import 'package:pool/pool.dart';
13 import 'package:shelf/shelf.dart' as shelf; 14 import 'package:shelf/shelf.dart' as shelf;
14 import 'package:shelf/shelf_io.dart' as shelf_io; 15 import 'package:shelf/shelf_io.dart' as shelf_io;
15 import 'package:shelf_static/shelf_static.dart'; 16 import 'package:shelf_static/shelf_static.dart';
16 import 'package:shelf_web_socket/shelf_web_socket.dart'; 17 import 'package:shelf_web_socket/shelf_web_socket.dart';
17 18
18 import '../../backend/metadata.dart'; 19 import '../../backend/metadata.dart';
19 import '../../backend/suite.dart'; 20 import '../../backend/suite.dart';
20 import '../../backend/test_platform.dart'; 21 import '../../backend/test_platform.dart';
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 138
138 BrowserServer._(String root, String packageRoot, Uri pubServeUrl, bool color) 139 BrowserServer._(String root, String packageRoot, Uri pubServeUrl, bool color)
139 : _root = root == null ? p.current : root, 140 : _root = root == null ? p.current : root,
140 _packageRoot = packageRootFor(root, packageRoot), 141 _packageRoot = packageRootFor(root, packageRoot),
141 _pubServeUrl = pubServeUrl, 142 _pubServeUrl = pubServeUrl,
142 _compiledDir = pubServeUrl == null ? createTempDir() : null, 143 _compiledDir = pubServeUrl == null ? createTempDir() : null,
143 _http = pubServeUrl == null ? null : new HttpClient(), 144 _http = pubServeUrl == null ? null : new HttpClient(),
144 _compilers = new CompilerPool(color: color); 145 _compilers = new CompilerPool(color: color);
145 146
146 /// Starts the underlying server. 147 /// Starts the underlying server.
147 Future _load() { 148 Future _load() async {
148 var cascade = new shelf.Cascade() 149 var cascade = new shelf.Cascade()
149 .add(_webSocketHandler.handler); 150 .add(_webSocketHandler.handler);
150 151
151 if (_pubServeUrl == null) { 152 if (_pubServeUrl == null) {
152 cascade = cascade 153 cascade = cascade
153 .add(_createPackagesHandler()) 154 .add(_createPackagesHandler())
154 .add(_jsHandler.handler) 155 .add(_jsHandler.handler)
155 .add(createStaticHandler(_root)) 156 .add(createStaticHandler(_root))
156 .add(_wrapperHandler); 157 .add(_wrapperHandler);
157 } 158 }
158 159
159 var pipeline = new shelf.Pipeline() 160 var pipeline = new shelf.Pipeline()
160 .addMiddleware(nestingMiddleware(_secret)) 161 .addMiddleware(nestingMiddleware(_secret))
161 .addHandler(cascade.handler); 162 .addHandler(cascade.handler);
162 163
163 return shelf_io.serve(pipeline, 'localhost', 0).then((server) { 164 _server = await HttpMultiServer.loopback(0);
164 _server = server; 165 shelf_io.serveRequests(_server, pipeline);
165 });
166 } 166 }
167 167
168 /// Returns a handler that serves the contents of the "packages/" directory 168 /// Returns a handler that serves the contents of the "packages/" directory
169 /// for any URL that contains "packages/". 169 /// for any URL that contains "packages/".
170 /// 170 ///
171 /// This is a factory so it can wrap a static handler. 171 /// This is a factory so it can wrap a static handler.
172 shelf.Handler _createPackagesHandler() { 172 shelf.Handler _createPackagesHandler() {
173 var staticHandler = 173 var staticHandler =
174 createStaticHandler(_packageRoot, serveFilesOutsidePath: true); 174 createStaticHandler(_packageRoot, serveFilesOutsidePath: true);
175 175
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 if (_pubServeUrl == null) { 417 if (_pubServeUrl == null) {
418 new Directory(_compiledDir).deleteSync(recursive: true); 418 new Directory(_compiledDir).deleteSync(recursive: true);
419 } else { 419 } else {
420 _http.close(); 420 _http.close();
421 } 421 }
422 422
423 _closeCompleter.complete(); 423 _closeCompleter.complete();
424 }).catchError(_closeCompleter.completeError); 424 }).catchError(_closeCompleter.completeError);
425 } 425 }
426 } 426 }
OLDNEW
« no previous file with comments | « no previous file | pubspec.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698