diff --git a/testing/web-platform/meta/mediacapture-record/MediaRecorder-stop.html.ini b/testing/web-platform/meta/mediacapture-record/MediaRecorder-stop.html.ini index 20ec35e16241..7e18bee2bf83 100644 --- a/testing/web-platform/meta/mediacapture-record/MediaRecorder-stop.html.ini +++ b/testing/web-platform/meta/mediacapture-record/MediaRecorder-stop.html.ini @@ -1,7 +1,7 @@ [MediaRecorder-stop.html] expected: TIMEOUT [MediaRecorder will stop recording and fire a stop event when stop() is called] - expected: FAIL + expected: NOTRUN [MediaRecorder will stop recording and fire a stop event when all tracks are ended] expected: TIMEOUT diff --git a/testing/web-platform/tests/mediacapture-record/MediaRecorder-stop.html b/testing/web-platform/tests/mediacapture-record/MediaRecorder-stop.html index 8e05fc5491d8..7e87d8ef5bc2 100644 --- a/testing/web-platform/tests/mediacapture-record/MediaRecorder-stop.html +++ b/testing/web-platform/tests/mediacapture-record/MediaRecorder-stop.html @@ -16,35 +16,36 @@ return canvas.captureStream(); } - async_test(t => { + promise_test(async t => { let video = createVideoStream(); let recorder = new MediaRecorder(video); - recorder.onstop = t.step_func(errorEvent => { - assert_equals(errorEvent.type, 'stop', 'the error type should be stop'); - assert_true(errorEvent.isTrusted, 'isTrusted should be true when the event is created by C++'); - assert_equals(recorder.state, "inactive", "MediaRecorder has been stopped when all tracks are ended"); - t.done(); - }); assert_equals(video.getVideoTracks().length, 1, "video mediastream starts with one track"); recorder.start(); assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully"); + video.getVideoTracks()[0].stop(); + assert_equals(recorder.state, "recording", "MediaRecorder state should be recording immediately following last track ending"); + let event = await new Promise(r => recorder.onstop = r); + + assert_equals(event.type, "stop", "the event type should be stop"); + assert_true(event.isTrusted, "isTrusted should be true when the event is created by C++"); + assert_equals(recorder.state, "inactive", "MediaRecorder is inactive after stop event"); }, "MediaRecorder will stop recording and fire a stop event when all tracks are ended"); - async_test(t => { + promise_test(async t => { let video = createVideoStream(); let recorder = new MediaRecorder(video); - recorder.onstop = t.step_func(errorEvent => { - assert_equals(errorEvent.type, 'stop', 'the error type should be stop'); - assert_true(errorEvent.isTrusted, 'isTrusted should be true when the event is created by C++'); - assert_equals(recorder.state, "inactive", "MediaRecorder has been stopped when stop() is called"); - t.done(); - }); recorder.start(); assert_equals(recorder.state, "recording", "MediaRecorder has been started successfully"); + recorder.stop(); - assert_equals(recorder.state, "recording", "State should remain the same until stop event is fired"); + assert_equals(recorder.state, "inactive", "MediaRecorder state should be inactive immediately following stop() call"); + + let event = await new Promise (r => recorder.onstop = r); + assert_equals(event.type, "stop", "the event type should be stop"); + assert_true(event.isTrusted, "isTrusted should be true when the event is created by C++"); + assert_equals(recorder.state, "inactive", "MediaRecorder is inactive after stop event"); }, "MediaRecorder will stop recording and fire a stop event when stop() is called"); - \ No newline at end of file +