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 // TODO(perkj): Enable this test once https://codereview.chromium.org/14314003 |
| 693 // is landed. |
| 694 TEST_F(RTCPeerConnectionHandlerTest, |
| 695 DISABLED_RemoveAndAddAudioTrackFromRemoteStream) { |
| 696 std::string remote_stream_label("remote_stream"); |
| 697 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
| 698 AddRemoteMockMediaStream(remote_stream_label, "video", "audio")); |
| 699 |
| 700 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
| 701 testing::Property(&WebKit::WebMediaStream::label, |
| 702 UTF8ToUTF16(remote_stream_label)))); |
| 703 pc_handler_->OnAddStream(remote_stream); |
| 704 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
| 705 |
| 706 WebKit::WebVector<WebKit::WebMediaStreamTrack> audio_tracks; |
| 707 webkit_stream.audioTracks(audio_tracks); |
| 708 EXPECT_EQ(1u, audio_tracks.size()); |
| 709 |
| 710 // Remove the Webrtc audio track from the Webrtc MediaStream. |
| 711 scoped_refptr<webrtc::AudioTrackInterface> webrtc_track = |
| 712 remote_stream->GetAudioTracks()[0].get(); |
| 713 remote_stream->RemoveTrack(webrtc_track); |
| 714 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks1; |
| 715 webkit_stream.audioTracks(modified_audio_tracks1); |
| 716 EXPECT_EQ(0u, modified_audio_tracks1.size()); |
| 717 |
| 718 // Add the WebRtc audio track again. |
| 719 remote_stream->AddTrack(webrtc_track); |
| 720 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_audio_tracks2; |
| 721 webkit_stream.audioTracks(modified_audio_tracks2); |
| 722 EXPECT_EQ(1u, modified_audio_tracks2.size()); |
| 723 } |
| 724 |
| 725 // TODO(perkj): Enable this test once https://codereview.chromium.org/14314003 |
| 726 // is landed. |
| 727 TEST_F(RTCPeerConnectionHandlerTest, |
| 728 DISABLED_RemoveAndAddVideoTrackFromRemoteStream) { |
| 729 std::string remote_stream_label("remote_stream"); |
| 730 scoped_refptr<webrtc::MediaStreamInterface> remote_stream( |
| 731 AddRemoteMockMediaStream(remote_stream_label, "video", "video")); |
| 732 |
| 733 EXPECT_CALL(*mock_client_.get(), didAddRemoteStream( |
| 734 testing::Property(&WebKit::WebMediaStream::label, |
| 735 UTF8ToUTF16(remote_stream_label)))); |
| 736 pc_handler_->OnAddStream(remote_stream); |
| 737 const WebKit::WebMediaStream& webkit_stream = mock_client_->remote_stream(); |
| 738 |
| 739 WebKit::WebVector<WebKit::WebMediaStreamTrack> video_tracks; |
| 740 webkit_stream.videoTracks(video_tracks); |
| 741 EXPECT_EQ(1u, video_tracks.size()); |
| 742 |
| 743 // Remove the Webrtc video track from the Webrtc MediaStream. |
| 744 scoped_refptr<webrtc::VideoTrackInterface> webrtc_track = |
| 745 remote_stream->GetVideoTracks()[0].get(); |
| 746 remote_stream->RemoveTrack(webrtc_track); |
| 747 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks1; |
| 748 webkit_stream.videoTracks(modified_video_tracks1); |
| 749 EXPECT_EQ(0u, modified_video_tracks1.size()); |
| 750 |
| 751 // Add the WebRtc video track again. |
| 752 remote_stream->AddTrack(webrtc_track); |
| 753 WebKit::WebVector<WebKit::WebMediaStreamTrack> modified_video_tracks2; |
| 754 webkit_stream.videoTracks(modified_video_tracks2); |
| 755 EXPECT_EQ(1u, modified_video_tracks2.size()); |
| 756 } |
| 757 |
657 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { | 758 TEST_F(RTCPeerConnectionHandlerTest, OnIceCandidate) { |
658 testing::InSequence sequence; | 759 testing::InSequence sequence; |
659 EXPECT_CALL(*mock_tracker_.get(), | 760 EXPECT_CALL(*mock_tracker_.get(), |
660 TrackAddIceCandidate(pc_handler_.get(), _, | 761 TrackAddIceCandidate(pc_handler_.get(), _, |
661 PeerConnectionTracker::SOURCE_LOCAL)); | 762 PeerConnectionTracker::SOURCE_LOCAL)); |
662 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); | 763 EXPECT_CALL(*mock_client_.get(), didGenerateICECandidate(_)); |
663 | 764 |
664 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( | 765 scoped_ptr<webrtc::IceCandidateInterface> native_candidate( |
665 mock_dependency_factory_->CreateIceCandidate("mid", 1, kDummySdp)); | 766 mock_dependency_factory_->CreateIceCandidate("mid", 1, kDummySdp)); |
666 pc_handler_->OnIceCandidate(native_candidate.get()); | 767 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(), | 808 EXPECT_CALL(*mock_tracker_.get(), |
708 TrackCreateDTMFSender(pc_handler_.get(), | 809 TrackCreateDTMFSender(pc_handler_.get(), |
709 testing::Ref(tracks[0]))); | 810 testing::Ref(tracks[0]))); |
710 | 811 |
711 scoped_ptr<WebKit::WebRTCDTMFSenderHandler> sender( | 812 scoped_ptr<WebKit::WebRTCDTMFSenderHandler> sender( |
712 pc_handler_->createDTMFSender(tracks[0])); | 813 pc_handler_->createDTMFSender(tracks[0])); |
713 EXPECT_TRUE(sender.get()); | 814 EXPECT_TRUE(sender.get()); |
714 } | 815 } |
715 | 816 |
716 } // namespace content | 817 } // namespace content |
OLD | NEW |