Chromium Code Reviews| Index: webrtc/api/peerconnectioninterface_unittest.cc |
| diff --git a/webrtc/api/peerconnectioninterface_unittest.cc b/webrtc/api/peerconnectioninterface_unittest.cc |
| index be4dc06acfe4b8a5491550f89557edb726a3ff3c..4fbe1edbfa1ad9cc6cdb4d1dbe4c1d2ed256bd24 100644 |
| --- a/webrtc/api/peerconnectioninterface_unittest.cc |
| +++ b/webrtc/api/peerconnectioninterface_unittest.cc |
| @@ -91,6 +91,25 @@ static const char kSdpStringWithStream1[] = |
| "a=ssrc:2 mslabel:stream1\r\n" |
| "a=ssrc:2 label:videotrack0\r\n"; |
| +// Reference SDP with a MediaStream with label "stream1" and audio track with |
| +// id "audio_1"; |
| +static const char kSdpStringWithStream1AudioTrackOnly[] = |
| + "v=0\r\n" |
| + "o=- 0 0 IN IP4 127.0.0.1\r\n" |
| + "s=-\r\n" |
| + "t=0 0\r\n" |
| + "a=ice-ufrag:e5785931\r\n" |
| + "a=ice-pwd:36fb7878390db89481c1d46daa4278d8\r\n" |
| + "a=fingerprint:sha-256 58:AB:6E:F5:F1:E4:57:B7:E9:46:F4:86:04:28:F9:A7:ED:" |
| + "BD:AB:AE:40:EF:CE:9A:51:2C:2A:B1:9B:8B:78:84\r\n" |
| + "m=audio 1 RTP/AVPF 103\r\n" |
| + "a=mid:audio\r\n" |
| + "a=sendrecv\r\n" |
| + "a=rtpmap:103 ISAC/16000\r\n" |
| + "a=ssrc:1 cname:stream1\r\n" |
| + "a=ssrc:1 mslabel:stream1\r\n" |
| + "a=ssrc:1 label:audiotrack0\r\n"; |
| + |
| // Reference SDP with two MediaStreams with label "stream1" and "stream2. Each |
| // MediaStreams have one audio track and one video track. |
| // This uses MSID. |
| @@ -499,13 +518,13 @@ class MockPeerConnectionObserver : public PeerConnectionObserver { |
| void OnIceConnectionChange( |
| PeerConnectionInterface::IceConnectionState new_state) override { |
| EXPECT_EQ(pc_->ice_connection_state(), new_state); |
| - callback_triggered = true; |
| + callback_triggered_ = true; |
| } |
| void OnIceGatheringChange( |
| PeerConnectionInterface::IceGatheringState new_state) override { |
| EXPECT_EQ(pc_->ice_gathering_state(), new_state); |
| ice_complete_ = new_state == PeerConnectionInterface::kIceGatheringComplete; |
| - callback_triggered = true; |
| + callback_triggered_ = true; |
| } |
| void OnIceCandidate(const webrtc::IceCandidateInterface* candidate) override { |
| EXPECT_NE(PeerConnectionInterface::kIceGatheringNew, |
| @@ -517,16 +536,24 @@ class MockPeerConnectionObserver : public PeerConnectionObserver { |
| last_candidate_.reset(webrtc::CreateIceCandidate(candidate->sdp_mid(), |
| candidate->sdp_mline_index(), sdp, NULL)); |
| EXPECT_TRUE(last_candidate_.get() != NULL); |
| - callback_triggered = true; |
| + callback_triggered_ = true; |
| } |
| void OnIceCandidatesRemoved( |
| const std::vector<cricket::Candidate>& candidates) override { |
| - callback_triggered = true; |
| + callback_triggered_ = true; |
| } |
| void OnIceConnectionReceivingChange(bool receiving) override { |
| - callback_triggered = true; |
| + callback_triggered_ = true; |
| + } |
| + |
| + void OnAddTrack(rtc::scoped_refptr<webrtc::RtpReceiverInterface> receiver, |
| + std::vector<rtc::scoped_refptr<webrtc::MediaStreamInterface>> |
| + streams) override { |
| + EXPECT_TRUE(receiver != nullptr); |
| + num_added_track_++; |
| + last_added_track_label_ = receiver->id(); |
| } |
| // Returns the label of the last added stream. |
| @@ -549,7 +576,9 @@ class MockPeerConnectionObserver : public PeerConnectionObserver { |
| rtc::scoped_refptr<StreamCollection> remote_streams_; |
| bool renegotiation_needed_ = false; |
| bool ice_complete_ = false; |
| - bool callback_triggered = false; |
| + bool callback_triggered_ = false; |
| + int num_added_track_ = 0; |
|
Taylor Brandstetter
2016/11/17 00:34:23
nit: I'd change this to "num_added_tracks_", plura
Zhi Huang
2016/11/17 01:42:06
Done.
I also removed the initialization of last_a
|
| + std::string last_added_track_label_ = ""; |
| private: |
| rtc::scoped_refptr<MediaStreamInterface> last_added_stream_; |
| @@ -1070,7 +1099,7 @@ TEST_F(PeerConnectionInterfaceTest, CloseAndTestCallbackFunctions) { |
| pc->Close(); |
| // No callbacks is expected to be called. |
| - observer_.callback_triggered = false; |
| + observer_.callback_triggered_ = false; |
| std::vector<cricket::Candidate> candidates; |
| pc_factory_for_test_->transport_controller->SignalGatheringState( |
| cricket::IceGatheringState{}); |
| @@ -1081,7 +1110,7 @@ TEST_F(PeerConnectionInterfaceTest, CloseAndTestCallbackFunctions) { |
| pc_factory_for_test_->transport_controller->SignalCandidatesRemoved( |
| candidates); |
| pc_factory_for_test_->transport_controller->SignalReceiving(false); |
| - EXPECT_FALSE(observer_.callback_triggered); |
| + EXPECT_FALSE(observer_.callback_triggered_); |
| } |
| // Generate different CNAMEs when PeerConnections are created. |
| @@ -2640,6 +2669,28 @@ TEST_F(PeerConnectionInterfaceTest, |
| EXPECT_TRUE(ContainsSender(new_senders, kVideoTracks[0], kStreams[1])); |
| } |
| +// This tests the PeerConnectionObserver::OnAddTrack are correctly called. |
|
Taylor Brandstetter
2016/11/17 00:34:23
nit: "the" -> "that", "are" -> "is"
Zhi Huang
2016/11/17 01:42:06
Done.
|
| +TEST_F(PeerConnectionInterfaceTest, OnAddTrackCallback) { |
| + FakeConstraints constraints; |
| + constraints.AddMandatory(webrtc::MediaConstraintsInterface::kEnableDtlsSrtp, |
| + true); |
| + CreatePeerConnection(&constraints); |
| + observer_.num_added_track_ = 0; |
| + observer_.last_added_track_label_ = ""; |
|
Taylor Brandstetter
2016/11/17 00:34:23
These don't need to be initialized here since they
Zhi Huang
2016/11/17 01:42:06
Done.
|
| + |
| + CreateAndSetRemoteOffer(kSdpStringWithStream1AudioTrackOnly); |
| + EXPECT_EQ(observer_.num_added_track_, 1); |
| + EXPECT_EQ(observer_.last_added_track_label_, kAudioTracks[0]); |
| + // Create and set the updated remote SDP. |
| + CreateAndSetRemoteOffer(kSdpStringWithStream1); |
| + EXPECT_EQ(observer_.num_added_track_, 2); |
| + EXPECT_EQ(observer_.last_added_track_label_, kVideoTracks[0]); |
| + |
| + // Clear the observer stats. |
| + observer_.num_added_track_ = 0; |
| + observer_.last_added_track_label_ = ""; |
|
Taylor Brandstetter
2016/11/17 00:34:23
This isn't needed, since each test case completely
Zhi Huang
2016/11/17 01:42:06
Good to know. Thanks for the link!
|
| +} |
| + |
| class PeerConnectionMediaConfigTest : public testing::Test { |
| protected: |
| void SetUp() override { |