gecko/content/media/test/test_too_many_elements.html

91 lines
2.4 KiB
HTML

<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=713381
-->
<head>
<meta charset="utf-8">
<title>Test for Bug 713381</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="text/javascript" src="manifest.js"></script>
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=713381">Mozilla Bug 713381</a>
<p id="display"></p>
<div id="content" style="display: none">
</div>
<p>Received loadeddata event for <span id="result">0</span> <span id="expected"></span>audio elements.</p>
<pre id="test">
<script type="application/javascript">
/** Test for Bug 713381 **/
const num = 500;
var loadeddata = 0;
var testName = "?";
var result = document.getElementById("result");
document.getElementById("expected").innerHTML = " of " + num + " ";
var finish = function(testNum) {
return function() {
ok(true, testName + ": received loadeddata event for instance " + testNum );
loadeddata++;
if (loadeddata == num) {
ok(true, testName + ": should receive loadeddata events for all " + num + " elements.");
nextTest();
}
}
};
var testNum = 0;
function nextTest() {
if (testNum >= gTooManyElementAudioTests.length) {
SimpleTest.finish();
return;
}
var test = gTooManyElementAudioTests[testNum];
testNum++;
if (!document.createElement("audio").canPlayType(test.type)) {
setTimeout(nextTest, 0);
return;
}
var name = test.name;
loadeddata = 0;
testName = name;
// Load the resource, and play it to ensure it's entirely downloaded.
// Once it's played through, create a large number of audio elements which
// are the same resource. These will share data with the other resource, and
// so be really cheap to create.
var res = new Audio(name);
res.addEventListener("ended",
function() {
for (var i=0; i<num; ++i) {
var a = new Audio(name);
a.addEventListener("loadeddata", finish(i), false);
}
}, false);
res.play();
}
if (getPlayableAudio(gTooManyElementAudioTests) == null) {
todo(false, "No types supported");
} else {
SimpleTest.waitForExplicitFinish();
nextTest();
}
setInterval(function() { result.innerHTML = testName + ": " + loadeddata; }, 1000);
</script>
</pre>
</body>
</html>