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

Side by Side Diff: talk/app/webrtc/webrtcsession_unittest.cc

Issue 1269843005: Added DtlsCertificate, a ref counted object owning an SSLIdentity (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Trying to get iOS to compile Created 5 years, 4 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
OLDNEW
1 /* 1 /*
2 * libjingle 2 * libjingle
3 * Copyright 2012 Google Inc. 3 * Copyright 2012 Google Inc.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met: 6 * modification, are permitted provided that the following conditions are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright notice, 8 * 1. Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer. 9 * this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright notice, 10 * 2. Redistributions in binary form must reproduce the above copyright notice,
11 * this list of conditions and the following disclaimer in the documentation 11 * this list of conditions and the following disclaimer in the documentation
12 * and/or other materials provided with the distribution. 12 * and/or other materials provided with the distribution.
13 * 3. The name of the author may not be used to endorse or promote products 13 * 3. The name of the author may not be used to endorse or promote products
14 * derived from this software without specific prior written permission. 14 * derived from this software without specific prior written permission.
15 * 15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */ 26 */
27 27
28 #include "talk/app/webrtc/audiotrack.h" 28 #include "talk/app/webrtc/audiotrack.h"
29 #include "talk/app/webrtc/dtlscertificate.h"
29 #include "talk/app/webrtc/fakemetricsobserver.h" 30 #include "talk/app/webrtc/fakemetricsobserver.h"
30 #include "talk/app/webrtc/jsepicecandidate.h" 31 #include "talk/app/webrtc/jsepicecandidate.h"
31 #include "talk/app/webrtc/jsepsessiondescription.h" 32 #include "talk/app/webrtc/jsepsessiondescription.h"
32 #include "talk/app/webrtc/mediastreamsignaling.h" 33 #include "talk/app/webrtc/mediastreamsignaling.h"
33 #include "talk/app/webrtc/streamcollection.h" 34 #include "talk/app/webrtc/streamcollection.h"
34 #include "talk/app/webrtc/test/fakeconstraints.h" 35 #include "talk/app/webrtc/test/fakeconstraints.h"
35 #include "talk/app/webrtc/test/fakedtlsidentitystore.h" 36 #include "talk/app/webrtc/test/fakedtlsidentitystore.h"
36 #include "talk/app/webrtc/test/fakemediastreamsignaling.h" 37 #include "talk/app/webrtc/test/fakemediastreamsignaling.h"
37 #include "talk/app/webrtc/videotrack.h" 38 #include "talk/app/webrtc/videotrack.h"
38 #include "talk/app/webrtc/webrtcsession.h" 39 #include "talk/app/webrtc/webrtcsession.h"
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
352 desc_factory_->set_add_legacy_streams(false); 353 desc_factory_->set_add_legacy_streams(false);
353 allocator_->set_step_delay(cricket::kMinimumStepDelay); 354 allocator_->set_step_delay(cricket::kMinimumStepDelay);
354 } 355 }
355 356
356 void AddInterface(const SocketAddress& addr) { 357 void AddInterface(const SocketAddress& addr) {
357 network_manager_.AddInterface(addr); 358 network_manager_.AddInterface(addr);
358 } 359 }
359 360
360 void Init( 361 void Init(
361 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store, 362 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store,
363 const rtc::scoped_refptr<webrtc::DtlsCertificate>& certificate,
362 const PeerConnectionInterface::RTCConfiguration& rtc_configuration) { 364 const PeerConnectionInterface::RTCConfiguration& rtc_configuration) {
363 ASSERT_TRUE(session_.get() == NULL); 365 ASSERT_TRUE(session_.get() == NULL);
364 session_.reset(new WebRtcSessionForTest( 366 session_.reset(new WebRtcSessionForTest(
365 channel_manager_.get(), rtc::Thread::Current(), 367 channel_manager_.get(), rtc::Thread::Current(),
366 rtc::Thread::Current(), allocator_.get(), 368 rtc::Thread::Current(), allocator_.get(),
367 &observer_, 369 &observer_,
368 &mediastream_signaling_)); 370 &mediastream_signaling_));
369 371
370 EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew, 372 EXPECT_EQ(PeerConnectionInterface::kIceConnectionNew,
371 observer_.ice_connection_state_); 373 observer_.ice_connection_state_);
372 EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew, 374 EXPECT_EQ(PeerConnectionInterface::kIceGatheringNew,
373 observer_.ice_gathering_state_); 375 observer_.ice_gathering_state_);
374 376
375 EXPECT_TRUE(session_->Initialize( 377 if (!certificate) {
376 options_, constraints_.get(), dtls_identity_store.Pass(), 378 EXPECT_TRUE(session_->Initialize(options_, constraints_.get(),
377 rtc_configuration)); 379 dtls_identity_store.Pass(),
380 rtc_configuration));
381 } else {
382 EXPECT_TRUE(session_->Initialize(options_, constraints_.get(),
383 certificate, rtc_configuration));
384 }
378 session_->set_metrics_observer(metrics_observer_); 385 session_->set_metrics_observer(metrics_observer_);
379 } 386 }
380 387
381 void Init() { 388 void Init() {
382 PeerConnectionInterface::RTCConfiguration configuration; 389 PeerConnectionInterface::RTCConfiguration configuration;
383 Init(nullptr, configuration); 390 Init(nullptr, nullptr, configuration);
384 } 391 }
385 392
386 void InitWithIceTransport( 393 void InitWithIceTransport(
387 PeerConnectionInterface::IceTransportsType ice_transport_type) { 394 PeerConnectionInterface::IceTransportsType ice_transport_type) {
388 PeerConnectionInterface::RTCConfiguration configuration; 395 PeerConnectionInterface::RTCConfiguration configuration;
389 configuration.type = ice_transport_type; 396 configuration.type = ice_transport_type;
390 Init(nullptr, configuration); 397 Init(nullptr, nullptr, configuration);
391 } 398 }
392 399
393 void InitWithBundlePolicy( 400 void InitWithBundlePolicy(
394 PeerConnectionInterface::BundlePolicy bundle_policy) { 401 PeerConnectionInterface::BundlePolicy bundle_policy) {
395 PeerConnectionInterface::RTCConfiguration configuration; 402 PeerConnectionInterface::RTCConfiguration configuration;
396 configuration.bundle_policy = bundle_policy; 403 configuration.bundle_policy = bundle_policy;
397 Init(nullptr, configuration); 404 Init(nullptr, nullptr, configuration);
398 } 405 }
399 406
400 void InitWithRtcpMuxPolicy( 407 void InitWithRtcpMuxPolicy(
401 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) { 408 PeerConnectionInterface::RtcpMuxPolicy rtcp_mux_policy) {
402 PeerConnectionInterface::RTCConfiguration configuration; 409 PeerConnectionInterface::RTCConfiguration configuration;
403 configuration.rtcp_mux_policy = rtcp_mux_policy; 410 configuration.rtcp_mux_policy = rtcp_mux_policy;
404 Init(nullptr, configuration); 411 Init(nullptr, nullptr, configuration);
405 } 412 }
406 413
407 void InitWithDtls(bool identity_request_should_fail = false) { 414 void InitWithDtls(bool identity_request_should_fail = false) {
408 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( 415 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store(
409 new FakeDtlsIdentityStore()); 416 new FakeDtlsIdentityStore());
410 dtls_identity_store->set_should_fail(identity_request_should_fail); 417 dtls_identity_store->set_should_fail(identity_request_should_fail);
411 PeerConnectionInterface::RTCConfiguration configuration; 418 PeerConnectionInterface::RTCConfiguration configuration;
412 Init(dtls_identity_store.Pass(), configuration); 419 Init(dtls_identity_store.Pass(), nullptr, configuration);
413 } 420 }
414 421
415 void InitWithDtmfCodec() { 422 void InitWithDtmfCodec() {
416 // Add kTelephoneEventCodec for dtmf test. 423 // Add kTelephoneEventCodec for dtmf test.
417 const cricket::AudioCodec kTelephoneEventCodec( 424 const cricket::AudioCodec kTelephoneEventCodec(
418 106, "telephone-event", 8000, 0, 1, 0); 425 106, "telephone-event", 8000, 0, 1, 0);
419 std::vector<cricket::AudioCodec> codecs; 426 std::vector<cricket::AudioCodec> codecs;
420 codecs.push_back(kTelephoneEventCodec); 427 codecs.push_back(kTelephoneEventCodec);
421 media_engine_->SetAudioCodecs(codecs); 428 media_engine_->SetAudioCodecs(codecs);
422 desc_factory_->set_audio_codecs(codecs); 429 desc_factory_->set_audio_codecs(codecs);
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 EXPECT_EQ(std::string(cricket::kMediaProtocolAvpf), 540 EXPECT_EQ(std::string(cricket::kMediaProtocolAvpf),
534 video_content->protocol()); 541 video_content->protocol());
535 } 542 }
536 } 543 }
537 544
538 // Set the internal fake description factories to do DTLS-SRTP. 545 // Set the internal fake description factories to do DTLS-SRTP.
539 void SetFactoryDtlsSrtp() { 546 void SetFactoryDtlsSrtp() {
540 desc_factory_->set_secure(cricket::SEC_DISABLED); 547 desc_factory_->set_secure(cricket::SEC_DISABLED);
541 std::string identity_name = "WebRTC" + 548 std::string identity_name = "WebRTC" +
542 rtc::ToString(rtc::CreateRandomId()); 549 rtc::ToString(rtc::CreateRandomId());
543 identity_.reset(rtc::SSLIdentity::Generate(identity_name)); 550 certificate_ = webrtc::DtlsCertificate::Create(
544 tdesc_factory_->set_identity(identity_.get()); 551 rtc::scoped_ptr<rtc::SSLIdentity>(
552 rtc::SSLIdentity::Generate(identity_name)).Pass());
553 tdesc_factory_->set_certificate(certificate_);
545 tdesc_factory_->set_secure(cricket::SEC_REQUIRED); 554 tdesc_factory_->set_secure(cricket::SEC_REQUIRED);
546 } 555 }
547 556
548 void VerifyFingerprintStatus(const cricket::SessionDescription* sdp, 557 void VerifyFingerprintStatus(const cricket::SessionDescription* sdp,
549 bool expected) { 558 bool expected) {
550 const TransportInfo* audio = sdp->GetTransportInfoByName("audio"); 559 const TransportInfo* audio = sdp->GetTransportInfoByName("audio");
551 ASSERT_TRUE(audio != NULL); 560 ASSERT_TRUE(audio != NULL);
552 ASSERT_EQ(expected, audio->description.identity_fingerprint.get() != NULL); 561 ASSERT_EQ(expected, audio->description.identity_fingerprint.get() != NULL);
553 const TransportInfo* video = sdp->GetTransportInfoByName("video"); 562 const TransportInfo* video = sdp->GetTransportInfoByName("video");
554 ASSERT_TRUE(video != NULL); 563 ASSERT_TRUE(video != NULL);
(...skipping 677 matching lines...) Expand 10 before | Expand all | Expand 10 after
1232 allocator_->set_step_delay(cricket::kMinimumStepDelay); 1241 allocator_->set_step_delay(cricket::kMinimumStepDelay);
1233 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP | 1242 allocator_->set_flags(cricket::PORTALLOCATOR_DISABLE_TCP |
1234 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG); 1243 cricket::PORTALLOCATOR_ENABLE_SHARED_UFRAG);
1235 } 1244 }
1236 1245
1237 cricket::FakeMediaEngine* media_engine_; 1246 cricket::FakeMediaEngine* media_engine_;
1238 cricket::FakeDataEngine* data_engine_; 1247 cricket::FakeDataEngine* data_engine_;
1239 cricket::FakeDeviceManager* device_manager_; 1248 cricket::FakeDeviceManager* device_manager_;
1240 rtc::scoped_ptr<cricket::ChannelManager> channel_manager_; 1249 rtc::scoped_ptr<cricket::ChannelManager> channel_manager_;
1241 rtc::scoped_ptr<cricket::TransportDescriptionFactory> tdesc_factory_; 1250 rtc::scoped_ptr<cricket::TransportDescriptionFactory> tdesc_factory_;
1242 rtc::scoped_ptr<rtc::SSLIdentity> identity_; 1251 rtc::scoped_refptr<webrtc::DtlsCertificate> certificate_;
1243 rtc::scoped_ptr<cricket::MediaSessionDescriptionFactory> desc_factory_; 1252 rtc::scoped_ptr<cricket::MediaSessionDescriptionFactory> desc_factory_;
1244 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; 1253 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_;
1245 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_; 1254 rtc::scoped_ptr<rtc::VirtualSocketServer> vss_;
1246 rtc::scoped_ptr<rtc::FirewallSocketServer> fss_; 1255 rtc::scoped_ptr<rtc::FirewallSocketServer> fss_;
1247 rtc::SocketServerScope ss_scope_; 1256 rtc::SocketServerScope ss_scope_;
1248 rtc::SocketAddress stun_socket_addr_; 1257 rtc::SocketAddress stun_socket_addr_;
1249 rtc::scoped_ptr<cricket::TestStunServer> stun_server_; 1258 rtc::scoped_ptr<cricket::TestStunServer> stun_server_;
1250 cricket::TestTurnServer turn_server_; 1259 cricket::TestTurnServer turn_server_;
1251 rtc::FakeNetworkManager network_manager_; 1260 rtc::FakeNetworkManager network_manager_;
1252 rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_; 1261 rtc::scoped_ptr<cricket::BasicPortAllocator> allocator_;
(...skipping 2334 matching lines...) Expand 10 before | Expand all | Expand 10 after
3587 3596
3588 ASSERT_EQ(1UL, ch->recv_codecs().size()); 3597 ASSERT_EQ(1UL, ch->recv_codecs().size());
3589 EXPECT_EQ(cricket::kGoogleSctpDataCodecId, ch->recv_codecs()[0].id); 3598 EXPECT_EQ(cricket::kGoogleSctpDataCodecId, ch->recv_codecs()[0].id);
3590 EXPECT_EQ(0, strcmp(cricket::kGoogleSctpDataCodecName, 3599 EXPECT_EQ(0, strcmp(cricket::kGoogleSctpDataCodecName,
3591 ch->recv_codecs()[0].name.c_str())); 3600 ch->recv_codecs()[0].name.c_str()));
3592 EXPECT_TRUE(ch->recv_codecs()[0].GetParam(cricket::kCodecParamPort, 3601 EXPECT_TRUE(ch->recv_codecs()[0].GetParam(cricket::kCodecParamPort,
3593 &portnum)); 3602 &portnum));
3594 EXPECT_EQ(new_recv_port, portnum); 3603 EXPECT_EQ(new_recv_port, portnum);
3595 } 3604 }
3596 3605
3606 // Verifies that if a certificate is provided it is the one that will be used.
Henrik Grunell WebRTC 2015/08/12 14:46:30 I think we should run all test with parameters, on
hbos 2015/08/14 14:09:39 Hmm, will think about and address in the next PS..
3607 TEST_F(WebRtcSessionTest, TestUsesProvidedCertificate) {
3608 rtc::scoped_refptr<webrtc::DtlsCertificate> certificate =
3609 FakeDtlsIdentityStore::GenerateCertificate();
3610
3611 PeerConnectionInterface::RTCConfiguration configuration;
3612 Init(nullptr, certificate, configuration);
3613 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate(), 1000);
3614
3615 EXPECT_EQ(session_->get_certificate(), certificate);
3616 }
3617
3597 // Verifies that CreateOffer succeeds when CreateOffer is called before async 3618 // Verifies that CreateOffer succeeds when CreateOffer is called before async
3598 // identity generation is finished. 3619 // identity generation is finished.
3599 TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { 3620 TEST_F(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) {
3600 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); 3621 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3601 InitWithDtls(); 3622 InitWithDtls();
3602 3623
3603 EXPECT_TRUE(session_->waiting_for_identity()); 3624 EXPECT_TRUE(session_->waiting_for_certificate());
3604 mediastream_signaling_.SendAudioVideoStream1(); 3625 mediastream_signaling_.SendAudioVideoStream1();
3605 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); 3626 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
3606 3627
3607 EXPECT_TRUE(offer != NULL); 3628 EXPECT_TRUE(offer != NULL);
3608 VerifyNoCryptoParams(offer->description(), true); 3629 VerifyNoCryptoParams(offer->description(), true);
3609 VerifyFingerprintStatus(offer->description(), true); 3630 VerifyFingerprintStatus(offer->description(), true);
3610 } 3631 }
3611 3632
3612 // Verifies that CreateAnswer succeeds when CreateOffer is called before async 3633 // Verifies that CreateAnswer succeeds when CreateOffer is called before async
3613 // identity generation is finished. 3634 // identity generation is finished.
(...skipping 14 matching lines...) Expand all
3628 VerifyNoCryptoParams(answer->description(), true); 3649 VerifyNoCryptoParams(answer->description(), true);
3629 VerifyFingerprintStatus(answer->description(), true); 3650 VerifyFingerprintStatus(answer->description(), true);
3630 } 3651 }
3631 3652
3632 // Verifies that CreateOffer succeeds when CreateOffer is called after async 3653 // Verifies that CreateOffer succeeds when CreateOffer is called after async
3633 // identity generation is finished. 3654 // identity generation is finished.
3634 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { 3655 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) {
3635 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); 3656 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3636 InitWithDtls(); 3657 InitWithDtls();
3637 3658
3638 EXPECT_TRUE_WAIT(!session_->waiting_for_identity(), 1000); 3659 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate(), 1000);
3639 3660
3640 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); 3661 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
3641 EXPECT_TRUE(offer != NULL); 3662 EXPECT_TRUE(offer != NULL);
3642 } 3663 }
3643 3664
3644 // Verifies that CreateOffer fails when CreateOffer is called after async 3665 // Verifies that CreateOffer fails when CreateOffer is called after async
3645 // identity generation fails. 3666 // identity generation fails.
3646 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) { 3667 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) {
3647 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); 3668 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
3648 InitWithDtls(true); 3669 InitWithDtls(true);
3649 3670
3650 EXPECT_TRUE_WAIT(!session_->waiting_for_identity(), 1000); 3671 EXPECT_TRUE_WAIT(!session_->waiting_for_certificate(), 1000);
3651 3672
3652 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer()); 3673 rtc::scoped_ptr<SessionDescriptionInterface> offer(CreateOffer());
3653 EXPECT_TRUE(offer == NULL); 3674 EXPECT_TRUE(offer == NULL);
3654 } 3675 }
3655 3676
3656 // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made 3677 // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made
3657 // before async identity generation is finished. 3678 // before async identity generation is finished.
3658 TEST_F(WebRtcSessionTest, 3679 TEST_F(WebRtcSessionTest,
3659 TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) { 3680 TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) {
3660 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); 3681 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp);
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after
3943 // terminated. The offer creation may or may not have succeeded, but we 3964 // terminated. The offer creation may or may not have succeeded, but we
3944 // must have received a notification which, so the only invalid state 3965 // must have received a notification which, so the only invalid state
3945 // is kInit. 3966 // is kInit.
3946 EXPECT_NE(WebRtcSessionCreateSDPObserverForTest::kInit, o->state()); 3967 EXPECT_NE(WebRtcSessionCreateSDPObserverForTest::kInit, o->state());
3947 } 3968 }
3948 } 3969 }
3949 3970
3950 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test 3971 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test
3951 // currently fails because upon disconnection and reconnection OnIceComplete is 3972 // currently fails because upon disconnection and reconnection OnIceComplete is
3952 // called more than once without returning to IceGatheringGathering. 3973 // called more than once without returning to IceGatheringGathering.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698