| Index: talk/app/webrtc/mediastreamsignaling_unittest.cc
|
| diff --git a/talk/app/webrtc/mediastreamsignaling_unittest.cc b/talk/app/webrtc/mediastreamsignaling_unittest.cc
|
| index e5f20ec0c10526ea25829a0b9221d9022f3c82e1..91a39db3050b6c4dacaefc503d0b36adf6f71521 100644
|
| --- a/talk/app/webrtc/mediastreamsignaling_unittest.cc
|
| +++ b/talk/app/webrtc/mediastreamsignaling_unittest.cc
|
| @@ -70,6 +70,9 @@ using webrtc::StreamCollectionInterface;
|
|
|
| typedef PeerConnectionInterface::RTCOfferAnswerOptions RTCOfferAnswerOptions;
|
|
|
| +static const char kAudioMid[] = "audio";
|
| +static const char kVideoMid[] = "video";
|
| +
|
| // Reference SDP with a MediaStream with label "stream1" and audio track with
|
| // id "audio_1" and a video track with id "video_1;
|
| static const char kSdpStringWithStream1[] =
|
| @@ -312,14 +315,16 @@ class MockSignalingObserver : public webrtc::MediaStreamSignalingObserver {
|
|
|
| virtual void OnAddLocalAudioTrack(MediaStreamInterface* stream,
|
| AudioTrackInterface* audio_track,
|
| - uint32 ssrc) {
|
| - AddTrack(&local_audio_tracks_, stream, audio_track, ssrc);
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + AddTrack(&local_audio_tracks_, stream, audio_track, ssrc, mid);
|
| }
|
|
|
| virtual void OnAddLocalVideoTrack(MediaStreamInterface* stream,
|
| VideoTrackInterface* video_track,
|
| - uint32 ssrc) {
|
| - AddTrack(&local_video_tracks_, stream, video_track, ssrc);
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + AddTrack(&local_video_tracks_, stream, video_track, ssrc, mid);
|
| }
|
|
|
| virtual void OnRemoveLocalAudioTrack(MediaStreamInterface* stream,
|
| @@ -335,14 +340,16 @@ class MockSignalingObserver : public webrtc::MediaStreamSignalingObserver {
|
|
|
| virtual void OnAddRemoteAudioTrack(MediaStreamInterface* stream,
|
| AudioTrackInterface* audio_track,
|
| - uint32 ssrc) {
|
| - AddTrack(&remote_audio_tracks_, stream, audio_track, ssrc);
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + AddTrack(&remote_audio_tracks_, stream, audio_track, ssrc, mid);
|
| }
|
|
|
| virtual void OnAddRemoteVideoTrack(MediaStreamInterface* stream,
|
| VideoTrackInterface* video_track,
|
| - uint32 ssrc) {
|
| - AddTrack(&remote_video_tracks_, stream, video_track, ssrc);
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + AddTrack(&remote_video_tracks_, stream, video_track, ssrc, mid);
|
| }
|
|
|
| virtual void OnRemoveRemoteAudioTrack(MediaStreamInterface* stream,
|
| @@ -368,55 +375,64 @@ class MockSignalingObserver : public webrtc::MediaStreamSignalingObserver {
|
|
|
| size_t NumberOfRemoteAudioTracks() { return remote_audio_tracks_.size(); }
|
|
|
| - void VerifyRemoteAudioTrack(const std::string& stream_label,
|
| - const std::string& track_id,
|
| - uint32 ssrc) {
|
| - VerifyTrack(remote_audio_tracks_, stream_label, track_id, ssrc);
|
| + void VerifyRemoteAudioTrack(const std::string& stream_label,
|
| + const std::string& track_id,
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + VerifyTrack(remote_audio_tracks_, stream_label, track_id, ssrc, mid);
|
| }
|
|
|
| size_t NumberOfRemoteVideoTracks() { return remote_video_tracks_.size(); }
|
|
|
| - void VerifyRemoteVideoTrack(const std::string& stream_label,
|
| - const std::string& track_id,
|
| - uint32 ssrc) {
|
| - VerifyTrack(remote_video_tracks_, stream_label, track_id, ssrc);
|
| + void VerifyRemoteVideoTrack(const std::string& stream_label,
|
| + const std::string& track_id,
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + VerifyTrack(remote_video_tracks_, stream_label, track_id, ssrc, mid);
|
| }
|
|
|
| size_t NumberOfLocalAudioTracks() { return local_audio_tracks_.size(); }
|
| - void VerifyLocalAudioTrack(const std::string& stream_label,
|
| - const std::string& track_id,
|
| - uint32 ssrc) {
|
| - VerifyTrack(local_audio_tracks_, stream_label, track_id, ssrc);
|
| + void VerifyLocalAudioTrack(const std::string& stream_label,
|
| + const std::string& track_id,
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + VerifyTrack(local_audio_tracks_, stream_label, track_id, ssrc, mid);
|
| }
|
|
|
| size_t NumberOfLocalVideoTracks() { return local_video_tracks_.size(); }
|
|
|
| - void VerifyLocalVideoTrack(const std::string& stream_label,
|
| - const std::string& track_id,
|
| - uint32 ssrc) {
|
| - VerifyTrack(local_video_tracks_, stream_label, track_id, ssrc);
|
| + void VerifyLocalVideoTrack(const std::string& stream_label,
|
| + const std::string& track_id,
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + VerifyTrack(local_video_tracks_, stream_label, track_id, ssrc, mid);
|
| }
|
|
|
| private:
|
| struct TrackInfo {
|
| TrackInfo() {}
|
| - TrackInfo(const std::string& stream_label, const std::string track_id,
|
| - uint32 ssrc)
|
| + TrackInfo(const std::string& stream_label,
|
| + const std::string track_id,
|
| + uint32 ssrc,
|
| + const std::string& mid)
|
| : stream_label(stream_label),
|
| track_id(track_id),
|
| - ssrc(ssrc) {
|
| - }
|
| + ssrc(ssrc),
|
| + mid(mid) {}
|
| std::string stream_label;
|
| std::string track_id;
|
| uint32 ssrc;
|
| + std::string mid;
|
| };
|
| typedef std::vector<TrackInfo> TrackInfos;
|
|
|
| - void AddTrack(TrackInfos* track_infos, MediaStreamInterface* stream,
|
| + void AddTrack(TrackInfos* track_infos,
|
| + MediaStreamInterface* stream,
|
| MediaStreamTrackInterface* track,
|
| - uint32 ssrc) {
|
| - (*track_infos).push_back(TrackInfo(stream->label(), track->id(),
|
| - ssrc));
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| + (*track_infos)
|
| + .push_back(TrackInfo(stream->label(), track->id(), ssrc, mid));
|
| }
|
|
|
| void RemoveTrack(TrackInfos* track_infos, MediaStreamInterface* stream,
|
| @@ -442,16 +458,17 @@ class MockSignalingObserver : public webrtc::MediaStreamSignalingObserver {
|
| return NULL;
|
| }
|
|
|
| -
|
| void VerifyTrack(const TrackInfos& track_infos,
|
| const std::string& stream_label,
|
| const std::string& track_id,
|
| - uint32 ssrc) {
|
| + uint32 ssrc,
|
| + const std::string& mid) {
|
| const TrackInfo* track_info = FindTrackInfo(track_infos,
|
| stream_label,
|
| track_id);
|
| ASSERT_TRUE(track_info != NULL);
|
| EXPECT_EQ(ssrc, track_info->ssrc);
|
| + EXPECT_EQ(mid, track_info->mid);
|
| }
|
|
|
| TrackInfos remote_audio_tracks_;
|
| @@ -805,9 +822,9 @@ TEST_F(MediaStreamSignalingTest, UpdateRemoteStreams) {
|
| EXPECT_TRUE(CompareStreamCollections(observer_->remote_streams(),
|
| reference.get()));
|
| EXPECT_EQ(1u, observer_->NumberOfRemoteAudioTracks());
|
| - observer_->VerifyRemoteAudioTrack(kStreams[0], kAudioTracks[0], 1);
|
| + observer_->VerifyRemoteAudioTrack(kStreams[0], kAudioTracks[0], 1, kAudioMid);
|
| EXPECT_EQ(1u, observer_->NumberOfRemoteVideoTracks());
|
| - observer_->VerifyRemoteVideoTrack(kStreams[0], kVideoTracks[0], 2);
|
| + observer_->VerifyRemoteVideoTrack(kStreams[0], kVideoTracks[0], 2, kVideoMid);
|
| ASSERT_EQ(1u, observer_->remote_streams()->count());
|
| MediaStreamInterface* remote_stream = observer_->remote_streams()->at(0);
|
| EXPECT_TRUE(remote_stream->GetVideoTracks()[0]->GetSource() != NULL);
|
| @@ -828,11 +845,11 @@ TEST_F(MediaStreamSignalingTest, UpdateRemoteStreams) {
|
| reference2.get()));
|
|
|
| EXPECT_EQ(2u, observer_->NumberOfRemoteAudioTracks());
|
| - observer_->VerifyRemoteAudioTrack(kStreams[0], kAudioTracks[0], 1);
|
| - observer_->VerifyRemoteAudioTrack(kStreams[1], kAudioTracks[1], 3);
|
| + observer_->VerifyRemoteAudioTrack(kStreams[0], kAudioTracks[0], 1, kAudioMid);
|
| + observer_->VerifyRemoteAudioTrack(kStreams[1], kAudioTracks[1], 3, kAudioMid);
|
| EXPECT_EQ(2u, observer_->NumberOfRemoteVideoTracks());
|
| - observer_->VerifyRemoteVideoTrack(kStreams[0], kVideoTracks[0], 2);
|
| - observer_->VerifyRemoteVideoTrack(kStreams[1], kVideoTracks[1], 4);
|
| + observer_->VerifyRemoteVideoTrack(kStreams[0], kVideoTracks[0], 2, kVideoMid);
|
| + observer_->VerifyRemoteVideoTrack(kStreams[1], kVideoTracks[1], 4, kVideoMid);
|
| }
|
|
|
| // This test verifies that the remote MediaStreams corresponding to a received
|
| @@ -958,8 +975,8 @@ TEST_F(MediaStreamSignalingTest, SdpWithoutMsidCreatesDefaultStream) {
|
| EXPECT_EQ("defaulta0", remote_stream->GetAudioTracks()[0]->id());
|
| ASSERT_EQ(1u, remote_stream->GetVideoTracks().size());
|
| EXPECT_EQ("defaultv0", remote_stream->GetVideoTracks()[0]->id());
|
| - observer_->VerifyRemoteAudioTrack("default", "defaulta0", 0);
|
| - observer_->VerifyRemoteVideoTrack("default", "defaultv0", 0);
|
| + observer_->VerifyRemoteAudioTrack("default", "defaulta0", 0, kAudioMid);
|
| + observer_->VerifyRemoteVideoTrack("default", "defaultv0", 0, kVideoMid);
|
| }
|
|
|
| // This tests that a default MediaStream is created if a remote session
|
| @@ -1065,10 +1082,10 @@ TEST_F(MediaStreamSignalingTest, LocalDescriptionChanged) {
|
| signaling_->OnLocalDescriptionChanged(desc_1.get());
|
| EXPECT_EQ(2u, observer_->NumberOfLocalAudioTracks());
|
| EXPECT_EQ(2u, observer_->NumberOfLocalVideoTracks());
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2);
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[1], 3);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[1], 4);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2, kVideoMid);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[1], 3, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[1], 4, kVideoMid);
|
|
|
| // Remove an audio and video track.
|
| rtc::scoped_ptr<SessionDescriptionInterface> desc_2;
|
| @@ -1076,8 +1093,8 @@ TEST_F(MediaStreamSignalingTest, LocalDescriptionChanged) {
|
| signaling_->OnLocalDescriptionChanged(desc_2.get());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalAudioTracks());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalVideoTracks());
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2, kVideoMid);
|
| }
|
|
|
| // This test that the correct MediaStreamSignalingObserver methods are called
|
| @@ -1094,10 +1111,10 @@ TEST_F(MediaStreamSignalingTest, AddLocalStreamAfterLocalDescriptionChanged) {
|
| signaling_->AddLocalStream(reference_collection_->at(0));
|
| EXPECT_EQ(2u, observer_->NumberOfLocalAudioTracks());
|
| EXPECT_EQ(2u, observer_->NumberOfLocalVideoTracks());
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2);
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[1], 3);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[1], 4);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2, kVideoMid);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[1], 3, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[1], 4, kVideoMid);
|
| }
|
|
|
| // This test that the correct MediaStreamSignalingObserver methods are called
|
| @@ -1111,8 +1128,8 @@ TEST_F(MediaStreamSignalingTest, ChangeSsrcOnTrackInLocalSessionDescription) {
|
| signaling_->OnLocalDescriptionChanged(desc.get());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalAudioTracks());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalVideoTracks());
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 1, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 2, kVideoMid);
|
|
|
| // Change the ssrc of the audio and video track.
|
| std::string sdp;
|
| @@ -1134,8 +1151,8 @@ TEST_F(MediaStreamSignalingTest, ChangeSsrcOnTrackInLocalSessionDescription) {
|
| signaling_->OnLocalDescriptionChanged(updated_desc.get());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalAudioTracks());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalVideoTracks());
|
| - observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 97);
|
| - observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 98);
|
| + observer_->VerifyLocalAudioTrack(kStreams[0], kAudioTracks[0], 97, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[0], kVideoTracks[0], 98, kVideoMid);
|
| }
|
|
|
| // This test that the correct MediaStreamSignalingObserver methods are called
|
| @@ -1151,8 +1168,10 @@ TEST_F(MediaStreamSignalingTest, SignalSameTracksInSeparateMediaStream) {
|
| EXPECT_EQ(1u, observer_->NumberOfLocalVideoTracks());
|
|
|
| std::string stream_label_0 = kStreams[0];
|
| - observer_->VerifyLocalAudioTrack(stream_label_0, kAudioTracks[0], 1);
|
| - observer_->VerifyLocalVideoTrack(stream_label_0, kVideoTracks[0], 2);
|
| + observer_->VerifyLocalAudioTrack(stream_label_0, kAudioTracks[0], 1,
|
| + kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(stream_label_0, kVideoTracks[0], 2,
|
| + kVideoMid);
|
|
|
| // Add a new MediaStream but with the same tracks as in the first stream.
|
| std::string stream_label_1 = kStreams[1];
|
| @@ -1173,8 +1192,8 @@ TEST_F(MediaStreamSignalingTest, SignalSameTracksInSeparateMediaStream) {
|
| sdp, NULL));
|
|
|
| signaling_->OnLocalDescriptionChanged(updated_desc.get());
|
| - observer_->VerifyLocalAudioTrack(kStreams[1], kAudioTracks[0], 1);
|
| - observer_->VerifyLocalVideoTrack(kStreams[1], kVideoTracks[0], 2);
|
| + observer_->VerifyLocalAudioTrack(kStreams[1], kAudioTracks[0], 1, kAudioMid);
|
| + observer_->VerifyLocalVideoTrack(kStreams[1], kVideoTracks[0], 2, kVideoMid);
|
| EXPECT_EQ(1u, observer_->NumberOfLocalAudioTracks());
|
| EXPECT_EQ(1u, observer_->NumberOfLocalVideoTracks());
|
| }
|
|
|