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 #include <vector> |
7 | 7 |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "base/utf_string_conversions.h" | 9 #include "base/utf_string_conversions.h" |
10 #include "base/values.h" | 10 #include "base/values.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 virtual bool hasSelector() const OVERRIDE { | 80 virtual bool hasSelector() const OVERRIDE { |
81 return has_selector_; | 81 return has_selector_; |
82 } | 82 } |
83 virtual WebKit::WebMediaStream stream() const OVERRIDE { | 83 virtual WebKit::WebMediaStream stream() const OVERRIDE { |
84 return stream_; | 84 return stream_; |
85 } | 85 } |
86 virtual WebKit::WebMediaStreamTrack component() const OVERRIDE { | 86 virtual WebKit::WebMediaStreamTrack component() const OVERRIDE { |
87 return component_; | 87 return component_; |
88 } | 88 } |
89 virtual scoped_refptr<LocalRTCStatsResponse> createResponse() OVERRIDE { | 89 virtual scoped_refptr<LocalRTCStatsResponse> createResponse() OVERRIDE { |
90 DCHECK(!response_); | 90 DCHECK(!response_.get()); |
91 response_ = new talk_base::RefCountedObject<MockRTCStatsResponse>(); | 91 response_ = new talk_base::RefCountedObject<MockRTCStatsResponse>(); |
92 return response_; | 92 return response_; |
93 } | 93 } |
94 | 94 |
95 virtual void requestSucceeded(const LocalRTCStatsResponse* response) | 95 virtual void requestSucceeded(const LocalRTCStatsResponse* response) |
96 OVERRIDE { | 96 OVERRIDE { |
97 EXPECT_EQ(response, response_.get()); | 97 EXPECT_EQ(response, response_.get()); |
98 request_succeeded_called_ = true; | 98 request_succeeded_called_ = true; |
99 } | 99 } |
100 | 100 |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
237 video_sources); | 237 video_sources); |
238 | 238 |
239 scoped_refptr<webrtc::MediaStreamInterface> native_stream( | 239 scoped_refptr<webrtc::MediaStreamInterface> native_stream( |
240 mock_dependency_factory_->CreateLocalMediaStream(stream_label)); | 240 mock_dependency_factory_->CreateLocalMediaStream(stream_label)); |
241 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; | 241 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
242 local_stream.audioSources(audio_tracks); | 242 local_stream.audioSources(audio_tracks); |
243 const std::string audio_track_id = UTF16ToUTF8(audio_tracks[0].id()); | 243 const std::string audio_track_id = UTF16ToUTF8(audio_tracks[0].id()); |
244 scoped_refptr<webrtc::AudioTrackInterface> audio_track( | 244 scoped_refptr<webrtc::AudioTrackInterface> audio_track( |
245 mock_dependency_factory_->CreateLocalAudioTrack(audio_track_id, | 245 mock_dependency_factory_->CreateLocalAudioTrack(audio_track_id, |
246 NULL)); | 246 NULL)); |
247 native_stream->AddTrack(audio_track); | 247 native_stream->AddTrack(audio_track.get()); |
248 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; | 248 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
249 local_stream.audioSources(video_tracks); | 249 local_stream.audioSources(video_tracks); |
250 const std::string video_track_id = UTF16ToUTF8(video_tracks[0].id()); | 250 const std::string video_track_id = UTF16ToUTF8(video_tracks[0].id()); |
251 webrtc::VideoSourceInterface* source = NULL; | 251 webrtc::VideoSourceInterface* source = NULL; |
252 scoped_refptr<webrtc::VideoTrackInterface> video_track( | 252 scoped_refptr<webrtc::VideoTrackInterface> video_track( |
253 mock_dependency_factory_->CreateLocalVideoTrack( | 253 mock_dependency_factory_->CreateLocalVideoTrack( |
254 video_track_id, source)); | 254 video_track_id, source)); |
255 native_stream->AddTrack(video_track); | 255 native_stream->AddTrack(video_track.get()); |
256 | 256 |
257 local_stream.setExtraData(new MediaStreamExtraData(native_stream, true)); | 257 local_stream.setExtraData( |
| 258 new MediaStreamExtraData(native_stream.get(), true)); |
258 return local_stream; | 259 return local_stream; |
259 } | 260 } |
260 | 261 |
261 // Creates a remote MediaStream and adds it to the mocked native | 262 // Creates a remote MediaStream and adds it to the mocked native |
262 // peer connection. | 263 // peer connection. |
263 scoped_refptr<webrtc::MediaStreamInterface> | 264 scoped_refptr<webrtc::MediaStreamInterface> |
264 AddRemoteMockMediaStream(const std::string& stream_label, | 265 AddRemoteMockMediaStream(const std::string& stream_label, |
265 const std::string& video_track_label, | 266 const std::string& video_track_label, |
266 const std::string& audio_track_label) { | 267 const std::string& audio_track_label) { |
267 scoped_refptr<webrtc::MediaStreamInterface> stream( | 268 scoped_refptr<webrtc::MediaStreamInterface> stream( |
268 mock_dependency_factory_->CreateLocalMediaStream(stream_label)); | 269 mock_dependency_factory_->CreateLocalMediaStream(stream_label)); |
269 if (!video_track_label.empty()) { | 270 if (!video_track_label.empty()) { |
270 webrtc::VideoSourceInterface* source = NULL; | 271 webrtc::VideoSourceInterface* source = NULL; |
271 scoped_refptr<webrtc::VideoTrackInterface> video_track( | 272 scoped_refptr<webrtc::VideoTrackInterface> video_track( |
272 mock_dependency_factory_->CreateLocalVideoTrack( | 273 mock_dependency_factory_->CreateLocalVideoTrack( |
273 video_track_label, source)); | 274 video_track_label, source)); |
274 stream->AddTrack(video_track); | 275 stream->AddTrack(video_track.get()); |
275 } | 276 } |
276 if (!audio_track_label.empty()) { | 277 if (!audio_track_label.empty()) { |
277 scoped_refptr<webrtc::AudioTrackInterface> audio_track( | 278 scoped_refptr<webrtc::AudioTrackInterface> audio_track( |
278 mock_dependency_factory_->CreateLocalAudioTrack(audio_track_label, | 279 mock_dependency_factory_->CreateLocalAudioTrack(audio_track_label, |
279 NULL)); | 280 NULL)); |
280 stream->AddTrack(audio_track); | 281 stream->AddTrack(audio_track.get()); |
281 } | 282 } |
282 mock_peer_connection_->AddRemoteStream(stream); | 283 mock_peer_connection_->AddRemoteStream(stream.get()); |
283 return stream; | 284 return stream; |
284 } | 285 } |
285 | 286 |
286 scoped_ptr<MockWebRTCPeerConnectionHandlerClient> mock_client_; | 287 scoped_ptr<MockWebRTCPeerConnectionHandlerClient> mock_client_; |
287 scoped_ptr<MockMediaStreamDependencyFactory> mock_dependency_factory_; | 288 scoped_ptr<MockMediaStreamDependencyFactory> mock_dependency_factory_; |
288 scoped_ptr<NiceMock<MockPeerConnectionTracker> > mock_tracker_; | 289 scoped_ptr<NiceMock<MockPeerConnectionTracker> > mock_tracker_; |
289 scoped_ptr<RTCPeerConnectionHandlerUnderTest> pc_handler_; | 290 scoped_ptr<RTCPeerConnectionHandlerUnderTest> pc_handler_; |
290 | 291 |
291 // Weak reference to the mocked native peer connection implementation. | 292 // Weak reference to the mocked native peer connection implementation. |
292 MockPeerConnectionImpl* mock_peer_connection_; | 293 MockPeerConnectionImpl* mock_peer_connection_; |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
451 scoped_refptr<MockRTCStatsRequest> request( | 452 scoped_refptr<MockRTCStatsRequest> request( |
452 new talk_base::RefCountedObject<MockRTCStatsRequest>()); | 453 new talk_base::RefCountedObject<MockRTCStatsRequest>()); |
453 request->setSelector(local_stream, tracks[0]); | 454 request->setSelector(local_stream, tracks[0]); |
454 pc_handler_->getStats(request.get()); | 455 pc_handler_->getStats(request.get()); |
455 EXPECT_EQ(1, request->result()->report_count()); | 456 EXPECT_EQ(1, request->result()->report_count()); |
456 } | 457 } |
457 | 458 |
458 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) { | 459 TEST_F(RTCPeerConnectionHandlerTest, GetStatsWithRemoteSelector) { |
459 scoped_refptr<webrtc::MediaStreamInterface> stream( | 460 scoped_refptr<webrtc::MediaStreamInterface> stream( |
460 AddRemoteMockMediaStream("remote_stream", "video", "audio")); | 461 AddRemoteMockMediaStream("remote_stream", "video", "audio")); |
461 pc_handler_->OnAddStream(stream); | 462 pc_handler_->OnAddStream(stream.get()); |
462 const WebKit::WebMediaStream& remote_stream = mock_client_->remote_stream(); | 463 const WebKit::WebMediaStream& remote_stream = mock_client_->remote_stream(); |
463 | 464 |
464 WebKit::WebVector<WebKit::WebMediaStreamTrack> tracks; | 465 WebKit::WebVector<WebKit::WebMediaStreamTrack> tracks; |
465 remote_stream.audioSources(tracks); | 466 remote_stream.audioSources(tracks); |
466 ASSERT_LE(1ul, tracks.size()); | 467 ASSERT_LE(1ul, tracks.size()); |
467 | 468 |
468 scoped_refptr<MockRTCStatsRequest> request( | 469 scoped_refptr<MockRTCStatsRequest> request( |
469 new talk_base::RefCountedObject<MockRTCStatsRequest>()); | 470 new talk_base::RefCountedObject<MockRTCStatsRequest>()); |
470 request->setSelector(remote_stream, tracks[0]); | 471 request->setSelector(remote_stream, tracks[0]); |
471 pc_handler_->getStats(request.get()); | 472 pc_handler_->getStats(request.get()); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
648 | 649 |
649 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream( | 650 EXPECT_CALL(*mock_tracker_.get(), TrackRemoveStream( |
650 pc_handler_.get(), | 651 pc_handler_.get(), |
651 testing::Property(&WebKit::WebMediaStream::label, | 652 testing::Property(&WebKit::WebMediaStream::label, |
652 UTF8ToUTF16(remote_stream_label)), | 653 UTF8ToUTF16(remote_stream_label)), |
653 PeerConnectionTracker::SOURCE_REMOTE)); | 654 PeerConnectionTracker::SOURCE_REMOTE)); |
654 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( | 655 EXPECT_CALL(*mock_client_.get(), didRemoveRemoteStream( |
655 testing::Property(&WebKit::WebMediaStream::label, | 656 testing::Property(&WebKit::WebMediaStream::label, |
656 UTF8ToUTF16(remote_stream_label)))); | 657 UTF8ToUTF16(remote_stream_label)))); |
657 | 658 |
658 pc_handler_->OnAddStream(remote_stream); | 659 pc_handler_->OnAddStream(remote_stream.get()); |
659 pc_handler_->OnRemoveStream(remote_stream); | 660 pc_handler_->OnRemoveStream(remote_stream.get()); |
660 } | 661 } |
661 | 662 |
662 // This test that WebKit is notified about remote track state changes. | 663 // This test that WebKit is notified about remote track state changes. |
663 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { | 664 TEST_F(RTCPeerConnectionHandlerTest, RemoteTrackState) { |
664 std::string remote_stream_label("remote_stream"); | 665 std::string remote_stream_label("remote_stream"); |
665 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( | 666 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
666 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); | 667 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); |
667 | 668 |
668 testing::InSequence sequence; | 669 testing::InSequence sequence; |
669 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( | 670 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
670 testing::Property(&WebKit::WebMediaStream::label, | 671 testing::Property(&WebKit::WebMediaStream::label, |
671 UTF8ToUTF16(remote_stream_label)))); | 672 UTF8ToUTF16(remote_stream_label)))); |
672 pc_handler_->OnAddStream(remote_stream); | 673 pc_handler_->OnAddStream(remote_stream.get()); |
673 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); | 674 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
674 | 675 |
675 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; | 676 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
676 webkit_stream.audioTracks(audio_tracks); | 677 webkit_stream.audioTracks(audio_tracks); |
677 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive, | 678 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive, |
678 audio_tracks[0].source().readyState()); | 679 audio_tracks[0].source().readyState()); |
679 | 680 |
680 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; | 681 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
681 webkit_stream.videoTracks(video_tracks); | 682 webkit_stream.videoTracks(video_tracks); |
682 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive, | 683 EXPECT_EQ(WebKit::WebMediaStreamSource::ReadyStateLive, |
(...skipping 11 matching lines...) Expand all Loading... |
694 } | 695 } |
695 | 696 |
696 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { | 697 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddAudioTrackFromRemoteStream) { |
697 std::string remote_stream_label("remote_stream"); | 698 std::string remote_stream_label("remote_stream"); |
698 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( | 699 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
699 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); | 700 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); |
700 | 701 |
701 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( | 702 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
702 testing::Property(&WebKit::WebMediaStream::label, | 703 testing::Property(&WebKit::WebMediaStream::label, |
703 UTF8ToUTF16(remote_stream_label)))); | 704 UTF8ToUTF16(remote_stream_label)))); |
704 pc_handler_->OnAddStream(remote_stream); | 705 pc_handler_->OnAddStream(remote_stream.get()); |
705 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); | 706 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
706 | 707 |
707 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; | 708 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
708 webkit_stream.audioTracks(audio_tracks); | 709 webkit_stream.audioTracks(audio_tracks); |
709 EXPECT_EQ(1u, audio_tracks.size()); | 710 EXPECT_EQ(1u, audio_tracks.size()); |
710 | 711 |
711 // Remove the Webrtc audio track from the Webrtc MediaStream. | 712 // Remove the Webrtc audio track from the Webrtc MediaStream. |
712 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = | 713 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = |
713 remote_stream->GetAudioTracks()[0].get(); | 714 remote_stream->GetAudioTracks()[0].get(); |
714 remote_stream->RemoveTrack(webrtc_track); | 715 remote_stream->RemoveTrack(webrtc_track.get()); |
715 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks1; | 716 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks1; |
716 webkit_stream.audioTracks(modified_audio_tracks1); | 717 webkit_stream.audioTracks(modified_audio_tracks1); |
717 EXPECT_EQ(0u, modified_audio_tracks1.size()); | 718 EXPECT_EQ(0u, modified_audio_tracks1.size()); |
718 | 719 |
719 // Add the WebRtc audio track again. | 720 // Add the WebRtc audio track again. |
720 remote_stream->AddTrack(webrtc_track); | 721 remote_stream->AddTrack(webrtc_track.get()); |
721 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks2; | 722 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks2; |
722 webkit_stream.audioTracks(modified_audio_tracks2); | 723 webkit_stream.audioTracks(modified_audio_tracks2); |
723 EXPECT_EQ(1u, modified_audio_tracks2.size()); | 724 EXPECT_EQ(1u, modified_audio_tracks2.size()); |
724 } | 725 } |
725 | 726 |
726 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { | 727 TEST_F(RTCPeerConnectionHandlerTest, RemoveAndAddVideoTrackFromRemoteStream) { |
727 std::string remote_stream_label("remote_stream"); | 728 std::string remote_stream_label("remote_stream"); |
728 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( | 729 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
729 AddRemoteMockMediaStream(remote_stream_label, "video", "video")); | 730 AddRemoteMockMediaStream(remote_stream_label, "video", "video")); |
730 | 731 |
731 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( | 732 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
732 testing::Property(&WebKit::WebMediaStream::label, | 733 testing::Property(&WebKit::WebMediaStream::label, |
733 UTF8ToUTF16(remote_stream_label)))); | 734 UTF8ToUTF16(remote_stream_label)))); |
734 pc_handler_->OnAddStream(remote_stream); | 735 pc_handler_->OnAddStream(remote_stream.get()); |
735 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); | 736 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
736 | 737 |
737 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; | 738 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
738 webkit_stream.videoTracks(video_tracks); | 739 webkit_stream.videoTracks(video_tracks); |
739 EXPECT_EQ(1u, video_tracks.size()); | 740 EXPECT_EQ(1u, video_tracks.size()); |
740 | 741 |
741 // Remove the Webrtc video track from the Webrtc MediaStream. | 742 // Remove the Webrtc video track from the Webrtc MediaStream. |
742 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = | 743 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = |
743 remote_stream->GetVideoTracks()[0].get(); | 744 remote_stream->GetVideoTracks()[0].get(); |
744 remote_stream->RemoveTrack(webrtc_track); | 745 remote_stream->RemoveTrack(webrtc_track.get()); |
745 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks1; | 746 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks1; |
746 webkit_stream.videoTracks(modified_video_tracks1); | 747 webkit_stream.videoTracks(modified_video_tracks1); |
747 EXPECT_EQ(0u, modified_video_tracks1.size()); | 748 EXPECT_EQ(0u, modified_video_tracks1.size()); |
748 | 749 |
749 // Add the WebRtc video track again. | 750 // Add the WebRtc video track again. |
750 remote_stream->AddTrack(webrtc_track); | 751 remote_stream->AddTrack(webrtc_track.get()); |
751 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks2; | 752 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks2; |
752 webkit_stream.videoTracks(modified_video_tracks2); | 753 webkit_stream.videoTracks(modified_video_tracks2); |
753 EXPECT_EQ(1u, modified_video_tracks2.size()); | 754 EXPECT_EQ(1u, modified_video_tracks2.size()); |
754 } | 755 } |
755 | 756 |
756 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { | 757 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { |
757 testing::InSequence sequence; | 758 testing::InSequence sequence; |
758 EXPECT_CALL(*mock_tracker_.get(), | 759 EXPECT_CALL(*mock_tracker_.get(), |
759 TrackAddIceCandidate(pc_handler_.get(), _, | 760 TrackAddIceCandidate(pc_handler_.get(), _, |
760 PeerConnectionTracker::SOURCE_LOCAL)); | 761 PeerConnectionTracker::SOURCE_LOCAL)); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
806 EXPECT_CALL(*mock_tracker_.get(), | 807 EXPECT_CALL(*mock_tracker_.get(), |
807 TrackCreateDTMFSender(pc_handler_.get(), | 808 TrackCreateDTMFSender(pc_handler_.get(), |
808 testing::Ref(tracks[0]))); | 809 testing::Ref(tracks[0]))); |
809 | 810 |
810 scoped_ptr<WebKit::WebRTCDTMFSenderHandler> sender( | 811 scoped_ptr<WebKit::WebRTCDTMFSenderHandler> sender( |
811 pc_handler_->createDTMFSender(tracks[0])); | 812 pc_handler_->createDTMFSender(tracks[0])); |
812 EXPECT_TRUE(sender.get()); | 813 EXPECT_TRUE(sender.get()); |
813 } | 814 } |
814 | 815 |
815 } // namespace content | 816 } // namespace content |
OLD | NEW |