<!doctype html>
<html>
<head>
<title>Test that mediastreamtrack are properly ended</title>
<link rel="author" title="Dominique Hazael-Massieux" href="mailto:dom@w3.org"/>
<link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#mediastreamtrack">
<link rel='stylesheet' href='/resources/testharness.css' media='all'/>
</head>
<body>
<p class="instructions">When prompted, accept to share your video and audio
stream, and then revoke that permission.</p>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks that the video and audio tracks of
MediaStream object returned by the success callback in getUserMedia are
correctly set into ended state when permission is revoked.</p>

<div id='log'></div>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script src="/common/vendor-prefix.js" data-prefixed-objects='[{"ancestors":["navigator"], "name":"getUserMedia"}]'></script>
<script>
var t = async_test("Tests that the video MediaStreamTrack objects are properly ended on permission revocation", {timeout: 20000}); // longer timeout since requires user interaction
t.step(function () {
  navigator.getUserMedia({audio: true,video: true}, t.step_func(function (stream) {
    var vidTrack = stream.getVideoTracks()[0];
    assert_equals(vidTrack.readyState, "live", "The video track object is in live state");
    var audTrack = stream.getAudioTracks()[0];
    assert_equals(audTrack.readyState, "live", "The audio track object is in live state");
    vidTrack.onended = t.step_func(function () {
        assert_equals(vidTrack.readyState, "ended", "Video track has been ended as expected");
        assert_equals(audTrack.readyState, "ended", "Audio track has been ended as expected");
        assert_true(stream.ended, "MediaStream has been ended as expected");
        t.done();
      });
    }), function (error) {}
  );
});
</script>
</body>
</html>
