80 lines
3.0 KiB
HTML
80 lines
3.0 KiB
HTML
<html>
|
|
<title>Test of concurrent HTML5 audio</title>
|
|
<body>
|
|
|
|
<p>Test that multiple audio elements can play concurrently.</p>
|
|
|
|
<script src=video-test.js></script>
|
|
<script src=media-file.js></script>
|
|
<script>
|
|
var maxPlayers = 2; // Number of concurrent audio elements to test. For larger values a longer media file is needed.
|
|
var timeupdateEventCount = 0;
|
|
var audioElementCount = 0;
|
|
|
|
function errorListener(event)
|
|
{
|
|
logResult(false, "Element " + audioElementCount + " caught 'error' event, audio.error.code = " + this.error.code);
|
|
endTest();
|
|
}
|
|
|
|
function canplaythroughListener(event)
|
|
{
|
|
consoleWrite("EVENT(" + audioElementCount + ", canplaythrough)");
|
|
testElement = this;
|
|
testExpected(audioElementCount + ", testElement.currentTime", 0);
|
|
this.play();
|
|
}
|
|
|
|
function playingListener(event)
|
|
{
|
|
consoleWrite("EVENT(" + audioElementCount + ", playing)");
|
|
}
|
|
|
|
function timeupdateListener(event)
|
|
{
|
|
++timeupdateEventCount;
|
|
|
|
// wait 2 timeupdate events so we are sure the media engine is
|
|
// playing the media.
|
|
if (timeupdateEventCount >= 2) {
|
|
// make sure time is advancing
|
|
testElement = this;
|
|
testExpected(audioElementCount + ", testElement.currentTime", 0, '>');
|
|
this.removeEventListener('timeupdate', timeupdateListener);
|
|
if (++audioElementCount >= maxPlayers) {
|
|
// All audio elements have been started playing. Make sure
|
|
// all of them are still playing.
|
|
consoleWrite("Making sure all " + maxPlayers + " audio elements are in playing state:");
|
|
for (var i = 0; i < maxPlayers; i++) {
|
|
testElement = document.getElementsByTagName('audio')[i];
|
|
testExpected(i + ", testElement.paused", false);
|
|
}
|
|
endTest();
|
|
} else {
|
|
// Start the next audio element
|
|
testAudioElement(audioElementCount);
|
|
}
|
|
}
|
|
}
|
|
|
|
function testAudioElement(count)
|
|
{
|
|
var audioElement = document.getElementsByTagName('audio')[count];
|
|
audioElement.addEventListener('error', errorListener);
|
|
audioElement.addEventListener('canplaythrough', canplaythroughListener);
|
|
timeupdateEventCount = 0;
|
|
audioElement.addEventListener('timeupdate', timeupdateListener);
|
|
audioElement.addEventListener('playing', playingListener);
|
|
audioElement.src = findMediaFile("audio", "content/silence");
|
|
}
|
|
|
|
consoleWrite("Starting a total of " + maxPlayers + " concurrent audio elements.");
|
|
for (var i = 0; i < maxPlayers; i++)
|
|
document.write("<audio controls></audio>");
|
|
|
|
testAudioElement(0);
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|