Bug 1291951 - Call mozCapturedStreamXXX in onloadedmetadata callback. r=pehrsons. draft
authorChia-hung Tai <ctai@mozilla.com>
Mon, 15 Aug 2016 14:37:01 +0800
changeset 401026 dd1ca2147e0e8842c7575ca20de329c2440a5282
parent 401025 a7eab5b0d105b0f4b8e39f7742dadbb8bd4da341
child 401028 ad786ba3036316dcf6d1f0e5cf4de5ae7eecf3f8
child 401517 76429defd5244dd574e5189fe31b8359b6352b5c
push id26341
push userbmo:ctai@mozilla.com
push dateTue, 16 Aug 2016 05:45:18 +0000
reviewerspehrsons
bugs1291951
milestone51.0a1
Bug 1291951 - Call mozCapturedStreamXXX in onloadedmetadata callback. r=pehrsons. MozReview-Commit-ID: GxznOTjgNeW
dom/media/test/test_streams_element_capture.html
--- 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);
   }