OLD | NEW |
1 <html> | 1 <html> |
2 <head> | 2 <head> |
3 <script type="text/javascript" src="webrtc_test_utilities.js"></script> | 3 <script type="text/javascript" src="webrtc_test_utilities.js"></script> |
4 <script type="text/javascript" src="webrtc_test_audio.js"></script> | 4 <script type="text/javascript" src="webrtc_test_audio.js"></script> |
5 <script type="text/javascript"> | 5 <script type="text/javascript"> |
6 $ = function(id) { | 6 $ = function(id) { |
7 return document.getElementById(id); | 7 return document.getElementById(id); |
8 }; | 8 }; |
9 | 9 |
10 window.onerror = function(errorMsg, url, lineNumber, column, errorObj) { | 10 window.onerror = function(errorMsg, url, lineNumber, column, errorObj) { |
(...skipping 515 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
526 navigator.webkitGetUserMedia({audio: true, video: true}, | 526 navigator.webkitGetUserMedia({audio: true, video: true}, |
527 createNewVideoStreamAndAddToBothConnections, printGetUserMediaError); | 527 createNewVideoStreamAndAddToBothConnections, printGetUserMediaError); |
528 | 528 |
529 waitForVideo('remote-view-1'); | 529 waitForVideo('remote-view-1'); |
530 waitForVideo('remote-view-2'); | 530 waitForVideo('remote-view-2'); |
531 | 531 |
532 // Set an event handler for when video is playing. | 532 // Set an event handler for when video is playing. |
533 setAllEventsOccuredHandler(function() { | 533 setAllEventsOccuredHandler(function() { |
534 // Add an audio track to the local stream and remove the video track and | 534 // Add an audio track to the local stream and remove the video track and |
535 // then renegotiate. But first - setup the expectations. | 535 // then renegotiate. But first - setup the expectations. |
536 local_stream = gFirstConnection.getLocalStreams()[0]; | 536 var localStream = gFirstConnection.getLocalStreams()[0]; |
| 537 var remoteStream1 = gFirstConnection.getRemoteStreams()[0]; |
537 | 538 |
538 remote_stream_1 = gFirstConnection.getRemoteStreams()[0]; | |
539 // Add an expected event that onaddtrack will be called on the remote | 539 // Add an expected event that onaddtrack will be called on the remote |
540 // mediastream received on gFirstConnection when the audio track is | 540 // mediastream received on gFirstConnection when the audio track is |
541 // received. | 541 // received. |
542 addExpectedEvent(); | 542 addExpectedEvent(); |
543 remote_stream_1.onaddtrack = function(){ | 543 remoteStream1.onaddtrack = function(){ |
544 assertEquals(remote_stream_1.getAudioTracks()[0].id, | 544 assertEquals(remoteStream1.getAudioTracks()[0].id, |
545 local_stream.getAudioTracks()[0].id); | 545 localStream.getAudioTracks()[0].id); |
546 eventOccured(); | 546 eventOccured(); |
547 } | 547 } |
548 | 548 |
549 // Add an expectation that the received video track is removed from | 549 // Add an expectation that the received video track is removed from |
550 // gFirstConnection. | 550 // gFirstConnection. |
551 addExpectedEvent(); | 551 addExpectedEvent(); |
552 remote_stream_1.onremovetrack = function() { | 552 remoteStream1.onremovetrack = function() { |
553 eventOccured(); | 553 eventOccured(); |
554 } | 554 } |
555 | 555 |
556 // Add an expected event that onaddtrack will be called on the remote | 556 // Add an expected event that onaddtrack will be called on the remote |
557 // mediastream received on gSecondConnection when the audio track is | 557 // mediastream received on gSecondConnection when the audio track is |
558 // received. | 558 // received. |
559 remote_stream_2 = gSecondConnection.getRemoteStreams()[0]; | 559 remoteStream2 = gSecondConnection.getRemoteStreams()[0]; |
560 addExpectedEvent(); | 560 addExpectedEvent(); |
561 remote_stream_2.onaddtrack = function() { | 561 remoteStream2.onaddtrack = function() { |
562 assertEquals(remote_stream_2.getAudioTracks()[0].id, | 562 assertEquals(remoteStream2.getAudioTracks()[0].id, |
563 local_stream.getAudioTracks()[0].id); | 563 localStream.getAudioTracks()[0].id); |
564 eventOccured(); | 564 eventOccured(); |
565 } | 565 } |
566 | 566 |
567 // Add an expectation that the received video track is removed from | 567 // Add an expectation that the received video track is removed from |
568 // gSecondConnection. | 568 // gSecondConnection. |
569 addExpectedEvent(); | 569 addExpectedEvent(); |
570 remote_stream_2.onremovetrack = function() { | 570 remoteStream2.onremovetrack = function() { |
571 eventOccured(); | 571 eventOccured(); |
572 } | 572 } |
573 // When all the above events have occurred- the test pass. | 573 // When all the above events have occurred- the test pass. |
574 setAllEventsOccuredHandler(reportTestSuccess); | 574 setAllEventsOccuredHandler(reportTestSuccess); |
575 | 575 |
576 local_stream.addTrack(gLocalStream.getAudioTracks()[0]); | 576 localStream.addTrack(gLocalStream.getAudioTracks()[0]); |
577 local_stream.removeTrack(local_stream.getVideoTracks()[0]); | 577 localStream.removeTrack(localStream.getVideoTracks()[0]); |
578 negotiate(); | 578 negotiate(); |
579 }); | 579 }); |
580 } | 580 } |
581 | 581 |
582 // This function is used for setting up a test that: | 582 // This function is used for setting up a test that: |
583 // 1. Creates a data channel on |gFirstConnection| and sends data to | 583 // 1. Creates a data channel on |gFirstConnection| and sends data to |
584 // |gSecondConnection|. | 584 // |gSecondConnection|. |
585 // 2. When data is received on |gSecondConnection| a message | 585 // 2. When data is received on |gSecondConnection| a message |
586 // is sent to |gFirstConnection|. | 586 // is sent to |gFirstConnection|. |
587 // 3. When data is received on |gFirstConnection|, the data | 587 // 3. When data is received on |gFirstConnection|, the data |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 eventOccured(); | 674 eventOccured(); |
675 } | 675 } |
676 } | 676 } |
677 } | 677 } |
678 | 678 |
679 // Test call with a stream that has been created by getUserMedia, clone | 679 // Test call with a stream that has been created by getUserMedia, clone |
680 // the stream to a cloned stream, send them via the same peer connection. | 680 // the stream to a cloned stream, send them via the same peer connection. |
681 function addTwoMediaStreamsToOneConnection() { | 681 function addTwoMediaStreamsToOneConnection() { |
682 createConnections(null); | 682 createConnections(null); |
683 navigator.webkitGetUserMedia({audio: true, video: true}, | 683 navigator.webkitGetUserMedia({audio: true, video: true}, |
684 CloneStreamAndAddTwoStreamstoOneConnection, printGetUserMediaError); | 684 cloneStreamAndAddTwoStreamsToOneConnection, printGetUserMediaError); |
685 } | 685 } |
686 | 686 |
687 function onToneChange(tone) { | 687 function onToneChange(tone) { |
688 gSentTones += tone.tone; | 688 gSentTones += tone.tone; |
689 } | 689 } |
690 | 690 |
691 function createConnections(constraints) { | 691 function createConnections(constraints) { |
692 gFirstConnection = createConnection(constraints, 'remote-view-1'); | 692 gFirstConnection = createConnection(constraints, 'remote-view-1'); |
693 assertEquals('stable', gFirstConnection.signalingState); | 693 assertEquals('stable', gFirstConnection.signalingState); |
694 | 694 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 negotiate(); | 736 negotiate(); |
737 } | 737 } |
738 | 738 |
739 function verifyHasOneAudioAndVideoTrack(stream) { | 739 function verifyHasOneAudioAndVideoTrack(stream) { |
740 assertEquals(1, stream.getAudioTracks().length); | 740 assertEquals(1, stream.getAudioTracks().length); |
741 assertEquals(1, stream.getVideoTracks().length); | 741 assertEquals(1, stream.getVideoTracks().length); |
742 } | 742 } |
743 | 743 |
744 // Called if getUserMedia succeeds, then clone the stream, send two streams | 744 // Called if getUserMedia succeeds, then clone the stream, send two streams |
745 // from one peer connection. | 745 // from one peer connection. |
746 function CloneStreamAndAddTwoStreamstoOneConnection(localStream) { | 746 function cloneStreamAndAddTwoStreamsToOneConnection(localStream) { |
747 displayAndRemember(localStream); | 747 displayAndRemember(localStream); |
748 | 748 |
749 var clonedStream = null; | 749 var clonedStream = null; |
750 if (typeof localStream.clone === "function") { | 750 if (typeof localStream.clone === "function") { |
751 clonedStream = localStream.clone(); | 751 clonedStream = localStream.clone(); |
752 } else { | 752 } else { |
753 clonedStream = new webkitMediaStream(localStream); | 753 clonedStream = new webkitMediaStream(localStream); |
754 } | 754 } |
755 | 755 |
756 gFirstConnection.addStream(localStream); | 756 gFirstConnection.addStream(localStream); |
(...skipping 16 matching lines...) Expand all Loading... |
773 assertEquals(2, gSecondConnection.getRemoteStreams().length); | 773 assertEquals(2, gSecondConnection.getRemoteStreams().length); |
774 verifyHasOneAudioAndVideoTrack(gSecondConnection.getRemoteStreams()[0]); | 774 verifyHasOneAudioAndVideoTrack(gSecondConnection.getRemoteStreams()[0]); |
775 verifyHasOneAudioAndVideoTrack(gSecondConnection.getRemoteStreams()[1]); | 775 verifyHasOneAudioAndVideoTrack(gSecondConnection.getRemoteStreams()[1]); |
776 | 776 |
777 reportTestSuccess(); | 777 reportTestSuccess(); |
778 }); | 778 }); |
779 | 779 |
780 negotiate(); | 780 negotiate(); |
781 } | 781 } |
782 | 782 |
783 // Called if getUserMedia succeeds when we want to send a modified | 783 // A new MediaStream is created with video track from |localStream| and is |
784 // MediaStream. A new MediaStream is created and the video track from | 784 // added to both peer connections. |
785 // |localStream| is added. | |
786 function createNewVideoStreamAndAddToBothConnections(localStream) { | 785 function createNewVideoStreamAndAddToBothConnections(localStream) { |
787 displayAndRemember(localStream); | 786 displayAndRemember(localStream); |
788 var new_stream = new webkitMediaStream(); | 787 var newStream = new webkitMediaStream(); |
789 new_stream.addTrack(localStream.getVideoTracks()[0]); | 788 newStream.addTrack(localStream.getVideoTracks()[0]); |
790 gFirstConnection.addStream(new_stream); | 789 gFirstConnection.addStream(newStream); |
791 gSecondConnection.addStream(new_stream); | 790 gSecondConnection.addStream(newStream); |
792 negotiate(); | 791 negotiate(); |
793 } | 792 } |
794 | 793 |
795 function negotiate() { | 794 function negotiate() { |
796 negotiateBetween(gFirstConnection, gSecondConnection); | 795 negotiateBetween(gFirstConnection, gSecondConnection); |
797 } | 796 } |
798 | 797 |
799 function negotiateBetween(caller, callee) { | 798 function negotiateBetween(caller, callee) { |
800 console.log("Negotiating call..."); | 799 console.log("Negotiating call..."); |
801 // Not stable = negotiation is ongoing. The behavior of re-negotiating while | 800 // Not stable = negotiation is ongoing. The behavior of re-negotiating while |
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
954 <td><canvas width="320" height="240" id="remote-view-2-canvas" | 953 <td><canvas width="320" height="240" id="remote-view-2-canvas" |
955 style="display:none"></canvas></td> | 954 style="display:none"></canvas></td> |
956 <td><canvas width="320" height="240" id="remote-view-3-canvas" | 955 <td><canvas width="320" height="240" id="remote-view-3-canvas" |
957 style="display:none"></canvas></td> | 956 style="display:none"></canvas></td> |
958 <td><canvas width="320" height="240" id="remote-view-4-canvas" | 957 <td><canvas width="320" height="240" id="remote-view-4-canvas" |
959 style="display:none"></canvas></td> | 958 style="display:none"></canvas></td> |
960 </tr> | 959 </tr> |
961 </table> | 960 </table> |
962 </body> | 961 </body> |
963 </html> | 962 </html> |
OLD | NEW |