Bug 1291951 - Call mozCapturedStreamXXX in onloadedmetadata callback. r=pehrsons.
MozReview-Commit-ID: GxznOTjgNeW
--- a/dom/media/test/test_streams_element_capture.html
+++ b/dom/media/test/test_streams_element_capture.html
@@ -30,41 +30,48 @@ function isGreaterThanOrEqualEps(a, b, m
"Got " + a + ", expected at least " + b + "; " + msg);
}
function startTest(test) {
var v = document.createElement('video');
var vout = document.createElement('video');
v.src = test.name;
- var stream = v.mozCaptureStreamUntilEnded();
- is(stream.currentTime, 0, test.name + " stream initial currentTime");
- vout.srcObject = stream;
- is(vout.srcObject, stream, test.name + " set output element .srcObject correctly");
+ var stream;
- var checkEnded = function(test, vout, stream) { return function() {
+ var checkEnded = function() {
is(stream.currentTime, vout.currentTime, test.name + " stream final currentTime");
if (test.duration) {
isGreaterThanOrEqualEps(vout.currentTime, test.duration,
test.name + " current time at end");
}
is(vout.readyState, vout.HAVE_CURRENT_DATA, test.name + " checking readyState");
ok(vout.ended, test.name + " checking playback has ended");
if (test.type.match(/^video/)) {
checkDrawImage(vout);
}
vout.parentNode.removeChild(vout);
removeNodeAndSource(v);
SimpleTest.finish();
- }}(test, vout, stream);
+ };
vout.addEventListener("ended", checkEnded, false);
document.body.appendChild(vout);
- v.play();
- vout.play();
+
+ var onloadedmetadata = function (ev) {
+ stream = v.mozCaptureStreamUntilEnded();
+ is(stream.currentTime, 0, test.name + " stream initial currentTime");
+ vout.srcObject = stream;
+ is(vout.srcObject, stream, test.name + " set output element .srcObject correctly");
+ v.play();
+ vout.play();
+ }
+
+ v.preload = 'metadata';
+ v.addEventListener('loadedmetadata', onloadedmetadata, false);
// Log events for debugging.
var events = ["suspend", "play", "canplay", "canplaythrough", "loadstart", "loadedmetadata",
"loadeddata", "playing", "ended", "error", "stalled", "emptied", "abort",
"waiting", "pause"];
function logEvent(e) {
Log(e.target.name, "got " + e.type);
}