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

Unified Diff: utils/testrunner/http_server.dart

Issue 14247033: Updated testrunner: (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 8 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: utils/testrunner/http_server.dart
===================================================================
--- utils/testrunner/http_server.dart (revision 21707)
+++ utils/testrunner/http_server.dart (working copy)
@@ -21,6 +21,8 @@
/** A simple HTTP server. Currently handles serving static files. */
class HttpTestServer {
HttpServer server;
+ List<Function> matchers = [];
+ List<Function> handlers = [];
/** If set, serve up static files from this directory. */
String staticFileDirectory;
@@ -52,21 +54,20 @@
};
HttpTestServer(int port, this.staticFileDirectory) {
- server = new HttpServer();
- try {
- server.listen("127.0.0.1", port);
+ HttpServer.bind("127.0.0.1", port).then((s) {
+ server = s;
print('Server listening on port $port');
- } catch (e) {
- print('Server listen on port $port failed');
- throw e;
- }
- server.onError = (e) {
- };
- server.defaultRequestHandler =
- (HttpRequest request, HttpResponse response) {
+ server.listen((HttpRequest request) {
+ for (var i = 0; i < matchers.length; i++) {
+ if (matchers[i](request)) {
+ handlers[i](request);
+ return;
+ }
+ }
+ HttpResponse response = request.response;
try {
if (staticFileDirectory != null) {
- String fname = request.path;
+ String fname = request.uri.path;
String path = '$staticFileDirectory$fname';
File f = new File(path);
if (f.existsSync()) {
@@ -78,31 +79,30 @@
new ContentType(ct.substring(0, idx),
ct.substring(idx + 1));
}
- f.openInputStream().pipe(response.outputStream);
+ response.addStream(f.openRead()).then((_) => response.close());
} else {
response.statusCode = HttpStatus.NOT_FOUND;
response.reasonPhrase = '$path does not exist';
- response.outputStream.close();
+ response.close();
}
}
} catch(e,s) {
response.statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
response.reasonPhrase = "$e";
- response.outputStream.writeString(s.toString());
- response.outputStream.close();
+ response.write(s);
+ response.close();
}
- };
+ });
+ });
}
- void addHandler(Function matcher, handler) {
- if (handler is Function) {
- server.addRequestHandler(matcher, handler);
- } else {
- server.addRequestHandler(matcher, handler.onRequest);
- }
+ void addHandler(Function matcher, Function handler) {
+ matchers.add(matcher);
+ handlers.add(handler);
}
void close() {
server.close();
}
}
+
« no previous file with comments | « no previous file | utils/testrunner/layout_test_controller.dart » ('j') | utils/testrunner/layout_test_controller.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698