OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <string> | 5 #include <string> |
| 6 #include <vector> |
6 | 7 |
7 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
8 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
9 #include "base/values.h" | 10 #include "base/values.h" |
10 #include "content/renderer/media/media_stream_extra_data.h" | 11 #include "content/renderer/media/media_stream_extra_data.h" |
11 #include "content/renderer/media/mock_media_stream_dependency_factory.h" | 12 #include "content/renderer/media/mock_media_stream_dependency_factory.h" |
12 #include "content/renderer/media/mock_peer_connection_impl.h" | 13 #include "content/renderer/media/mock_peer_connection_impl.h" |
13 #include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h" | 14 #include "content/renderer/media/mock_web_rtc_peer_connection_handler_client.h" |
14 #include "content/renderer/media/peer_connection_tracker.h" | 15 #include "content/renderer/media/peer_connection_tracker.h" |
15 #include "content/renderer/media/rtc_media_constraints.h" | 16 #include "content/renderer/media/rtc_media_constraints.h" |
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 UTF8ToUTF16(remote_stream_label)), | 648 UTF8ToUTF16(remote_stream_label)), |
648 PeerConnectionTracker::SOURCE_REMOTE)); | 649 PeerConnectionTracker::SOURCE_REMOTE)); |
649 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( | 650 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( |
650 testing::Property(&WebKit::WebMediaStream::label, | 651 testing::Property(&WebKit::WebMediaStream::label, |
651 UTF8ToUTF16(remote_stream_label)))); | 652 UTF8ToUTF16(remote_stream_label)))); |
652 | 653 |
653 pc_handler_->OnAddStream(remote_stream); | 654 pc_handler_->OnAddStream(remote_stream); |
654 pc_handler_->OnRemoveStream(remote_stream); | 655 pc_handler_->OnRemoveStream(remote_stream); |
655 } | 656 } |
656 | 657 |
| 658 // This test that WebKit is notified about remote track state changes. |
| 659 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { |
| 660 std::string remote_stream_label("remote_stream"); |
| 661 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
| 662 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); |
| 663 |
| 664 testing::InSequence sequence; |
| 665 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
| 666 testing::Property(&WebKit::WebMediaStream::label, |
| 667 UTF8ToUTF16(remote_stream_label)))); |
| 668 pc_handler_->OnAddStream(remote_stream); |
| 669 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
| 670 |
| 671 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
| 672 webkit_stream.audioTracks(audio_tracks); |
| 673 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive, |
| 674 audio_tracks[0].source().readyState()); |
| 675 |
| 676 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
| 677 webkit_stream.videoTracks(video_tracks); |
| 678 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive, |
| 679 video_tracks[0].source().readyState()); |
| 680 |
| 681 remote_stream->GetAudioTracks()[0]->set_state( |
| 682 webrtc::MediaStreamTrackInterface::kEnded); |
| 683 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateEnded, |
| 684 audio_tracks[0].source().readyState()); |
| 685 |
| 686 remote_stream->GetVideoTracks()[0]->set_state( |
| 687 webrtc::MediaStreamTrackInterface::kEnded); |
| 688 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateEnded, |
| 689 video_tracks[0].source().readyState()); |
| 690 } |
| 691 |
| 692 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { |
| 693 std::string remote_stream_label("remote_stream"); |
| 694 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
| 695 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); |
| 696 |
| 697 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
| 698 testing::Property(&WebKit::WebMediaStream::label, |
| 699 UTF8ToUTF16(remote_stream_label)))); |
| 700 pc_handler_->OnAddStream(remote_stream); |
| 701 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
| 702 |
| 703 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
| 704 webkit_stream.audioTracks(audio_tracks); |
| 705 EXPECT_EQ(1u, audio_tracks.size()); |
| 706 |
| 707 // Remove the Webrtc audio track from the Webrtc MediaStream. |
| 708 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = |
| 709 remote_stream->GetAudioTracks()[0].get(); |
| 710 remote_stream->RemoveTrack(webrtc_track); |
| 711 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks1; |
| 712 webkit_stream.audioTracks(modified_audio_tracks1); |
| 713 EXPECT_EQ(0u, modified_audio_tracks1.size()); |
| 714 |
| 715 // Add the WebRtc audio track again. |
| 716 remote_stream->AddTrack(webrtc_track); |
| 717 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks2; |
| 718 webkit_stream.audioTracks(modified_audio_tracks2); |
| 719 EXPECT_EQ(1u, modified_audio_tracks2.size()); |
| 720 } |
| 721 |
| 722 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { |
| 723 std::string remote_stream_label("remote_stream"); |
| 724 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
| 725 AddRemoteMockMediaStream(remote_stream_label, "video", "video")); |
| 726 |
| 727 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
| 728 testing::Property(&WebKit::WebMediaStream::label, |
| 729 UTF8ToUTF16(remote_stream_label)))); |
| 730 pc_handler_->OnAddStream(remote_stream); |
| 731 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
| 732 |
| 733 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
| 734 webkit_stream.videoTracks(video_tracks); |
| 735 EXPECT_EQ(1u, video_tracks.size()); |
| 736 |
| 737 // Remove the Webrtc video track from the Webrtc MediaStream. |
| 738 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = |
| 739 remote_stream->GetVideoTracks()[0].get(); |
| 740 remote_stream->RemoveTrack(webrtc_track); |
| 741 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks1; |
| 742 webkit_stream.videoTracks(modified_video_tracks1); |
| 743 EXPECT_EQ(0u, modified_video_tracks1.size()); |
| 744 |
| 745 // Add the WebRtc video track again. |
| 746 remote_stream->AddTrack(webrtc_track); |
| 747 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks2; |
| 748 webkit_stream.videoTracks(modified_video_tracks2); |
| 749 EXPECT_EQ(1u, modified_video_tracks2.size()); |
| 750 } |
| 751 |
657 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { | 752 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { |
658 testing::InSequence sequence; | 753 testing::InSequence sequence; |
659 EXPECT_CALL(*mock_tracker_.get(), | 754 EXPECT_CALL(*mock_tracker_.get(), |
660 TrackAddIceCandidate(pc_handler_.get(), _, | 755 TrackAddIceCandidate(pc_handler_.get(), _, |
661 PeerConnectionTracker::SOURCE_LOCAL)); | 756 PeerConnectionTracker::SOURCE_LOCAL)); |
662 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); | 757 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); |
663 | 758 |
664 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( | 759 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( |
665 mock_dependency_factory_->CreateIceCandidate("mid", 1, kDummySdp)); | 760 mock_dependency_factory_->CreateIceCandidate("mid", 1, kDummySdp)); |
666 pc_handler_->OnIceCandidate(native_candidate.get()); | 761 pc_handler_->OnIceCandidate(native_candidate.get()); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 EXPECT_CALL(*mock_tracker_.get(), | 802 EXPECT_CALL(*mock_tracker_.get(), |
708 TrackCreateDTMFSender(pc_handler_.get(), | 803 TrackCreateDTMFSender(pc_handler_.get(), |
709 testing::Ref(tracks[0]))); | 804 testing::Ref(tracks[0]))); |
710 | 805 |
711 scoped_ptr<WebKit::WebRTCDTMFSenderHandler> sender( | 806 scoped_ptr<WebKit::WebRTCDTMFSenderHandler> sender( |
712 pc_handler_->createDTMFSender(tracks[0])); | 807 pc_handler_->createDTMFSender(tracks[0])); |
713 EXPECT_TRUE(sender.get()); | 808 EXPECT_TRUE(sender.get()); |
714 } | 809 } |
715 | 810 |
716 } // namespace content | 811 } // namespace content |
OLD | NEW |