<!doctype html> <html> <head> <title>getUserMedia({video:true}) creates a stream with a properly initialized video track</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#idl-def-MediaStreamTrack"> <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#life-cycle-and-media-flow"> <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-kind"> <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-enabled"> <link rel="help" href="http://dev.w3.org/2011/webrtc/editor/getusermedia.html#widl-MediaStreamTrack-readyState"> </head> <body> <p class="instructions">When prompted, accept to share your video stream.</p> <h1 class="instructions">Description</h1> <p class="instructions">This test checks that the video track of MediaStream object returned by the success callback in getUserMedia is correctly initialized.</p> <div id='log'></div> <script src=/resources/testharness.js></script> <script src=/resources/testharnessreport.js></script> <script src=/resources/WebIDLParser.js></script> <script src=/resources/idlharness.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 initialized", {timeout:10000}); var track = null var idl_array = new IdlArray(); idl_array.add_idls("interface EventTarget {\ void addEventListener(DOMString type, EventListener? callback, optional boolean capture = false);\ void removeEventListener(DOMString type, EventListener? callback, optional boolean capture = false);\ boolean dispatchEvent(Event event);\ };"); idl_array.add_idls("interface MediaStreamTrack : EventTarget {\ readonly attribute DOMString kind;\ readonly attribute DOMString id;\ readonly attribute DOMString label;\ attribute boolean enabled;\ readonly attribute boolean muted;\ attribute EventHandler onmute;\ attribute EventHandler onunmute;\ readonly attribute boolean _readonly;\ readonly attribute boolean remote;\ readonly attribute MediaStreamTrackState readyState;\ attribute EventHandler onended;\ attribute EventHandler onoverconstrained;\ MediaStreamTrack clone ();\ void stop ();\ MediaTrackCapabilities getCapabilities ();\ MediaTrackConstraints getConstraints ();\ MediaTrackSettings getSettings ();\ Promise<void> applyConstraints (optional MediaTrackConstraints constraints);\ };"); t.step(function () { navigator.getUserMedia({video: true}, t.step_func(function (stream) { var videoTracks = stream.getVideoTracks(); assert_equals(videoTracks.length, 1, "There is exactly one video track in the media stream"); track = videoTracks[0]; idl_array.add_objects({MediaStreamTrack: ["track"]}); idl_array.test(); assert_equals(track.readyState, "live", "The track object is in live state"); assert_equals(track.kind, "video", "The track object is of video kind"); // Not clear that this is required by the spec, // see https://www.w3.org/Bugs/Public/show_bug.cgi?id=22212 assert_true(track.enabled, "The track object is enabed"); t.done(); }), function (error) {}); }); </script> </body> </html>