4 <title>Test that mediastreamtrack are properly ended</title>
5 <link rel="author" title="Dominique Hazael-Massieux" href="mailto:dom@w3.org"/>
6 <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastreamtrack">
7 <link rel='stylesheet' href='../../../../resources/testharness.css' media='all'/>
10 <p class="instructions">When prompted, accept to share your video and audio
11 stream, and then revoke that permission.</p>
12 <h1 class="instructions">Description</h1>
13 <p class="instructions">This test checks that the video and audio tracks of
14 MediaStream object returned by the success callback in getUserMedia are
15 correctly set into ended state when permission is revoked.</p>
18 <script src=../../../../resources/testharness.js></script>
19 <script src=../../../../resources/testharnessreport.js></script>
20 <script src="../../vendor-prefix.js" data-prefixed-objects='[{"ancestors":["navigator"], "name":"getUserMedia"}]'></script>
22 var t = async_test("Tests that the video MediaStreamTrack objects are properly ended on permission revocation", {timeout: 20000}); // longer timeout since requires user interaction
24 navigator.getUserMedia({audio: true,video: true}, t.step_func(function (stream) {
25 var vidTrack = stream.getVideoTracks()[0];
26 assert_equals(vidTrack.readyState, "live", "The video track object is in live state");
27 var audTrack = stream.getAudioTracks()[0];
28 assert_equals(audTrack.readyState, "live", "The audio track object is in live state");
29 vidTrack.onended = t.step_func(function () {
30 assert_equals(vidTrack.readyState, "ended", "Video track has been ended as expected");
31 assert_equals(audTrack.readyState, "ended", "Audio track has been ended as expected");
32 assert_true(stream.ended, "MediaStream has been ended as expected");
35 }), function (error) {}