Bug 1301675 - Test stopping tracks from canvas captureStream. r?jib draft
authorAndreas Pehrson <pehrsons@gmail.com>
Mon, 12 Sep 2016 16:47:32 +0200
changeset 432214 edc69e46479ac2549e8ec1d4755bd04c531a9c26
parent 432213 c06a7195850d88d7fb6fea00134388f4cafc515e
child 432215 f03b5f28751babf2c58254bce556f210c5f58994
push id34235
push userbmo:pehrson@telenordigital.com
push dateTue, 01 Nov 2016 13:40:03 +0000
reviewersjib
bugs1301675
milestone52.0a1
Bug 1301675 - Test stopping tracks from canvas captureStream. r?jib MozReview-Commit-ID: 84UxNnhXEtu
dom/canvas/test/test_capture.html
--- a/dom/canvas/test/test_capture.html
+++ b/dom/canvas/test/test_capture.html
@@ -93,16 +93,29 @@ function checkDrawImageNotCleanRed() {
     .then(() => h.waitForPixelColor(vmanual, h.green, 0, "should still be green"))
     .then(() => h.requestFrame(vmanual))
     .then(() => h.waitForPixelColorTimeout(vmanual, h.red, 0, 1000,
                                            "should not become red"))
     .catch(err => ok(false, "checkDrawImageNotCleanRed failed: ", err))
     .then(() => drawing.stop());
 }
 
+function checkEndedOnStop() {
+  let promises = [vauto, vmanual, vrate].map(elem => {
+    elem.srcObject.getTracks()[0].stop();
+    return new Promise(resolve =>
+      elem.addEventListener("ended", function endedListener(event) {
+        ok(true, "Element " + elem.id + " ended.");
+        resolve();
+        elem.removeEventListener("ended", endedListener);
+      }));
+  });
+  return Promise.all(promises);
+}
+
 function finish() {
   ok(true, 'Test complete.');
   SimpleTest.finish();
 }
 
 function beginTest() {
   h = new CaptureStreamTestHelper2D();
 
@@ -112,16 +125,17 @@ function beginTest() {
   vrate = h.createAndAppendElement('video', 'vrate');
 
   Promise.resolve()
     .then(checkDrawColorInitialRed)
     .then(checkDrawColorGreen)
     .then(checkRequestFrameOrderGuarantee)
     .then(checkDrawColorGreen) // Restore video elements to green.
     .then(checkDrawImageNotCleanRed)
+    .then(checkEndedOnStop)
     .then(finish);
 }
 
 SimpleTest.waitForExplicitFinish();
 
 beginTest();
 </script>