blob: ae1b9c16db857fb826521f2f02bb4513693347c1 [file] [log] [blame]
#!mojo mojo:js_content_handler
define("main", [
"mojo/public/interfaces/network/url_request.mojom",
"mojo/public/js/core",
"mojo/services/network/public/interfaces/network_service.mojom",
"mojo/services/public/js/application",
"services/js/test/network_test_service.mojom",
], function(urlRequestMojom,
core,
networkServiceMojom,
application,
networkTestServiceMojom) {
const Application = application.Application;
const NetworkService = networkServiceMojom.NetworkService;
const URLRequest = urlRequestMojom.URLRequest;
const NetworkTestService = networkTestServiceMojom.NetworkTestService;
class NetworkTestServiceImpl {
constructor(app) {
this.app = app;
var netService = app.shell.connectToService(
"mojo:network_service", NetworkService);
var urlLoader;
netService.createURLLoader(function(x){urlLoader = x;});
this.urlLoader = urlLoader;
}
getFileSize(url) {
var impl = this;
return new Promise(function(resolve) {
var urlRequest = new URLRequest({
url: url,
method: "GET",
auto_follow_redirects: true
});
impl.urlLoader.start(urlRequest).then(function(result) {
core.drainData(result.response.body).then(
function(result) {
resolve({ok: true, size: result.buffer.byteLength});
});
}).catch(function() {
resolve({ok: false});
});
});
}
quit() {
this.app.quit();
}
}
class NetworkTest extends Application {
acceptConnection(url, serviceExchange) {
serviceExchange.provideService(
NetworkTestService,
NetworkTestServiceImpl.bind(null, this));
}
}
return NetworkTest;
});