diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-08-29 13:45:43 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-08-29 13:45:43 -0700 |
commit | ffc362f182bffb1f355508847da3f1074efecdd4 (patch) | |
tree | 8b5cfe994a763f68e75d21bc6ac347952d6cde8a /src/library_browser.js | |
parent | 68d25630a8cf813c58d693e0fb876e6b39531b3d (diff) |
handle a runtime failure in blob constructor in audio
Diffstat (limited to 'src/library_browser.js')
-rw-r--r-- | src/library_browser.js | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/library_browser.js b/src/library_browser.js index f3654f81..bdb83fd9 100644 --- a/src/library_browser.js +++ b/src/library_browser.js @@ -133,8 +133,18 @@ mergeInto(LibraryManager.library, { Module["preloadedAudios"][name] = audio; if (onload) onload(byteArray); } + function fail() { + if (done) return; + done = true; + Module["preloadedAudios"][name] = new Audio(); // empty shim + if (onerror) onerror(); + } if (Browser.hasBlobConstructor) { - var b = new Blob([byteArray], { type: getMimetype(name) }); + try { + var b = new Blob([byteArray], { type: getMimetype(name) }); + } catch(e) { + return fail(); + } var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this! var audio = new Audio(); audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926 @@ -174,8 +184,7 @@ mergeInto(LibraryManager.library, { finish(audio); // try to use it even though it is not necessarily ready to play }, 10000); } else { - Module["preloadedAudios"][name] = new Audio(); // empty shim - if (onerror) onerror(); + return fail(); } }; Module['preloadPlugins'].push(audioPlugin); |