refactor load_file

This commit is contained in:
copy 2015-01-13 03:00:15 +01:00
parent 2b2be2bb44
commit daacd99a7d
2 changed files with 33 additions and 26 deletions

View file

@ -11,22 +11,26 @@
* @param {?=} progress
* @param {?=} headers
*/
function load_file(filename, done, progress, headers)
function load_file(filename, options)
{
var http = new XMLHttpRequest();
http.open("get", filename, true);
http.responseType = "arraybuffer";
if(headers)
if(!options.as_text)
{
var header_names = Object.keys(headers);
http.responseType = "arraybuffer";
}
if(options.headers)
{
var header_names = Object.keys(options.headers);
for(var i = 0; i < header_names.length; i++)
{
var name = header_names[i];
http.setRequestHeader(name, headers[name]);
http.setRequestHeader(name, options.headers[name]);
}
}
@ -40,16 +44,16 @@
}
else if(http.response)
{
done(http.response);
options.done && options.done(http.response);
}
}
};
if(progress)
if(options.progress)
{
http.onprogress = function(e)
{
progress(e);
options.progress(e);
};
}
@ -125,19 +129,18 @@
var range_start = offset,
range_end = offset + len - 1;
load_file(this.filename,
function(buffer)
load_file(this.filename, {
done: function done(buffer)
{
var block = new Uint8Array(buffer);
this.handle_read(offset, len, block);
fn(block);
}.bind(this),
null,
{
headers: {
Range: "bytes=" + range_start + "-" + range_end,
}
);
});
}
AsyncXHRBuffer.prototype.set = async_buffer_set;

View file

@ -241,20 +241,24 @@ function V86Starter(options)
{
var f = files_to_load[index];
v86util.load_file(f.url, function done(result)
{
f.handler(result);
cont(index + 1);
}, function progress(e)
{
starter.emulator_bus.send("download-progress", {
file_index: index,
file_count: total,
v86util.load_file(f.url, {
done: function done(result)
{
f.handler(result);
cont(index + 1);
},
progress: function progress(e)
{
starter.emulator_bus.send("download-progress", {
file_index: index,
file_count: total,
lengthComputable: e.lengthComputable,
total: f.size || e.total,
loaded: e.loaded,
});
lengthComputable: e.lengthComputable,
total: f.size || e.total,
loaded: e.loaded,
});
},
as_text: f.as_text,
});
}
else