| <!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 newMediaStream; |
| var track; |
| var newTrack; |
| |
| function checkTracks(track1, track2) { |
| track = track1; |
| newTrack = track2; |
| debug("check tracks"); |
| shouldNotBe('track.id', 'newTrack.id'); |
| shouldBe('track.kind', 'newTrack.kind'); |
| shouldBe('track.label', 'newTrack.label'); |
| shouldBe('track.readyState', 'newTrack.readyState'); |
| shouldBe('track.enabled', 'newTrack.enabled'); |
| shouldBe('track.muted', 'newTrack.muted'); |
| debug("done"); |
| } |
| |
| function gotStream(stream) { |
| mediaStream = stream; |
| debug(""); |
| |
| // Since we don't have any guarantees on the order from getAudio/VideoTracks(), we |
| // can't have a stream with more than one track of each kind. |
| shouldBe('mediaStream.getAudioTracks().length', '1'); |
| shouldBe('mediaStream.getVideoTracks().length', '1'); |
| |
| evalAndLog("newMediaStream = mediaStream.clone()"); |
| |
| shouldNotBe('mediaStream.id', 'newMediaStream.id'); |
| |
| checkTracks(mediaStream.getAudioTracks()[0], newMediaStream.getAudioTracks()[0]); |
| checkTracks(mediaStream.getVideoTracks()[0], newMediaStream.getVideoTracks()[0]); |
| |
| finishJSTest(); |
| } |
| |
| function start() { |
| getUserMedia("allow", {audio:true, 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> |