fune/testing/web-platform/tests/webaudio/js/buffer-loader.js
James Graham dda86cd70e Bug 945222 - Initial import of web-platform-tests testsuite 1/4: test data
--HG--
extra : rebase_source : d635a4f39c587d4d381b486dd63de747865b77a2
2014-09-04 12:48:31 +01:00

44 lines
1.1 KiB
JavaScript

/* Taken from
https://raw.github.com/WebKit/webkit/master/LayoutTests/webaudio/resources/buffer-loader.js */
function BufferLoader(context, urlList, callback) {
this.context = context;
this.urlList = urlList;
this.onload = callback;
this.bufferList = new Array();
this.loadCount = 0;
}
BufferLoader.prototype.loadBuffer = function(url, index) {
// Load buffer asynchronously
var request = new XMLHttpRequest();
request.open("GET", url, true);
request.responseType = "arraybuffer";
var loader = this;
request.onload = function() {
loader.context.decodeAudioData(request.response, decodeSuccessCallback, decodeErrorCallback);
};
request.onerror = function() {
alert('BufferLoader: XHR error');
};
var decodeSuccessCallback = function(buffer) {
loader.bufferList[index] = buffer;
if (++loader.loadCount == loader.urlList.length)
loader.onload(loader.bufferList);
};
var decodeErrorCallback = function() {
alert('decodeErrorCallback: decode error');
};
request.send();
}
BufferLoader.prototype.load = function() {
for (var i = 0; i < this.urlList.length; ++i)
this.loadBuffer(this.urlList[i], i);
}