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()); |
} |