Chromium Code Reviews| Index: sdk/lib/_internal/js_runtime/lib/js_helper.dart |
| diff --git a/sdk/lib/_internal/js_runtime/lib/js_helper.dart b/sdk/lib/_internal/js_runtime/lib/js_helper.dart |
| index 6692d2723c426a4e4f984899aac1ac55fb05e77b..b4bca79df598542d2bd710a5072bb3144c82b8a7 100644 |
| --- a/sdk/lib/_internal/js_runtime/lib/js_helper.dart |
| +++ b/sdk/lib/_internal/js_runtime/lib/js_helper.dart |
| @@ -3903,6 +3903,41 @@ Future<Null> _loadHunk(String hunkName) { |
| return completer.future; |
| } |
| +Future<String> readHttp(String uri) { |
| + Completer<String> completer = new Completer<String>(); |
| + |
| + void success(String data) { |
| + completer.complete(data); |
| + } |
| + |
| + void failure([error, StackTrace stackTrace]) { |
| + completer.completeError( |
| + new Exception("Loading $uri failed: $error"), |
| + stackTrace); |
| + } |
| + |
| + enterJsAsync(); |
| + Future<String> leavingFuture = completer.future.whenComplete(() { |
| + leaveJsAsync(); |
| + }); |
| + |
| + var xhr = JS('var', 'new XMLHttpRequest()'); |
| + JS('void', '#.open("GET", #)', xhr, uri); |
| + JS('void', '#.addEventListener("load", #, false)', |
| + xhr, convertDartClosureToJS((event) { |
| + int status = JS('int', '#.status', xhr); |
| + if (status != 200) { |
| + failure("Status code: $status"); |
| + } |
| + String data = JS('String', '#.responseText', xhr); |
| + success(data); |
| + }, 1)); |
| + |
| + JS('void', '#.addEventListener("error", #, false)', xhr, failure); |
| + JS('void', '#.addEventListener("abort", #, false)', xhr, failure); |
| + JS('void', '#.send()', xhr); |
|
Siggi Cherem (dart-lang)
2015/08/22 02:21:16
+ return leavingFuture; ?
Harry Terkelsen
2015/08/25 00:03:57
Done.
|
| +} |
| + |
| class MainError extends Error implements NoSuchMethodError { |
| final String _message; |