| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../../resources/js-test-pre.js"></script> |
| <script src="./resources/getUserMedia-helper.js"></script> |
| <script> |
| var mediaStream; |
| var videoTrack; |
| var videoTrack2; |
| var audioTrack; |
| |
| function gotStream(stream) { |
| mediaStream = stream; |
| testPassed('getUserMedia succeeded.'); |
| |
| debug(""); |
| evalAndLog("videoTrack = mediaStream.getVideoTracks()[0]"); |
| |
| debug("Initialize event handler attributes on videoTrack"); |
| videoTrack.onmute = function () {}; |
| videoTrack.onunmute = function () {}; |
| videoTrack.onended = function () {}; |
| videoTrack.onoverconstrained = function () {}; |
| |
| debug(""); |
| evalAndLog("videoTrack2 = videoTrack.clone()"); |
| |
| shouldNotBe('videoTrack.id', 'videoTrack2.id'); |
| shouldBe('videoTrack.kind', 'videoTrack2.kind'); |
| shouldBe('videoTrack.label', 'videoTrack2.label'); |
| shouldBe('videoTrack.muted', 'videoTrack2.muted'); |
| shouldBe('videoTrack.enabled', 'videoTrack2.enabled'); |
| shouldBe('videoTrack.readyState', 'videoTrack2.readyState'); |
| |
| shouldNotBe('videoTrack.onmute', 'videoTrack2.onmute'); |
| shouldNotBe('videoTrack.onunmute', 'videoTrack2.onunmute'); |
| shouldNotBe('videoTrack.onended', 'videoTrack2.onended'); |
| shouldNotBe('videoTrack.onoverconstrained', 'videoTrack2.onoverconstrained'); |
| |
| videoTrack.stop(); |
| shouldNotBe('videoTrack.readyState', 'videoTrack2.readyState'); |
| |
| finishJSTest(); |
| } |
| |
| function start() { |
| description("Tests MediaStreamTrack.clone()"); |
| getUserMedia("allow", {video:true}, gotStream); |
| } |
| |
| window.jsTestIsAsync = true; |
| window.successfullyParsed = true; |
| </script> |
| </head> |
| <body onload="start()"> |
| <p id="description"></p> |
| <div id="console"></div> |
| <script src="../../resources/js-test-post.js"></script> |
| </body> |
| </html> |