Chromium Code Reviews| Index: sky/framework/xmlhttprequest.sky |
| diff --git a/sky/framework/xmlhttprequest.sky b/sky/framework/xmlhttprequest.sky |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..94069714ab8b65432d8777c4699ebc1f70cde193 |
| --- /dev/null |
| +++ b/sky/framework/xmlhttprequest.sky |
| @@ -0,0 +1,45 @@ |
| +<link rel="import" href="/mojo/public/html/core.html" as="core" /> |
| +<link rel="import" href="/mojo/public/html/unicode.html" as="unicode" /> |
| +<link rel="import" href="/mojo/services/public/interfaces/network/network_service.mojom.html" as="net" /> |
| +<link rel="import" href="/mojo/services/public/interfaces/network/url_loader.mojom.html" as="loader" /> |
| +<link rel="import" href="shell.sky" as="shell" /> |
| +<script> |
| +function XMLHttpRequest() { |
| + this.networkService_ = shell.connectToService( |
| + "mojo://network_service/", net.NetworkService); |
| + this.request_ = null; |
| + this.loader_ = null; |
| + this.responseText = null; |
| +}; |
| + |
| +XMLHttpRequest.prototype.onload = function() { }; |
| +XMLHttpRequest.prototype.onerror = function() { }; |
|
esprehn
2014/10/29 19:39:46
onerror should take an argument "error"
|
| + |
| +XMLHttpRequest.prototype.open = function(method, url) { |
| + this.request_ = new loader.URLRequest(); |
| + this.request_.url = url; |
| + this.request_.method = method; |
| + this.request_.auto_follow_redirects = true; |
| +}; |
| + |
| +XMLHttpRequest.prototype.send = function() { |
| + // FIXME: Factor this into the JS bindings. |
| + var pipe = new core.createMessagePipe(); |
| + this.networkService_.createURLLoader(pipe.handle1); |
| + this.loader_ = shell.wrapHandle(pipe.handle0, loader.URLLoader); |
| + |
| + var self = this; |
| + this.loader_.start(this.request_).then(function(result) { |
| + core.drainData(result.response.body).then(function(result) { |
| + self.responseText = unicode.decodeUtf8String(new Uint8Array(result.buffer)); |
| + self.onload(); |
| + }).catch(function() { |
| + self.onerror(); |
|
esprehn
2014/10/29 19:39:46
function(e) and then onerror(e)
|
| + }); |
| + }).catch(function() { |
| + self.onerror(); |
|
esprehn
2014/10/29 19:39:46
you should pass the error here.
|
| + }); |
| +}; |
| + |
| +this.exports = XMLHttpRequest; |
| +</script> |