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

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

Issue 1516993002: Properly handle different transports having different SSL roles. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Created 5 years 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,
(...skipping 1947 matching lines...) Expand 10 before | Expand all | Expand 10 after
1958 SessionDescriptionInterface* answer = CreateAnswer(NULL); 1958 SessionDescriptionInterface* answer = CreateAnswer(NULL);
1959 ASSERT_TRUE(answer != NULL); 1959 ASSERT_TRUE(answer != NULL);
1960 VerifyFingerprintStatus(answer->description(), false); 1960 VerifyFingerprintStatus(answer->description(), false);
1961 // Check that we don't have an a=crypto line in the answer. 1961 // Check that we don't have an a=crypto line in the answer.
1962 VerifyNoCryptoParams(answer->description(), false); 1962 VerifyNoCryptoParams(answer->description(), false);
1963 1963
1964 // Now set the local description, which should work, even without a=crypto. 1964 // Now set the local description, which should work, even without a=crypto.
1965 SetLocalDescriptionWithoutError(answer); 1965 SetLocalDescriptionWithoutError(answer);
1966 } 1966 }
1967 1967
1968 // Test that we can create and set an answer correctly when different
1969 // SSL roles have been negotiated for different transports.
1970 // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=4525
1971 TEST_P(WebRtcSessionTest, TestCreateAnswerWithDifferentSslRoles) {
1972 SendAudioVideoStream1();
1973 InitWithDtls(GetParam());
1974 SetFactoryDtlsSrtp();
1975
1976 SessionDescriptionInterface* offer = CreateOffer();
1977 SetLocalDescriptionWithoutError(offer);
1978
1979 cricket::MediaSessionOptions options;
1980 options.recv_video = true;
1981
1982 SessionDescriptionInterface* answer =
1983 CreateRemoteAnswer(offer, options, cricket::SEC_DISABLED);
1984 TransportInfo* audio_transport_info =
1985 answer->description()->GetTransportInfoByName("audio");
1986 audio_transport_info->description.connection_role =
1987 cricket::CONNECTIONROLE_ACTIVE;
1988 TransportInfo* video_transport_info =
1989 answer->description()->GetTransportInfoByName("video");
1990 video_transport_info->description.connection_role =
1991 cricket::CONNECTIONROLE_PASSIVE;
1992 SetRemoteDescriptionWithoutError(answer);
1993
1994 offer = CreateRemoteOfferWithVersion(options, cricket::SEC_DISABLED,
1995 kSessionVersion,
1996 session_->remote_description());
1997 SetRemoteDescriptionWithoutError(offer);
1998
1999 answer = CreateAnswer(nullptr);
2000 audio_transport_info = answer->description()->GetTransportInfoByName("audio");
2001 EXPECT_EQ(cricket::CONNECTIONROLE_PASSIVE,
2002 audio_transport_info->description.connection_role);
2003 video_transport_info = answer->description()->GetTransportInfoByName("video");
2004 EXPECT_EQ(cricket::CONNECTIONROLE_ACTIVE,
2005 video_transport_info->description.connection_role);
2006 SetLocalDescriptionWithoutError(answer);
2007 }
2008
1968 TEST_F(WebRtcSessionTest, TestSetLocalOfferTwice) { 2009 TEST_F(WebRtcSessionTest, TestSetLocalOfferTwice) {
1969 Init(); 2010 Init();
1970 SendNothing(); 2011 SendNothing();
1971 // SetLocalDescription take ownership of offer. 2012 // SetLocalDescription take ownership of offer.
1972 SessionDescriptionInterface* offer = CreateOffer(); 2013 SessionDescriptionInterface* offer = CreateOffer();
1973 SetLocalDescriptionWithoutError(offer); 2014 SetLocalDescriptionWithoutError(offer);
1974 2015
1975 // SetLocalDescription take ownership of offer. 2016 // SetLocalDescription take ownership of offer.
1976 SessionDescriptionInterface* offer2 = CreateOffer(); 2017 SessionDescriptionInterface* offer2 = CreateOffer();
1977 SetLocalDescriptionWithoutError(offer2); 2018 SetLocalDescriptionWithoutError(offer2);
(...skipping 1591 matching lines...) Expand 10 before | Expand all | Expand 10 after
3569 rtc::scoped_ptr<JsepSessionDescription> offer( 3610 rtc::scoped_ptr<JsepSessionDescription> offer(
3570 CreateRemoteOffer(options)); 3611 CreateRemoteOffer(options));
3571 SetRemoteDescriptionWithoutError(offer.release()); 3612 SetRemoteDescriptionWithoutError(offer.release());
3572 3613
3573 SendAudioVideoStream1(); 3614 SendAudioVideoStream1();
3574 rtc::scoped_ptr<SessionDescriptionInterface> answer( 3615 rtc::scoped_ptr<SessionDescriptionInterface> answer(
3575 CreateAnswer(NULL)); 3616 CreateAnswer(NULL));
3576 SetLocalDescriptionWithoutError(answer.release()); 3617 SetLocalDescriptionWithoutError(answer.release());
3577 3618
3578 // Receive an offer with new ufrag and password. 3619 // Receive an offer with new ufrag and password.
3579 options.transport_options.ice_restart = true; 3620 options.audio_transport_options.ice_restart = true;
3621 options.video_transport_options.ice_restart = true;
3622 options.data_transport_options.ice_restart = true;
3580 rtc::scoped_ptr<JsepSessionDescription> updated_offer1( 3623 rtc::scoped_ptr<JsepSessionDescription> updated_offer1(
3581 CreateRemoteOffer(options, session_->remote_description())); 3624 CreateRemoteOffer(options, session_->remote_description()));
3582 SetRemoteDescriptionWithoutError(updated_offer1.release()); 3625 SetRemoteDescriptionWithoutError(updated_offer1.release());
3583 3626
3584 rtc::scoped_ptr<SessionDescriptionInterface> updated_answer1( 3627 rtc::scoped_ptr<SessionDescriptionInterface> updated_answer1(
3585 CreateAnswer(NULL)); 3628 CreateAnswer(NULL));
3586 3629
3587 CompareIceUfragAndPassword(updated_answer1->description(), 3630 CompareIceUfragAndPassword(updated_answer1->description(),
3588 session_->local_description()->description(), 3631 session_->local_description()->description(),
3589 false); 3632 false);
(...skipping 10 matching lines...) Expand all
3600 rtc::scoped_ptr<JsepSessionDescription> offer( 3643 rtc::scoped_ptr<JsepSessionDescription> offer(
3601 CreateRemoteOffer(options)); 3644 CreateRemoteOffer(options));
3602 SetRemoteDescriptionWithoutError(offer.release()); 3645 SetRemoteDescriptionWithoutError(offer.release());
3603 3646
3604 SendAudioVideoStream1(); 3647 SendAudioVideoStream1();
3605 rtc::scoped_ptr<SessionDescriptionInterface> answer( 3648 rtc::scoped_ptr<SessionDescriptionInterface> answer(
3606 CreateAnswer(NULL)); 3649 CreateAnswer(NULL));
3607 SetLocalDescriptionWithoutError(answer.release()); 3650 SetLocalDescriptionWithoutError(answer.release());
3608 3651
3609 // Receive an offer without changed ufrag or password. 3652 // Receive an offer without changed ufrag or password.
3610 options.transport_options.ice_restart = false; 3653 options.audio_transport_options.ice_restart = false;
3654 options.video_transport_options.ice_restart = false;
3655 options.data_transport_options.ice_restart = false;
3611 rtc::scoped_ptr<JsepSessionDescription> updated_offer2( 3656 rtc::scoped_ptr<JsepSessionDescription> updated_offer2(
3612 CreateRemoteOffer(options, session_->remote_description())); 3657 CreateRemoteOffer(options, session_->remote_description()));
3613 SetRemoteDescriptionWithoutError(updated_offer2.release()); 3658 SetRemoteDescriptionWithoutError(updated_offer2.release());
3614 3659
3615 rtc::scoped_ptr<SessionDescriptionInterface> updated_answer2( 3660 rtc::scoped_ptr<SessionDescriptionInterface> updated_answer2(
3616 CreateAnswer(NULL)); 3661 CreateAnswer(NULL));
3617 3662
3618 CompareIceUfragAndPassword(updated_answer2->description(), 3663 CompareIceUfragAndPassword(updated_answer2->description(),
3619 session_->local_description()->description(), 3664 session_->local_description()->description(),
3620 true); 3665 true);
(...skipping 579 matching lines...) Expand 10 before | Expand all | Expand 10 after
4200 } 4245 }
4201 4246
4202 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test 4247 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test
4203 // currently fails because upon disconnection and reconnection OnIceComplete is 4248 // currently fails because upon disconnection and reconnection OnIceComplete is
4204 // called more than once without returning to IceGatheringGathering. 4249 // called more than once without returning to IceGatheringGathering.
4205 4250
4206 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, 4251 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests,
4207 WebRtcSessionTest, 4252 WebRtcSessionTest,
4208 testing::Values(ALREADY_GENERATED, 4253 testing::Values(ALREADY_GENERATED,
4209 DTLS_IDENTITY_STORE)); 4254 DTLS_IDENTITY_STORE));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698