Explicitly detect mimetype support using test sounds.

This commit is contained in:
Michael Jumper
2012-09-12 02:48:24 -07:00
5 changed files with 39 additions and 0 deletions

View File

@@ -77,4 +77,13 @@
<url-pattern>/tunnel</url-pattern>
</servlet-mapping>
<mime-mapping>
<extension>mp3</extension>
<mime-type>audio/mpeg</mime-type>
</mime-mapping>
<mime-mapping>
<extension>ogg</extension>
<mime-type>audio/ogg</mime-type>
</mime-mapping>
</web-app>

View File

@@ -61,6 +61,9 @@ var GuacamoleUI = {
};
// Supported mimetypes
GuacamoleUI.supportedAudio = {};
// Constant UI initialization and behavior
(function() {
@@ -484,6 +487,33 @@ var GuacamoleUI = {
GuacamoleUI.eventTarget.style.top = window.pageYOffset + "px";
});
function testAudio(url, mimetype) {
// If browser says we can't play it, don't try
var audio = new Audio();
if (!audio.canPlayType(mimetype))
return;
// Otherwise, test
audio.src = url;
// On error, explicitly unsupported
audio.addEventListener("error", function() {
GuacamoleUI.supportedAudio[mimetype] = false;
});
// On successful play, explicitly supported
audio.addEventListener("ended", function() {
GuacamoleUI.supportedAudio[mimetype] = true;
});
audio.play();
}
testAudio("sounds/silence.mp3", "audio/mpeg");
testAudio("sounds/silence.ogg", "audio/ogg");
})();
// Tie UI events / behavior to a specific Guacamole client

Binary file not shown.

Binary file not shown.

Binary file not shown.