Index: talk/app/webrtc/webrtcsession_unittest.cc |
diff --git a/talk/app/webrtc/webrtcsession_unittest.cc b/talk/app/webrtc/webrtcsession_unittest.cc |
index dbe485cdbfb2c27865fed002d54d6e6c16ceff7b..cc2617ce3edb4b4f425189bb75d666d26063ff66 100644 |
--- a/talk/app/webrtc/webrtcsession_unittest.cc |
+++ b/talk/app/webrtc/webrtcsession_unittest.cc |
@@ -31,11 +31,13 @@ |
#include "talk/app/webrtc/fakemetricsobserver.h" |
#include "talk/app/webrtc/jsepicecandidate.h" |
#include "talk/app/webrtc/jsepsessiondescription.h" |
+#include "talk/app/webrtc/peerconnection.h" |
#include "talk/app/webrtc/mediastreamsignaling.h" |
+#include "talk/app/webrtc/sctputils.h" |
+#include "talk/app/webrtc/streamcollection.h" |
#include "talk/app/webrtc/streamcollection.h" |
#include "talk/app/webrtc/test/fakeconstraints.h" |
#include "talk/app/webrtc/test/fakedtlsidentitystore.h" |
-#include "talk/app/webrtc/test/fakemediastreamsignaling.h" |
#include "talk/app/webrtc/videotrack.h" |
#include "talk/app/webrtc/webrtcsession.h" |
#include "talk/app/webrtc/webrtcsessiondescriptionfactory.h" |
@@ -79,10 +81,12 @@ using rtc::Thread; |
using webrtc::CreateSessionDescription; |
using webrtc::CreateSessionDescriptionObserver; |
using webrtc::CreateSessionDescriptionRequest; |
+using webrtc::DataChannel; |
using webrtc::DtlsIdentityStoreInterface; |
using webrtc::FakeConstraints; |
using webrtc::FakeMetricsObserver; |
using webrtc::IceCandidateCollection; |
+using webrtc::InternalDataChannelInit; |
using webrtc::JsepIceCandidate; |
using webrtc::JsepSessionDescription; |
using webrtc::PeerConnectionFactoryInterface; |
@@ -157,6 +161,14 @@ static const char kSdpWithRtx[] = |
"a=rtpmap:96 rtx/90000\r\n" |
"a=fmtp:96 apt=0\r\n"; |
+static const char kStream1[] = "stream1"; |
+static const char kVideoTrack1[] = "video1"; |
+static const char kAudioTrack1[] = "audio1"; |
+ |
+static const char kStream2[] = "stream2"; |
+static const char kVideoTrack2[] = "video2"; |
+static const char kAudioTrack2[] = "audio2"; |
+ |
enum RTCCertificateGenerationMethod { ALREADY_GENERATED, DTLS_IDENTITY_STORE }; |
// Add some extra |newlines| to the |message| after |line|. |
@@ -237,10 +249,8 @@ class WebRtcSessionForTest : public webrtc::WebRtcSession { |
rtc::Thread* signaling_thread, |
rtc::Thread* worker_thread, |
cricket::PortAllocator* port_allocator, |
- webrtc::IceObserver* ice_observer, |
- webrtc::MediaStreamSignaling* mediastream_signaling) |
- : WebRtcSession(cmgr, signaling_thread, worker_thread, port_allocator, |
- mediastream_signaling) { |
+ webrtc::IceObserver* ice_observer) |
+ : WebRtcSession(cmgr, signaling_thread, worker_thread, port_allocator) { |
RegisterIceObserver(ice_observer); |
} |
virtual ~WebRtcSessionForTest() {} |
@@ -354,7 +364,8 @@ class FakeAudioRenderer : public cricket::AudioRenderer { |
}; |
class WebRtcSessionTest |
- : public testing::TestWithParam<RTCCertificateGenerationMethod> { |
+ : public testing::TestWithParam<RTCCertificateGenerationMethod>, |
+ public sigslot::has_slots<> { |
protected: |
// TODO Investigate why ChannelManager crashes, if it's created |
// after stun_server. |
@@ -376,7 +387,6 @@ class WebRtcSessionTest |
stun_server_(cricket::TestStunServer::Create(Thread::Current(), |
stun_socket_addr_)), |
turn_server_(Thread::Current(), kTurnUdpIntAddr, kTurnUdpExtAddr), |
- mediastream_signaling_(channel_manager_.get()), |
metrics_observer_(new rtc::RefCountedObject<FakeMetricsObserver>()) { |
cricket::ServerAddresses stun_servers; |
stun_servers.insert(stun_socket_addr_); |
@@ -405,10 +415,10 @@ class WebRtcSessionTest |
const PeerConnectionInterface::RTCConfiguration& rtc_configuration) { |
ASSERT_TRUE(session_.get() == NULL); |
session_.reset(new WebRtcSessionForTest( |
- channel_manager_.get(), rtc::Thread::Current(), |
- rtc::Thread::Current(), allocator_.get(), |
- &observer_, |
- &mediastream_signaling_)); |
+ channel_manager_.get(), rtc::Thread::Current(), rtc::Thread::Current(), |
+ allocator_.get(), &observer_)); |
+ session_->SignalDataChannelCreationRequested.connect( |
+ this, &WebRtcSessionTest::OnDataChannelCreationRequested); |
EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew, |
observer_.ice_connection_state_); |
@@ -421,6 +431,12 @@ class WebRtcSessionTest |
session_->set_metrics_observer(metrics_observer_); |
} |
+ void OnDataChannelCreationRequested(const std::string& label, |
+ const InternalDataChannelInit& config) { |
+ last_data_channel_label_ = label; |
+ last_data_channel_config_ = config; |
+ } |
+ |
void Init() { |
PeerConnectionInterface::RTCConfiguration configuration; |
Init(nullptr, configuration); |
@@ -484,8 +500,97 @@ class WebRtcSessionTest |
Init(); |
} |
- // Creates a local offer and applies it. Starts ice. |
- // Call mediastream_signaling_.UseOptionsWithStreamX() before this function |
+ void SendAudioVideoStream1() { |
+ send_stream_1_ = true; |
+ send_stream_2_ = false; |
+ send_audio_ = true; |
+ send_video_ = true; |
+ } |
+ |
+ void SendAudioVideoStream2() { |
+ send_stream_1_ = false; |
+ send_stream_2_ = true; |
+ send_audio_ = true; |
+ send_video_ = true; |
+ } |
+ |
+ void SendAudioVideoStream1And2() { |
+ send_stream_1_ = true; |
+ send_stream_2_ = true; |
+ send_audio_ = true; |
+ send_video_ = true; |
+ } |
+ |
+ void SendNothing() { |
+ send_stream_1_ = false; |
+ send_stream_2_ = false; |
+ send_audio_ = false; |
+ send_video_ = false; |
+ } |
+ |
+ void SendAudioOnlyStream2() { |
+ send_stream_1_ = false; |
+ send_stream_2_ = true; |
+ send_audio_ = true; |
+ send_video_ = false; |
+ } |
+ |
+ void SendVideoOnlyStream2() { |
+ send_stream_1_ = false; |
+ send_stream_2_ = true; |
+ send_audio_ = false; |
+ send_video_ = true; |
+ } |
+ |
+ void AddStreamsToOptions(cricket::MediaSessionOptions* session_options) { |
+ if (send_stream_1_ && send_audio_) { |
+ session_options->AddSendStream(cricket::MEDIA_TYPE_AUDIO, kAudioTrack1, |
+ kStream1); |
+ } |
+ if (send_stream_1_ && send_video_) { |
+ session_options->AddSendStream(cricket::MEDIA_TYPE_VIDEO, kVideoTrack1, |
+ kStream1); |
+ } |
+ if (send_stream_2_ && send_audio_) { |
+ session_options->AddSendStream(cricket::MEDIA_TYPE_AUDIO, kAudioTrack2, |
+ kStream2); |
+ } |
+ if (send_stream_2_ && send_video_) { |
+ session_options->AddSendStream(cricket::MEDIA_TYPE_VIDEO, kVideoTrack2, |
+ kStream2); |
+ } |
+ if (data_channel_ && session_->data_channel_type() == cricket::DCT_RTP) { |
+ session_options->AddSendStream(cricket::MEDIA_TYPE_DATA, |
+ data_channel_->label(), |
+ data_channel_->label()); |
+ } |
+ } |
+ |
+ void GetOptionsForOffer( |
+ const PeerConnectionInterface::RTCOfferAnswerOptions& rtc_options, |
+ cricket::MediaSessionOptions* session_options) { |
+ AddStreamsToOptions(session_options); |
+ ASSERT_TRUE(ConvertRtcOptionsForOffer(rtc_options, session_options)); |
+ |
+ if (session_->data_channel_type() == cricket::DCT_SCTP && data_channel_) { |
+ session_options->data_channel_type = cricket::DCT_SCTP; |
+ } |
+ } |
+ |
+ void GetOptionsForAnswer(const webrtc::MediaConstraintsInterface* constraints, |
+ cricket::MediaSessionOptions* session_options) { |
+ AddStreamsToOptions(session_options); |
+ session_options->recv_audio = false; |
+ session_options->recv_video = false; |
+ ASSERT_TRUE(ParseConstraintsForAnswer(constraints, session_options)); |
+ |
+ if (session_->data_channel_type() == cricket::DCT_SCTP) { |
+ session_options->data_channel_type = cricket::DCT_SCTP; |
+ } |
+ } |
+ |
+ // Creates a local offer and applies it. Starts ICE. |
+ // Call SendAudioVideoStreamX() before this function |
// to decide which streams to create. |
void InitiateCall() { |
SessionDescriptionInterface* offer = CreateOffer(); |
@@ -507,7 +612,9 @@ class WebRtcSessionTest |
const PeerConnectionInterface::RTCOfferAnswerOptions& options) { |
rtc::scoped_refptr<WebRtcSessionCreateSDPObserverForTest> |
observer = new WebRtcSessionCreateSDPObserverForTest(); |
- session_->CreateOffer(observer, options); |
+ cricket::MediaSessionOptions session_options; |
+ GetOptionsForOffer(options, &session_options); |
+ session_->CreateOffer(observer, options, session_options); |
EXPECT_TRUE_WAIT( |
observer->state() != WebRtcSessionCreateSDPObserverForTest::kInit, |
2000); |
@@ -518,7 +625,9 @@ class WebRtcSessionTest |
const webrtc::MediaConstraintsInterface* constraints) { |
rtc::scoped_refptr<WebRtcSessionCreateSDPObserverForTest> observer |
= new WebRtcSessionCreateSDPObserverForTest(); |
- session_->CreateAnswer(observer, constraints); |
+ cricket::MediaSessionOptions session_options; |
+ GetOptionsForAnswer(constraints, &session_options); |
+ session_->CreateAnswer(observer, constraints, session_options); |
EXPECT_TRUE_WAIT( |
observer->state() != WebRtcSessionCreateSDPObserverForTest::kInit, |
2000); |
@@ -648,7 +757,7 @@ class WebRtcSessionTest |
value_set); |
session_.reset(); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -745,7 +854,7 @@ class WebRtcSessionTest |
// Creates a remote offer and and applies it as a remote description, |
// creates a local answer and applies is as a local description. |
- // Call mediastream_signaling_.UseOptionsWithStreamX() before this function |
+ // Call SendAudioVideoStreamX() before this function |
// to decide which local and remote streams to create. |
void CreateAndSetRemoteOfferAndLocalAnswer() { |
SessionDescriptionInterface* offer = CreateRemoteOffer(); |
@@ -921,11 +1030,11 @@ class WebRtcSessionTest |
return offer; |
} |
- // Create a remote offer. Call mediastream_signaling_.UseOptionsWithStreamX() |
+ // Create a remote offer. Call SendAudioVideoStreamX() |
// before this function to decide which streams to create. |
JsepSessionDescription* CreateRemoteOffer() { |
cricket::MediaSessionOptions options; |
- mediastream_signaling_.GetOptionsForAnswer(NULL, &options); |
+ GetOptionsForAnswer(NULL, &options); |
return CreateRemoteOffer(options, session_->remote_description()); |
} |
@@ -953,21 +1062,20 @@ class WebRtcSessionTest |
return CreateRemoteAnswer(offer, options, cricket::SEC_REQUIRED); |
} |
- // Creates an answer session description with streams based on |
- // |mediastream_signaling_|. Call |
- // mediastream_signaling_.UseOptionsWithStreamX() before this function |
+ // Creates an answer session description. |
+ // Call SendAudioVideoStreamX() before this function |
// to decide which streams to create. |
JsepSessionDescription* CreateRemoteAnswer( |
const SessionDescriptionInterface* offer) { |
cricket::MediaSessionOptions options; |
- mediastream_signaling_.GetOptionsForAnswer(NULL, &options); |
+ GetOptionsForAnswer(NULL, &options); |
return CreateRemoteAnswer(offer, options, cricket::SEC_REQUIRED); |
} |
void TestSessionCandidatesWithBundleRtcpMux(bool bundle, bool rtcp_mux) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = bundle; |
@@ -1015,7 +1123,7 @@ class WebRtcSessionTest |
} else { |
Init(); |
} |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
EXPECT_FALSE(session_->CanInsertDtmf("")); |
EXPECT_EQ(can, session_->CanInsertDtmf(kAudioTrack1)); |
@@ -1131,7 +1239,7 @@ class WebRtcSessionTest |
void TestLoopbackCall(const LoopbackNetworkConfiguration& config) { |
LoopbackNetworkManager loopback_network_manager(this, config); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew, |
@@ -1228,10 +1336,15 @@ class WebRtcSessionTest |
return true; |
} |
- void SetLocalDescriptionWithDataChannel() { |
+ void CreateDataChannel() { |
webrtc::InternalDataChannelInit dci; |
- dci.reliable = false; |
- session_->CreateDataChannel("datachannel", &dci); |
+ dci.reliable = session_->data_channel_type() == cricket::DCT_SCTP; |
+ data_channel_ = DataChannel::Create( |
+ session_.get(), session_->data_channel_type(), "datachannel", dci); |
+ } |
+ |
+ void SetLocalDescriptionWithDataChannel() { |
+ CreateDataChannel(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
} |
@@ -1262,15 +1375,16 @@ class WebRtcSessionTest |
} |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
+ cricket::MediaSessionOptions session_options; |
const int kNumber = 3; |
rtc::scoped_refptr<WebRtcSessionCreateSDPObserverForTest> |
observers[kNumber]; |
for (int i = 0; i < kNumber; ++i) { |
observers[i] = new WebRtcSessionCreateSDPObserverForTest(); |
if (type == CreateSessionDescriptionRequest::kOffer) { |
- session_->CreateOffer(observers[i], options); |
+ session_->CreateOffer(observers[i], options, session_options); |
} else { |
- session_->CreateAnswer(observers[i], NULL); |
+ session_->CreateAnswer(observers[i], nullptr, session_options); |
} |
} |
@@ -1315,12 +1429,20 @@ class WebRtcSessionTest |
rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; |
PeerConnectionFactoryInterface::Options options_; |
rtc::scoped_ptr<FakeConstraints> constraints_; |
- FakeMediaStreamSignaling mediastream_signaling_; |
rtc::scoped_ptr<WebRtcSessionForTest> session_; |
MockIceObserver observer_; |
cricket::FakeVideoMediaChannel* video_channel_; |
cricket::FakeVoiceMediaChannel* voice_channel_; |
rtc::scoped_refptr<FakeMetricsObserver> metrics_observer_; |
+ // The following flags affect options created for CreateOffer/CreateAnswer. |
+ bool send_stream_1_ = false; |
+ bool send_stream_2_ = false; |
+ bool send_audio_ = false; |
+ bool send_video_ = false; |
+ rtc::scoped_refptr<DataChannel> data_channel_; |
+ // Last values received from data channel creation signal. |
+ std::string last_data_channel_label_; |
+ InternalDataChannelInit last_data_channel_config_; |
}; |
TEST_P(WebRtcSessionTest, TestInitializeWithDtls) { |
@@ -1353,7 +1475,7 @@ TEST_F(WebRtcSessionTest, TestMultihomeCandidates) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
AddInterface(rtc::SocketAddress(kClientAddrHost2, kClientAddrPort)); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitiateCall(); |
EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout); |
EXPECT_EQ(8u, observer_.mline_0_candidates_.size()); |
@@ -1368,7 +1490,7 @@ TEST_F(WebRtcSessionTest, TestStunError) { |
rtc::FD_ANY, |
rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitiateCall(); |
// Since kClientAddrHost1 is blocked, not expecting stun candidates for it. |
EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout); |
@@ -1380,7 +1502,7 @@ TEST_F(WebRtcSessionTest, TestStunError) { |
TEST_F(WebRtcSessionTest, TestIceTransportsNone) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
InitWithIceTransport(PeerConnectionInterface::kNone); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitiateCall(); |
EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout); |
EXPECT_EQ(0u, observer_.mline_0_candidates_.size()); |
@@ -1393,7 +1515,7 @@ TEST_F(WebRtcSessionTest, TestIceTransportsRelay) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
ConfigureAllocatorWithTurn(); |
InitWithIceTransport(PeerConnectionInterface::kRelay); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitiateCall(); |
EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout); |
EXPECT_EQ(2u, observer_.mline_0_candidates_.size()); |
@@ -1412,7 +1534,7 @@ TEST_F(WebRtcSessionTest, TestIceTransportsRelay) { |
TEST_F(WebRtcSessionTest, TestIceTransportsAll) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
InitWithIceTransport(PeerConnectionInterface::kAll); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitiateCall(); |
EXPECT_TRUE_WAIT(observer_.oncandidatesready_, kIceCandidatesTimeout); |
// Host + STUN. By default allocator is disabled to gather relay candidates. |
@@ -1433,13 +1555,13 @@ TEST_F(WebRtcSessionTest, SetSdpFailedOnInvalidSdp) { |
// media engine creates the expected send and receive streams. |
TEST_F(WebRtcSessionTest, TestCreateSdesOfferReceiveSdesAnswer) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
const std::string session_id_orig = offer->session_id(); |
const std::string session_version_orig = offer->session_version(); |
SetLocalDescriptionWithoutError(offer); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -1459,7 +1581,7 @@ TEST_F(WebRtcSessionTest, TestCreateSdesOfferReceiveSdesAnswer) { |
EXPECT_TRUE(kAudioTrack1 == voice_channel_->send_streams()[0].id); |
// Create new offer without send streams. |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
offer = CreateOffer(); |
// Verify the session id is the same and the session version is |
@@ -1472,7 +1594,7 @@ TEST_F(WebRtcSessionTest, TestCreateSdesOfferReceiveSdesAnswer) { |
EXPECT_EQ(0u, video_channel_->send_streams().size()); |
EXPECT_EQ(0u, voice_channel_->send_streams().size()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
answer = CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -1487,12 +1609,12 @@ TEST_F(WebRtcSessionTest, TestCreateSdesOfferReceiveSdesAnswer) { |
// media engine creates the expected send and receive streams. |
TEST_F(WebRtcSessionTest, TestReceiveSdesOfferCreateSdesAnswer) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* offer = CreateOffer(); |
VerifyCryptoParams(offer->description()); |
SetRemoteDescriptionWithoutError(offer); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* answer = CreateAnswer(NULL); |
VerifyCryptoParams(answer->description()); |
SetLocalDescriptionWithoutError(answer); |
@@ -1514,12 +1636,12 @@ TEST_F(WebRtcSessionTest, TestReceiveSdesOfferCreateSdesAnswer) { |
ASSERT_EQ(1u, voice_channel_->send_streams().size()); |
EXPECT_TRUE(kAudioTrack1 == voice_channel_->send_streams()[0].id); |
- mediastream_signaling_.SendAudioVideoStream1And2(); |
+ SendAudioVideoStream1And2(); |
offer = CreateOffer(); |
SetRemoteDescriptionWithoutError(offer); |
// Answer by turning off all send streams. |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
answer = CreateAnswer(NULL); |
// Verify the session id is the same and the session version is |
@@ -1633,7 +1755,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteNonSdesAnswerWhenSdesOn) { |
// and that we return an answer with a DTLS fingerprint. |
TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { |
MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitWithDtls(GetParam()); |
SetFactoryDtlsSrtp(); |
cricket::MediaSessionOptions options; |
@@ -1662,7 +1784,7 @@ TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { |
// and then we accept a remote answer with a DTLS fingerprint successfully. |
TEST_P(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { |
MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
InitWithDtls(GetParam()); |
SetFactoryDtlsSrtp(); |
@@ -1751,7 +1873,7 @@ TEST_P(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { |
// Test that we create a local offer without SDES or DTLS and accept a remote |
// answer without SDES or DTLS when encryption is disabled. |
TEST_P(WebRtcSessionTest, TestCreateOfferReceiveAnswerWithoutEncryption) { |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
options_.disable_encryption = true; |
InitWithDtls(GetParam()); |
@@ -1807,7 +1929,7 @@ TEST_P(WebRtcSessionTest, TestCreateAnswerReceiveOfferWithoutEncryption) { |
TEST_F(WebRtcSessionTest, TestSetLocalOfferTwice) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
// SetLocalDescription take ownership of offer. |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -1819,7 +1941,7 @@ TEST_F(WebRtcSessionTest, TestSetLocalOfferTwice) { |
TEST_F(WebRtcSessionTest, TestSetRemoteOfferTwice) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
// SetLocalDescription take ownership of offer. |
SessionDescriptionInterface* offer = CreateOffer(); |
SetRemoteDescriptionWithoutError(offer); |
@@ -1830,7 +1952,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteOfferTwice) { |
TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteOffer) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
offer = CreateOffer(); |
@@ -1840,7 +1962,7 @@ TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteOffer) { |
TEST_F(WebRtcSessionTest, TestSetRemoteAndLocalOffer) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetRemoteDescriptionWithoutError(offer); |
offer = CreateOffer(); |
@@ -1850,7 +1972,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteAndLocalOffer) { |
TEST_F(WebRtcSessionTest, TestSetLocalPrAnswer) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
SessionDescriptionInterface* offer = CreateRemoteOffer(); |
SetRemoteDescriptionExpectState(offer, BaseSession::STATE_RECEIVEDINITIATE); |
@@ -1859,21 +1981,21 @@ TEST_F(WebRtcSessionTest, TestSetLocalPrAnswer) { |
pranswer->set_type(SessionDescriptionInterface::kPrAnswer); |
SetLocalDescriptionExpectState(pranswer, BaseSession::STATE_SENTPRACCEPT); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
JsepSessionDescription* pranswer2 = static_cast<JsepSessionDescription*>( |
CreateAnswer(NULL)); |
pranswer2->set_type(SessionDescriptionInterface::kPrAnswer); |
SetLocalDescriptionExpectState(pranswer2, BaseSession::STATE_SENTPRACCEPT); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = CreateAnswer(NULL); |
SetLocalDescriptionExpectState(answer, BaseSession::STATE_SENTACCEPT); |
} |
TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionExpectState(offer, BaseSession::STATE_SENTINITIATE); |
@@ -1884,7 +2006,7 @@ TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { |
SetRemoteDescriptionExpectState(pranswer, |
BaseSession::STATE_RECEIVEDPRACCEPT); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
JsepSessionDescription* pranswer2 = |
CreateRemoteAnswer(session_->local_description()); |
pranswer2->set_type(SessionDescriptionInterface::kPrAnswer); |
@@ -1892,7 +2014,7 @@ TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { |
SetRemoteDescriptionExpectState(pranswer2, |
BaseSession::STATE_RECEIVEDPRACCEPT); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionExpectState(answer, BaseSession::STATE_RECEIVEDACCEPT); |
@@ -1900,7 +2022,7 @@ TEST_F(WebRtcSessionTest, TestSetRemotePrAnswer) { |
TEST_F(WebRtcSessionTest, TestSetLocalAnswerWithoutOffer) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
SessionDescriptionInterface* answer = |
@@ -1911,7 +2033,7 @@ TEST_F(WebRtcSessionTest, TestSetLocalAnswerWithoutOffer) { |
TEST_F(WebRtcSessionTest, TestSetRemoteAnswerWithoutOffer) { |
Init(); |
- mediastream_signaling_.SendNothing(); |
+ SendNothing(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
SessionDescriptionInterface* answer = |
@@ -1922,7 +2044,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteAnswerWithoutOffer) { |
TEST_F(WebRtcSessionTest, TestAddRemoteCandidate) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
cricket::Candidate candidate; |
candidate.set_component(1); |
@@ -1975,7 +2097,7 @@ TEST_F(WebRtcSessionTest, TestRemoteCandidatesAddedToSessionDescription) { |
candidate1.set_component(1); |
JsepIceCandidate ice_candidate1(kMediaContentName0, kMediaContentIndex0, |
candidate1); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
EXPECT_TRUE(session_->ProcessIceMessage(&ice_candidate1)); |
@@ -2024,7 +2146,7 @@ TEST_F(WebRtcSessionTest, TestRemoteCandidatesAddedToSessionDescription) { |
TEST_F(WebRtcSessionTest, TestLocalCandidatesAddedToSessionDescription) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
const SessionDescriptionInterface* local_desc = session_->local_description(); |
@@ -2044,7 +2166,7 @@ TEST_F(WebRtcSessionTest, TestLocalCandidatesAddedToSessionDescription) { |
EXPECT_EQ(0u, candidates->count()); |
// Update the session descriptions. |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
local_desc = session_->local_description(); |
@@ -2064,7 +2186,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteSessionDescriptionWithCandidates) { |
candidate1.set_component(1); |
JsepIceCandidate ice_candidate(kMediaContentName0, kMediaContentIndex0, |
candidate1); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
EXPECT_TRUE(offer->AddCandidate(&ice_candidate)); |
@@ -2088,7 +2210,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteSessionDescriptionWithCandidates) { |
TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteDescriptionWithCandidates) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
// Ice is started but candidates are not provided until SetLocalDescription |
// is called. |
EXPECT_EQ(0u, observer_.mline_0_candidates_.size()); |
@@ -2115,7 +2237,7 @@ TEST_F(WebRtcSessionTest, TestSetLocalAndRemoteDescriptionWithCandidates) { |
// present in the SessionDescription. |
TEST_F(WebRtcSessionTest, TestChannelCreationsWithContentNames) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
// CreateOffer creates session description with the content names "audio" and |
@@ -2180,7 +2302,7 @@ TEST_F(WebRtcSessionTest, CreateOfferWithoutConstraintsOrStreams) { |
TEST_F(WebRtcSessionTest, CreateOfferWithoutConstraints) { |
Init(); |
// Test Audio only offer. |
- mediastream_signaling_.UseOptionsAudioOnly(); |
+ SendAudioOnlyStream2(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
const cricket::ContentInfo* content = |
@@ -2190,7 +2312,7 @@ TEST_F(WebRtcSessionTest, CreateOfferWithoutConstraints) { |
EXPECT_TRUE(content == NULL); |
// Test Audio / Video offer. |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
offer.reset(CreateOffer()); |
content = cricket::GetFirstAudioContent(offer->description()); |
EXPECT_TRUE(content != NULL); |
@@ -2329,7 +2451,7 @@ TEST_F(WebRtcSessionTest, CreateAnswerWithoutConstraints) { |
rtc::scoped_ptr<JsepSessionDescription> offer(CreateRemoteOffer()); |
SetRemoteDescriptionWithoutError(offer.release()); |
// Test with a stream with tracks. |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
CreateAnswer(NULL)); |
const cricket::ContentInfo* content = |
@@ -2379,7 +2501,7 @@ TEST_F(WebRtcSessionTest, CreateAnswerWithConstraints) { |
constraints_no_receive.SetMandatoryReceiveVideo(false); |
// Test with a stream with tracks. |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
CreateAnswer(&constraints_no_receive)); |
@@ -2436,7 +2558,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithAudioOnlyAnswer) { |
EXPECT_TRUE(media_engine_->GetVideoChannel(0) == NULL); |
EXPECT_TRUE(media_engine_->GetVoiceChannel(0) == NULL); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
cricket::MediaSessionOptions options; |
@@ -2457,7 +2579,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithAudioOnlyAnswer) { |
EXPECT_EQ(kAudioTrack1, voice_channel_->send_streams()[0].id); |
// Let the remote end update the session descriptions, with Audio and Video. |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
video_channel_ = media_engine_->GetVideoChannel(0); |
@@ -2476,7 +2598,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithAudioOnlyAnswer) { |
EXPECT_EQ(kAudioTrack2, voice_channel_->send_streams()[0].id); |
// Change session back to audio only. |
- mediastream_signaling_.UseOptionsAudioOnly(); |
+ SendAudioOnlyStream2(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
EXPECT_EQ(0u, video_channel_->recv_streams().size()); |
@@ -2492,7 +2614,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithVideoOnlyAnswer) { |
Init(); |
EXPECT_TRUE(media_engine_->GetVideoChannel(0) == NULL); |
EXPECT_TRUE(media_engine_->GetVoiceChannel(0) == NULL); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
cricket::MediaSessionOptions options; |
@@ -2517,7 +2639,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithVideoOnlyAnswer) { |
EXPECT_EQ(kVideoTrack1, video_channel_->send_streams()[0].id); |
// Update the session descriptions, with Audio and Video. |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
voice_channel_ = media_engine_->GetVoiceChannel(0); |
@@ -2529,7 +2651,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithVideoOnlyAnswer) { |
EXPECT_EQ(kAudioTrack2, voice_channel_->send_streams()[0].id); |
// Change session back to video only. |
- mediastream_signaling_.UseOptionsVideoOnly(); |
+ SendVideoOnlyStream2(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
video_channel_ = media_engine_->GetVideoChannel(0); |
@@ -2543,7 +2665,7 @@ TEST_F(WebRtcSessionTest, TestAVOfferWithVideoOnlyAnswer) { |
TEST_F(WebRtcSessionTest, VerifyCryptoParamsInSDP) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
VerifyCryptoParams(offer->description()); |
SetRemoteDescriptionWithoutError(offer.release()); |
@@ -2554,7 +2676,7 @@ TEST_F(WebRtcSessionTest, VerifyCryptoParamsInSDP) { |
TEST_F(WebRtcSessionTest, VerifyNoCryptoParamsInSDP) { |
options_.disable_encryption = true; |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
VerifyNoCryptoParams(offer->description(), false); |
} |
@@ -2573,7 +2695,7 @@ TEST_F(WebRtcSessionTest, VerifyAnswerFromCryptoOffer) { |
// no a=ice-ufrag and a=ice-pwd lines are present in the SDP. |
TEST_F(WebRtcSessionTest, TestSetLocalDescriptionWithoutIce) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
std::string sdp; |
@@ -2599,7 +2721,7 @@ TEST_F(WebRtcSessionTest, TestSetRemoteDescriptionWithoutIce) { |
// too short ice ufrag and pwd strings. |
TEST_F(WebRtcSessionTest, TestSetLocalDescriptionInvalidIceCredentials) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
std::string sdp; |
@@ -2705,7 +2827,7 @@ TEST_F(WebRtcSessionTest, TestIgnoreCandidatesForUnusedTransportWhenBundling) { |
AddInterface(rtc::SocketAddress(kClientAddrHost1, kClientAddrPort)); |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyBalanced); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2788,7 +2910,7 @@ TEST_F(WebRtcSessionTest, TestIgnoreCandidatesForUnusedTransportWhenBundling) { |
// kBundlePolicyBalanced BUNDLE policy and answer contains BUNDLE. |
TEST_F(WebRtcSessionTest, TestBalancedBundleInAnswer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyBalanced); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2799,7 +2921,7 @@ TEST_F(WebRtcSessionTest, TestBalancedBundleInAnswer) { |
EXPECT_NE(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -2811,7 +2933,7 @@ TEST_F(WebRtcSessionTest, TestBalancedBundleInAnswer) { |
// kBundlePolicyBalanced BUNDLE policy but no BUNDLE in the answer. |
TEST_F(WebRtcSessionTest, TestBalancedNoBundleInAnswer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyBalanced); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2822,7 +2944,7 @@ TEST_F(WebRtcSessionTest, TestBalancedNoBundleInAnswer) { |
EXPECT_NE(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
// Remove BUNDLE from the answer. |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
@@ -2841,7 +2963,7 @@ TEST_F(WebRtcSessionTest, TestBalancedNoBundleInAnswer) { |
// kBundlePolicyMaxBundle policy with BUNDLE in the answer. |
TEST_F(WebRtcSessionTest, TestMaxBundleBundleInAnswer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2852,7 +2974,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleBundleInAnswer) { |
EXPECT_EQ(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -2865,7 +2987,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleBundleInAnswer) { |
// audio content in the answer. |
TEST_F(WebRtcSessionTest, TestMaxBundleRejectAudio) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2876,7 +2998,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleRejectAudio) { |
EXPECT_EQ(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
cricket::MediaSessionOptions recv_options; |
recv_options.recv_audio = false; |
recv_options.recv_video = true; |
@@ -2897,7 +3019,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleRejectAudio) { |
// kBundlePolicyMaxBundle policy but no BUNDLE in the answer. |
TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInAnswer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2908,7 +3030,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInAnswer) { |
EXPECT_EQ(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
// Remove BUNDLE from the answer. |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
@@ -2927,7 +3049,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInAnswer) { |
// kBundlePolicyMaxBundle policy with BUNDLE in the remote offer. |
TEST_F(WebRtcSessionTest, TestMaxBundleBundleInRemoteOffer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateRemoteOffer(); |
SetRemoteDescriptionWithoutError(offer); |
@@ -2935,7 +3057,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleBundleInRemoteOffer) { |
EXPECT_EQ(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = CreateAnswer(nullptr); |
SetLocalDescriptionWithoutError(answer); |
@@ -2946,7 +3068,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleBundleInRemoteOffer) { |
// kBundlePolicyMaxBundle policy but no BUNDLE in the remote offer. |
TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInRemoteOffer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
// Remove BUNDLE from the offer. |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateRemoteOffer()); |
@@ -2964,7 +3086,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleNoBundleInRemoteOffer) { |
// kBundlePolicyMaxCompat bundle policy and answer contains BUNDLE. |
TEST_F(WebRtcSessionTest, TestMaxCompatBundleInAnswer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxCompat); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2975,7 +3097,7 @@ TEST_F(WebRtcSessionTest, TestMaxCompatBundleInAnswer) { |
EXPECT_NE(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -2989,7 +3111,7 @@ TEST_F(WebRtcSessionTest, TestMaxCompatBundleInAnswer) { |
// kBundlePolicyMaxCompat BUNDLE policy but no BUNDLE in the answer. |
TEST_F(WebRtcSessionTest, TestMaxCompatNoBundleInAnswer) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxCompat); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -2999,7 +3121,7 @@ TEST_F(WebRtcSessionTest, TestMaxCompatNoBundleInAnswer) { |
EXPECT_NE(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
// Remove BUNDLE from the answer. |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
@@ -3018,7 +3140,7 @@ TEST_F(WebRtcSessionTest, TestMaxCompatNoBundleInAnswer) { |
// kBundlePolicyMaxbundle and then we call SetRemoteDescription first. |
TEST_F(WebRtcSessionTest, TestMaxBundleWithSetRemoteDescriptionFirst) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyMaxBundle); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -3032,7 +3154,7 @@ TEST_F(WebRtcSessionTest, TestMaxBundleWithSetRemoteDescriptionFirst) { |
TEST_F(WebRtcSessionTest, TestRequireRtcpMux) { |
InitWithRtcpMuxPolicy(PeerConnectionInterface::kRtcpMuxPolicyRequire); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
SessionDescriptionInterface* offer = CreateOffer(options); |
@@ -3041,7 +3163,7 @@ TEST_F(WebRtcSessionTest, TestRequireRtcpMux) { |
EXPECT_TRUE(session_->voice_rtcp_transport_channel() == NULL); |
EXPECT_TRUE(session_->video_rtcp_transport_channel() == NULL); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -3052,7 +3174,7 @@ TEST_F(WebRtcSessionTest, TestRequireRtcpMux) { |
TEST_F(WebRtcSessionTest, TestNegotiateRtcpMux) { |
InitWithRtcpMuxPolicy(PeerConnectionInterface::kRtcpMuxPolicyNegotiate); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
SessionDescriptionInterface* offer = CreateOffer(options); |
@@ -3061,7 +3183,7 @@ TEST_F(WebRtcSessionTest, TestNegotiateRtcpMux) { |
EXPECT_TRUE(session_->voice_rtcp_transport_channel() != NULL); |
EXPECT_TRUE(session_->video_rtcp_transport_channel() != NULL); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -3074,7 +3196,7 @@ TEST_F(WebRtcSessionTest, TestNegotiateRtcpMux) { |
// if BUNDLE is enabled but rtcp-mux is disabled in m-lines. |
TEST_F(WebRtcSessionTest, TestDisabledRtcpMuxWithBundleEnabled) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -3102,7 +3224,7 @@ TEST_F(WebRtcSessionTest, TestDisabledRtcpMuxWithBundleEnabled) { |
TEST_F(WebRtcSessionTest, SetAudioPlayout) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); |
ASSERT_TRUE(channel != NULL); |
@@ -3127,7 +3249,7 @@ TEST_F(WebRtcSessionTest, SetAudioPlayout) { |
TEST_F(WebRtcSessionTest, SetAudioSend) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); |
ASSERT_TRUE(channel != NULL); |
@@ -3157,7 +3279,7 @@ TEST_F(WebRtcSessionTest, SetAudioSend) { |
TEST_F(WebRtcSessionTest, AudioRendererForLocalStream) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
cricket::FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); |
ASSERT_TRUE(channel != NULL); |
@@ -3180,7 +3302,7 @@ TEST_F(WebRtcSessionTest, AudioRendererForLocalStream) { |
TEST_F(WebRtcSessionTest, SetVideoPlayout) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
cricket::FakeVideoMediaChannel* channel = media_engine_->GetVideoChannel(0); |
ASSERT_TRUE(channel != NULL); |
@@ -3197,7 +3319,7 @@ TEST_F(WebRtcSessionTest, SetVideoPlayout) { |
TEST_F(WebRtcSessionTest, SetVideoSend) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
cricket::FakeVideoMediaChannel* channel = media_engine_->GetVideoChannel(0); |
ASSERT_TRUE(channel != NULL); |
@@ -3222,7 +3344,7 @@ TEST_F(WebRtcSessionTest, CanInsertDtmf) { |
TEST_F(WebRtcSessionTest, InsertDtmf) { |
// Setup |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
CreateAndSetRemoteOfferAndLocalAnswer(); |
FakeVoiceMediaChannel* channel = media_engine_->GetVoiceChannel(0); |
EXPECT_EQ(0U, channel->dtmf_info_queue().size()); |
@@ -3273,7 +3395,7 @@ TEST_F(WebRtcSessionTest, TestInitiatorFlagAsReceiver) { |
// Verifing local offer and remote answer have matching m-lines as per RFC 3264. |
TEST_F(WebRtcSessionTest, TestIncorrectMLinesInRemoteAnswer) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
@@ -3321,7 +3443,7 @@ TEST_F(WebRtcSessionTest, TestIncorrectMLinesInRemoteAnswer) { |
// RFC 3264. |
TEST_F(WebRtcSessionTest, TestIncorrectMLinesInLocalAnswer) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateRemoteOffer(); |
SetRemoteDescriptionWithoutError(offer); |
SessionDescriptionInterface* answer = CreateAnswer(NULL); |
@@ -3342,7 +3464,7 @@ TEST_F(WebRtcSessionTest, TestIncorrectMLinesInLocalAnswer) { |
// before SetLocalDescription is called. |
TEST_F(WebRtcSessionTest, TestIceStartAfterSetLocalDescriptionOnly) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateRemoteOffer(); |
cricket::Candidate candidate; |
candidate.set_component(1); |
@@ -3372,7 +3494,7 @@ TEST_F(WebRtcSessionTest, TestIceStartAfterSetLocalDescriptionOnly) { |
// description as per security policy set in MediaSessionDescriptionFactory. |
TEST_F(WebRtcSessionTest, TestCryptoAfterSetLocalDescription) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
// Making sure SetLocalDescription correctly sets crypto value in |
@@ -3391,7 +3513,7 @@ TEST_F(WebRtcSessionTest, TestCryptoAfterSetLocalDescription) { |
TEST_F(WebRtcSessionTest, TestCryptoAfterSetLocalDescriptionWithDisabled) { |
options_.disable_encryption = true; |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
// Making sure SetLocalDescription correctly sets crypto value in |
@@ -3416,7 +3538,7 @@ TEST_F(WebRtcSessionTest, TestCreateAnswerWithNewUfragAndPassword) { |
CreateRemoteOffer(options)); |
SetRemoteDescriptionWithoutError(offer.release()); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
CreateAnswer(NULL)); |
SetLocalDescriptionWithoutError(answer.release()); |
@@ -3447,7 +3569,7 @@ TEST_F(WebRtcSessionTest, TestCreateAnswerWithOldUfragAndPassword) { |
CreateRemoteOffer(options)); |
SetRemoteDescriptionWithoutError(offer.release()); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> answer( |
CreateAnswer(NULL)); |
SetLocalDescriptionWithoutError(answer.release()); |
@@ -3470,7 +3592,7 @@ TEST_F(WebRtcSessionTest, TestCreateAnswerWithOldUfragAndPassword) { |
TEST_F(WebRtcSessionTest, TestSessionContentError) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
const std::string session_id_orig = offer->session_id(); |
const std::string session_version_orig = offer->session_version(); |
@@ -3479,7 +3601,7 @@ TEST_F(WebRtcSessionTest, TestSessionContentError) { |
video_channel_ = media_engine_->GetVideoChannel(0); |
video_channel_->set_fail_set_send_codecs(true); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionAnswerExpectError("ERROR_CONTENT", answer); |
@@ -3647,11 +3769,8 @@ TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |
// TEST PLAN: Set the port number to something new, set it in the SDP, |
// and pass it all the way down. |
- webrtc::InternalDataChannelInit dci; |
- dci.reliable = true; |
EXPECT_EQ(cricket::DCT_SCTP, data_engine_->last_channel_type()); |
- rtc::scoped_refptr<webrtc::DataChannel> dc = |
- session_->CreateDataChannel("datachannel", &dci); |
+ CreateDataChannel(); |
cricket::FakeDataMediaChannel* ch = data_engine_->GetChannel(0); |
int portnum = -1; |
@@ -3673,7 +3792,36 @@ TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |
EXPECT_EQ(new_recv_port, portnum); |
} |
-TEST_F(WebRtcSessionTest, TestUsesProvidedCertificate) { |
+// Verifies that when a session's DataChannel receives an OPEN message, |
+// WebRtcSession signals the DataChannel creation request with the expected |
+// config. |
+TEST_P(WebRtcSessionTest, TestSctpDataChannelOpenMessage) { |
+ MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
+ |
+ InitWithDtls(GetParam()); |
+ |
+ SetLocalDescriptionWithDataChannel(); |
+ EXPECT_EQ(cricket::DCT_SCTP, data_engine_->last_channel_type()); |
+ |
+ webrtc::DataChannelInit config; |
+ config.id = 1; |
+ rtc::Buffer payload; |
+ webrtc::WriteDataChannelOpenMessage("a", config, &payload); |
+ cricket::ReceiveDataParams params; |
+ params.ssrc = config.id; |
+ params.type = cricket::DMT_CONTROL; |
+ |
+ cricket::DataChannel* data_channel = session_->data_channel(); |
+ data_channel->SignalDataReceived(data_channel, params, payload); |
+ |
+ EXPECT_EQ("a", last_data_channel_label_); |
+ EXPECT_EQ(config.id, last_data_channel_config_.id); |
+ EXPECT_FALSE(last_data_channel_config_.negotiated); |
+ EXPECT_EQ(webrtc::InternalDataChannelInit::kAcker, |
+ last_data_channel_config_.open_handshake_role); |
+} |
+ |
+TEST_P(WebRtcSessionTest, TestUsesProvidedCertificate) { |
rtc::scoped_refptr<rtc::RTCCertificate> certificate = |
FakeDtlsIdentityStore::GenerateCertificate(); |
@@ -3693,7 +3841,7 @@ TEST_P(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { |
InitWithDtls(GetParam()); |
EXPECT_TRUE(session_->waiting_for_certificate_for_testing()); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); |
EXPECT_TRUE(offer != NULL); |
@@ -3810,7 +3958,7 @@ TEST_F(WebRtcSessionTest, TestDscpConstraint) { |
constraints_->AddOptional( |
webrtc::MediaConstraintsInterface::kEnableDscp, true); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -3834,7 +3982,7 @@ TEST_F(WebRtcSessionTest, TestSuspendBelowMinBitrateConstraint) { |
webrtc::MediaConstraintsInterface::kEnableVideoSuspendBelowMinBitrate, |
true); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -3862,7 +4010,7 @@ TEST_F(WebRtcSessionTest, TestCombinedAudioVideoBweConstraint) { |
webrtc::MediaConstraintsInterface::kCombinedAudioVideoBwe, |
true); |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -3882,7 +4030,7 @@ TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { |
InitWithDtls(GetParam()); |
SetFactoryDtlsSrtp(); |
- mediastream_signaling_.UseOptionsAudioOnly(); |
+ SendAudioOnlyStream2(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -3912,7 +4060,7 @@ TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { |
InitWithDtls(GetParam()); |
SetFactoryDtlsSrtp(); |
- mediastream_signaling_.UseOptionsAudioOnly(); |
+ SendAudioOnlyStream2(); |
SessionDescriptionInterface* offer = CreateOffer(); |
SetLocalDescriptionWithoutError(offer); |
@@ -3938,7 +4086,7 @@ TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { |
// by local side. |
TEST_F(WebRtcSessionTest, TestRtxRemovedByCreateAnswer) { |
Init(); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
std::string offer_sdp(kSdpWithRtx); |
SessionDescriptionInterface* offer = |
@@ -3961,7 +4109,7 @@ TEST_F(WebRtcSessionTest, TestRtxRemovedByCreateAnswer) { |
// and voice channels. |
TEST_F(WebRtcSessionTest, TestSetSocketOptionBeforeBundle) { |
InitWithBundlePolicy(PeerConnectionInterface::kBundlePolicyBalanced); |
- mediastream_signaling_.SendAudioVideoStream1(); |
+ SendAudioVideoStream1(); |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.use_rtp_mux = true; |
@@ -3991,7 +4139,7 @@ TEST_F(WebRtcSessionTest, TestSetSocketOptionBeforeBundle) { |
EXPECT_NE(session_->voice_rtp_transport_channel(), |
session_->video_rtp_transport_channel()); |
- mediastream_signaling_.SendAudioVideoStream2(); |
+ SendAudioVideoStream2(); |
SessionDescriptionInterface* answer = |
CreateRemoteAnswer(session_->local_description()); |
SetRemoteDescriptionWithoutError(answer); |
@@ -4015,10 +4163,12 @@ TEST_F(WebRtcSessionTest, CreateOffersAndShutdown) { |
PeerConnectionInterface::RTCOfferAnswerOptions options; |
options.offer_to_receive_audio = |
RTCOfferAnswerOptions::kOfferToReceiveMediaTrue; |
+ cricket::MediaSessionOptions session_options; |
+ session_options.recv_audio = true; |
for (auto& o : observers) { |
o = new WebRtcSessionCreateSDPObserverForTest(); |
- session_->CreateOffer(o, options); |
+ session_->CreateOffer(o, options, session_options); |
} |
session_.reset(); |