| <!-- webkit-test-runner [ dumpJSConsoleLogInStdErr=true ] --> | |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <script src="../resources/js-test.js"></script> | |
| <script type="text/javascript" src="resources/audio-testing.js"></script> | |
| </head> | |
| <body> | |
| <script> | |
| description("Basic tests for decodeAudioData function."); | |
| window.jsTestIsAsync = true; | |
| var context = new AudioContext(); | |
| // decodeAudioData should reject the promise when arraybuffer parameter is null. | |
| context.decodeAudioData(null, function(){}, function(){}).then(() => { | |
| testFailed("Passing a null array to AudioContext.decodeAudioData() did not throw"); | |
| }, (e) => { | |
| if (e.name == "TypeError") | |
| testPassed("Passing a null array to AudioContext.decodeAudioData() threw a TypeError"); | |
| else | |
| testFailed("Passing a null array to AudioContext.decodeAudioData() threw a " + e.name + " instead of a TypeError"); | |
| }); | |
| var decodeCaseArray = [{url: "resources/media/24bit-44khz.wav", result: true}, | |
| {url: "resources/media/128kbps-44khz.mp3", result: true}, | |
| {url: "resources/media/vbr-128kbps-44khz.m4a", result: true}, | |
| {url: "resources/media/invalid-audio-file.txt", result: false}]; | |
| function runDecodeTest(index) { | |
| if (index >= decodeCaseArray.length) { | |
| finishJSTest(); | |
| return; | |
| } | |
| var request = new XMLHttpRequest(); | |
| request.open("GET", decodeCaseArray[index].url, true); | |
| request.responseType = "arraybuffer"; | |
| request.onload = function() { | |
| context.decodeAudioData(request.response, successCallback, errorCallback); | |
| function successCallback() { | |
| if (decodeCaseArray[index].result) | |
| testPassed("The " + decodeCaseArray[index].url + " test: successCallback has been called correctly."); | |
| else | |
| testFailed("The " + decodeCaseArray[index].url + " test: successCallback was not called."); | |
| runDecodeTest(++index); | |
| } | |
| function errorCallback() { | |
| if (decodeCaseArray[index].result) | |
| testFailed("The " + decodeCaseArray[index].url + " test: errorCallback was called incorrectly."); | |
| else | |
| testPassed("The " + decodeCaseArray[index].url + " test: errorCallback has been called correctly."); | |
| runDecodeTest(++index); | |
| } | |
| } | |
| request.send(); | |
| } | |
| setTimeout(() => { | |
| runDecodeTest(0); | |
| }, 0); | |
| </script> | |
| </body> | |
| </html> |