From daacd99a7dfbbf9409a4974093af81679cec1b09 Mon Sep 17 00:00:00 2001 From: copy Date: Tue, 13 Jan 2015 03:00:15 +0100 Subject: [PATCH] refactor load_file --- src/browser/lib.js | 29 ++++++++++++++++------------- src/browser/starter.js | 30 +++++++++++++++++------------- 2 files changed, 33 insertions(+), 26 deletions(-) diff --git a/src/browser/lib.js b/src/browser/lib.js index ddd37fba..685d558c 100644 --- a/src/browser/lib.js +++ b/src/browser/lib.js @@ -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; diff --git a/src/browser/starter.js b/src/browser/starter.js index 07e9f7b9..f20a2acf 100644 --- a/src/browser/starter.js +++ b/src/browser/starter.js @@ -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