aboutsummaryrefslogtreecommitdiff
path: root/src/library_browser.js
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-08-29 13:45:43 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-08-29 13:45:43 -0700
commitffc362f182bffb1f355508847da3f1074efecdd4 (patch)
tree8b5cfe994a763f68e75d21bc6ac347952d6cde8a /src/library_browser.js
parent68d25630a8cf813c58d693e0fb876e6b39531b3d (diff)
handle a runtime failure in blob constructor in audio
Diffstat (limited to 'src/library_browser.js')
-rw-r--r--src/library_browser.js15
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);