Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(461)

Side by Side Diff: content/renderer/media/rtc_peer_connection_handler_unittest.cc

Issue 14200016: Added implementation of RemoteMediaStreams. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix nits Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698