Bug 1208316 - Simplify stopTracksForStreamInMediaPlayback. r?jib
MozReview-Commit-ID: 9qQfit5l8Tg
--- a/dom/media/tests/mochitest/mediaStreamPlayback.js
+++ b/dom/media/tests/mochitest/mediaStreamPlayback.js
@@ -43,38 +43,20 @@ MediaStreamPlayback.prototype = {
* Stops the local media stream's tracks while it's currently in playback in
* a media element.
*
* Precondition: The media stream and element should both be actively
* being played. All the stream's tracks must be local.
*/
stopTracksForStreamInMediaPlayback : function () {
var elem = this.mediaElement;
- var waitForEnded = () => new Promise(resolve => {
- elem.addEventListener('ended', function ended() {
- elem.removeEventListener('ended', ended);
- resolve();
- });
- });
-
- var noTrackEnded = Promise.all(this.mediaStream.getTracks().map(t => {
- let onNextLoop = wait(0);
- let p = Promise.race([
- onNextLoop,
- haveEvent(t, "ended", onNextLoop)
- .then(() => Promise.reject("Unexpected ended event for track " + t.id),
- () => Promise.resolve())
- ]);
- t.stop();
- return p;
- }));
-
- return timeout(waitForEnded(), ENDED_TIMEOUT_LENGTH, "ended event never fired")
- .then(() => ok(true, "ended event successfully fired"))
- .then(() => noTrackEnded);
+ return Promise.all([
+ haveEvent(elem, "ended", wait(ENDED_TIMEOUT_LENGTH, new Error("Timeout"))),
+ ...this.mediaStream.getTracks().map(t => (t.stop(), haveNoEvent(t, "ended")))
+ ]);
},
/**
* Starts media with a media stream, runs it until a canplaythrough and
* timeupdate event fires, and detaches from the element without stopping media.
*
* @param {Boolean} isResume specifies if this media element is being resumed
* from a previous run