| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  *  Copyright 2012 The WebRTC project authors. All Rights Reserved. |     2  *  Copyright 2012 The WebRTC project authors. All Rights Reserved. | 
|     3  * |     3  * | 
|     4  *  Use of this source code is governed by a BSD-style license |     4  *  Use of this source code is governed by a BSD-style license | 
|     5  *  that can be found in the LICENSE file in the root of the source |     5  *  that can be found in the LICENSE file in the root of the source | 
|     6  *  tree. An additional intellectual property rights grant can be found |     6  *  tree. An additional intellectual property rights grant can be found | 
|     7  *  in the file PATENTS.  All contributing project authors may |     7  *  in the file PATENTS.  All contributing project authors may | 
|     8  *  be found in the AUTHORS file in the root of the source tree. |     8  *  be found in the AUTHORS file in the root of the source tree. | 
|     9  */ |     9  */ | 
|    10  |    10  | 
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|    44 #include "webrtc/media/sctp/sctptransportinternal.h" |    44 #include "webrtc/media/sctp/sctptransportinternal.h" | 
|    45 #include "webrtc/p2p/base/packettransportinterface.h" |    45 #include "webrtc/p2p/base/packettransportinterface.h" | 
|    46 #include "webrtc/p2p/base/stunserver.h" |    46 #include "webrtc/p2p/base/stunserver.h" | 
|    47 #include "webrtc/p2p/base/teststunserver.h" |    47 #include "webrtc/p2p/base/teststunserver.h" | 
|    48 #include "webrtc/p2p/base/testturnserver.h" |    48 #include "webrtc/p2p/base/testturnserver.h" | 
|    49 #include "webrtc/p2p/base/transportchannel.h" |    49 #include "webrtc/p2p/base/transportchannel.h" | 
|    50 #include "webrtc/p2p/client/basicportallocator.h" |    50 #include "webrtc/p2p/client/basicportallocator.h" | 
|    51 #include "webrtc/pc/channelmanager.h" |    51 #include "webrtc/pc/channelmanager.h" | 
|    52 #include "webrtc/pc/mediasession.h" |    52 #include "webrtc/pc/mediasession.h" | 
|    53  |    53  | 
|    54 #define MAYBE_SKIP_TEST(feature)                    \ |  | 
|    55   if (!(feature())) {                               \ |  | 
|    56     LOG(LS_INFO) << "Feature disabled... skipping"; \ |  | 
|    57     return;                                         \ |  | 
|    58   } |  | 
|    59  |  | 
|    60 using cricket::FakeVoiceMediaChannel; |    54 using cricket::FakeVoiceMediaChannel; | 
|    61 using cricket::TransportInfo; |    55 using cricket::TransportInfo; | 
|    62 using rtc::SocketAddress; |    56 using rtc::SocketAddress; | 
|    63 using rtc::Thread; |    57 using rtc::Thread; | 
|    64 using webrtc::CreateSessionDescription; |    58 using webrtc::CreateSessionDescription; | 
|    65 using webrtc::CreateSessionDescriptionObserver; |    59 using webrtc::CreateSessionDescriptionObserver; | 
|    66 using webrtc::CreateSessionDescriptionRequest; |    60 using webrtc::CreateSessionDescriptionRequest; | 
|    67 using webrtc::DataChannel; |    61 using webrtc::DataChannel; | 
|    68 using webrtc::FakeMetricsObserver; |    62 using webrtc::FakeMetricsObserver; | 
|    69 using webrtc::IceCandidateCollection; |    63 using webrtc::IceCandidateCollection; | 
| (...skipping 1774 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1844   CreateCryptoOfferAndNonCryptoAnswer(&offer, &answer); |  1838   CreateCryptoOfferAndNonCryptoAnswer(&offer, &answer); | 
|  1845   // SetRemoteDescription and SetLocalDescription will take the ownership of |  1839   // SetRemoteDescription and SetLocalDescription will take the ownership of | 
|  1846   // the offer. |  1840   // the offer. | 
|  1847   SetLocalDescriptionWithoutError(offer); |  1841   SetLocalDescriptionWithoutError(offer); | 
|  1848   SetRemoteDescriptionAnswerExpectError(kSdpWithoutSdesCrypto, answer); |  1842   SetRemoteDescriptionAnswerExpectError(kSdpWithoutSdesCrypto, answer); | 
|  1849 } |  1843 } | 
|  1850  |  1844  | 
|  1851 // Test that we accept an offer with a DTLS fingerprint when DTLS is on |  1845 // Test that we accept an offer with a DTLS fingerprint when DTLS is on | 
|  1852 // and that we return an answer with a DTLS fingerprint. |  1846 // and that we return an answer with a DTLS fingerprint. | 
|  1853 TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { |  1847 TEST_P(WebRtcSessionTest, TestReceiveDtlsOfferCreateDtlsAnswer) { | 
|  1854   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  1855   SendAudioVideoStream1(); |  1848   SendAudioVideoStream1(); | 
|  1856   InitWithDtls(GetParam()); |  1849   InitWithDtls(GetParam()); | 
|  1857   SetFactoryDtlsSrtp(); |  1850   SetFactoryDtlsSrtp(); | 
|  1858   cricket::MediaSessionOptions options; |  1851   cricket::MediaSessionOptions options; | 
|  1859   options.recv_video = true; |  1852   options.recv_video = true; | 
|  1860   JsepSessionDescription* offer = |  1853   JsepSessionDescription* offer = | 
|  1861       CreateRemoteOffer(options, cricket::SEC_DISABLED); |  1854       CreateRemoteOffer(options, cricket::SEC_DISABLED); | 
|  1862   ASSERT_TRUE(offer != NULL); |  1855   ASSERT_TRUE(offer != NULL); | 
|  1863   VerifyFingerprintStatus(offer->description(), true); |  1856   VerifyFingerprintStatus(offer->description(), true); | 
|  1864   VerifyNoCryptoParams(offer->description(), true); |  1857   VerifyNoCryptoParams(offer->description(), true); | 
|  1865  |  1858  | 
|  1866   // SetRemoteDescription will take the ownership of the offer. |  1859   // SetRemoteDescription will take the ownership of the offer. | 
|  1867   SetRemoteDescriptionWithoutError(offer); |  1860   SetRemoteDescriptionWithoutError(offer); | 
|  1868  |  1861  | 
|  1869   // Verify that we get a crypto fingerprint in the answer. |  1862   // Verify that we get a crypto fingerprint in the answer. | 
|  1870   SessionDescriptionInterface* answer = CreateAnswer(); |  1863   SessionDescriptionInterface* answer = CreateAnswer(); | 
|  1871   ASSERT_TRUE(answer != NULL); |  1864   ASSERT_TRUE(answer != NULL); | 
|  1872   VerifyFingerprintStatus(answer->description(), true); |  1865   VerifyFingerprintStatus(answer->description(), true); | 
|  1873   // Check that we don't have an a=crypto line in the answer. |  1866   // Check that we don't have an a=crypto line in the answer. | 
|  1874   VerifyNoCryptoParams(answer->description(), true); |  1867   VerifyNoCryptoParams(answer->description(), true); | 
|  1875  |  1868  | 
|  1876   // Now set the local description, which should work, even without a=crypto. |  1869   // Now set the local description, which should work, even without a=crypto. | 
|  1877   SetLocalDescriptionWithoutError(answer); |  1870   SetLocalDescriptionWithoutError(answer); | 
|  1878 } |  1871 } | 
|  1879  |  1872  | 
|  1880 // Test that we set a local offer with a DTLS fingerprint when DTLS is on |  1873 // Test that we set a local offer with a DTLS fingerprint when DTLS is on | 
|  1881 // and then we accept a remote answer with a DTLS fingerprint successfully. |  1874 // and then we accept a remote answer with a DTLS fingerprint successfully. | 
|  1882 TEST_P(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { |  1875 TEST_P(WebRtcSessionTest, TestCreateDtlsOfferReceiveDtlsAnswer) { | 
|  1883   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  1884   SendAudioVideoStream1(); |  1876   SendAudioVideoStream1(); | 
|  1885   InitWithDtls(GetParam()); |  1877   InitWithDtls(GetParam()); | 
|  1886   SetFactoryDtlsSrtp(); |  1878   SetFactoryDtlsSrtp(); | 
|  1887  |  1879  | 
|  1888   // Verify that we get a crypto fingerprint in the answer. |  1880   // Verify that we get a crypto fingerprint in the answer. | 
|  1889   SessionDescriptionInterface* offer = CreateOffer(); |  1881   SessionDescriptionInterface* offer = CreateOffer(); | 
|  1890   ASSERT_TRUE(offer != NULL); |  1882   ASSERT_TRUE(offer != NULL); | 
|  1891   VerifyFingerprintStatus(offer->description(), true); |  1883   VerifyFingerprintStatus(offer->description(), true); | 
|  1892   // Check that we don't have an a=crypto line in the offer. |  1884   // Check that we don't have an a=crypto line in the offer. | 
|  1893   VerifyNoCryptoParams(offer->description(), true); |  1885   VerifyNoCryptoParams(offer->description(), true); | 
|  1894  |  1886  | 
|  1895   // Now set the local description, which should work, even without a=crypto. |  1887   // Now set the local description, which should work, even without a=crypto. | 
|  1896   SetLocalDescriptionWithoutError(offer); |  1888   SetLocalDescriptionWithoutError(offer); | 
|  1897  |  1889  | 
|  1898   cricket::MediaSessionOptions options; |  1890   cricket::MediaSessionOptions options; | 
|  1899   options.recv_video = true; |  1891   options.recv_video = true; | 
|  1900   JsepSessionDescription* answer = |  1892   JsepSessionDescription* answer = | 
|  1901       CreateRemoteAnswer(offer, options, cricket::SEC_DISABLED); |  1893       CreateRemoteAnswer(offer, options, cricket::SEC_DISABLED); | 
|  1902   ASSERT_TRUE(answer != NULL); |  1894   ASSERT_TRUE(answer != NULL); | 
|  1903   VerifyFingerprintStatus(answer->description(), true); |  1895   VerifyFingerprintStatus(answer->description(), true); | 
|  1904   VerifyNoCryptoParams(answer->description(), true); |  1896   VerifyNoCryptoParams(answer->description(), true); | 
|  1905  |  1897  | 
|  1906   // SetRemoteDescription will take the ownership of the answer. |  1898   // SetRemoteDescription will take the ownership of the answer. | 
|  1907   SetRemoteDescriptionWithoutError(answer); |  1899   SetRemoteDescriptionWithoutError(answer); | 
|  1908 } |  1900 } | 
|  1909  |  1901  | 
|  1910 // Test that if we support DTLS and the other side didn't offer a fingerprint, |  1902 // Test that if we support DTLS and the other side didn't offer a fingerprint, | 
|  1911 // we will fail to set the remote description. |  1903 // we will fail to set the remote description. | 
|  1912 TEST_P(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) { |  1904 TEST_P(WebRtcSessionTest, TestReceiveNonDtlsOfferWhenDtlsOn) { | 
|  1913   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  1914   InitWithDtls(GetParam()); |  1905   InitWithDtls(GetParam()); | 
|  1915   cricket::MediaSessionOptions options; |  1906   cricket::MediaSessionOptions options; | 
|  1916   options.recv_video = true; |  1907   options.recv_video = true; | 
|  1917   options.bundle_enabled = true; |  1908   options.bundle_enabled = true; | 
|  1918   JsepSessionDescription* offer = CreateRemoteOffer( |  1909   JsepSessionDescription* offer = CreateRemoteOffer( | 
|  1919       options, cricket::SEC_REQUIRED); |  1910       options, cricket::SEC_REQUIRED); | 
|  1920   ASSERT_TRUE(offer != NULL); |  1911   ASSERT_TRUE(offer != NULL); | 
|  1921   VerifyFingerprintStatus(offer->description(), false); |  1912   VerifyFingerprintStatus(offer->description(), false); | 
|  1922   VerifyCryptoParams(offer->description()); |  1913   VerifyCryptoParams(offer->description()); | 
|  1923  |  1914  | 
|  1924   // SetRemoteDescription will take the ownership of the offer. |  1915   // SetRemoteDescription will take the ownership of the offer. | 
|  1925   SetRemoteDescriptionOfferExpectError( |  1916   SetRemoteDescriptionOfferExpectError( | 
|  1926       kSdpWithoutDtlsFingerprint, offer); |  1917       kSdpWithoutDtlsFingerprint, offer); | 
|  1927  |  1918  | 
|  1928   offer = CreateRemoteOffer(options, cricket::SEC_REQUIRED); |  1919   offer = CreateRemoteOffer(options, cricket::SEC_REQUIRED); | 
|  1929   // SetLocalDescription will take the ownership of the offer. |  1920   // SetLocalDescription will take the ownership of the offer. | 
|  1930   SetLocalDescriptionOfferExpectError( |  1921   SetLocalDescriptionOfferExpectError( | 
|  1931       kSdpWithoutDtlsFingerprint, offer); |  1922       kSdpWithoutDtlsFingerprint, offer); | 
|  1932 } |  1923 } | 
|  1933  |  1924  | 
|  1934 // Test that we return a failure when applying a local answer that doesn't have |  1925 // Test that we return a failure when applying a local answer that doesn't have | 
|  1935 // a DTLS fingerprint when DTLS is required. |  1926 // a DTLS fingerprint when DTLS is required. | 
|  1936 TEST_P(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) { |  1927 TEST_P(WebRtcSessionTest, TestSetLocalNonDtlsAnswerWhenDtlsOn) { | 
|  1937   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  1938   InitWithDtls(GetParam()); |  1928   InitWithDtls(GetParam()); | 
|  1939   SessionDescriptionInterface* offer = NULL; |  1929   SessionDescriptionInterface* offer = NULL; | 
|  1940   SessionDescriptionInterface* answer = NULL; |  1930   SessionDescriptionInterface* answer = NULL; | 
|  1941   CreateDtlsOfferAndNonDtlsAnswer(&offer, &answer); |  1931   CreateDtlsOfferAndNonDtlsAnswer(&offer, &answer); | 
|  1942  |  1932  | 
|  1943   // SetRemoteDescription and SetLocalDescription will take the ownership of |  1933   // SetRemoteDescription and SetLocalDescription will take the ownership of | 
|  1944   // the offer and answer. |  1934   // the offer and answer. | 
|  1945   SetRemoteDescriptionWithoutError(offer); |  1935   SetRemoteDescriptionWithoutError(offer); | 
|  1946   SetLocalDescriptionAnswerExpectError( |  1936   SetLocalDescriptionAnswerExpectError( | 
|  1947       kSdpWithoutDtlsFingerprint, answer); |  1937       kSdpWithoutDtlsFingerprint, answer); | 
|  1948 } |  1938 } | 
|  1949  |  1939  | 
|  1950 // Test that we return a failure when applying a remote answer that doesn't have |  1940 // Test that we return a failure when applying a remote answer that doesn't have | 
|  1951 // a DTLS fingerprint when DTLS is required. |  1941 // a DTLS fingerprint when DTLS is required. | 
|  1952 TEST_P(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { |  1942 TEST_P(WebRtcSessionTest, TestSetRemoteNonDtlsAnswerWhenDtlsOn) { | 
|  1953   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  1954   InitWithDtls(GetParam()); |  1943   InitWithDtls(GetParam()); | 
|  1955   SessionDescriptionInterface* offer = CreateOffer(); |  1944   SessionDescriptionInterface* offer = CreateOffer(); | 
|  1956   cricket::MediaSessionOptions options; |  1945   cricket::MediaSessionOptions options; | 
|  1957   options.recv_video = true; |  1946   options.recv_video = true; | 
|  1958   std::unique_ptr<SessionDescriptionInterface> temp_offer( |  1947   std::unique_ptr<SessionDescriptionInterface> temp_offer( | 
|  1959       CreateRemoteOffer(options, cricket::SEC_ENABLED)); |  1948       CreateRemoteOffer(options, cricket::SEC_ENABLED)); | 
|  1960   JsepSessionDescription* answer = |  1949   JsepSessionDescription* answer = | 
|  1961       CreateRemoteAnswer(temp_offer.get(), options, cricket::SEC_ENABLED); |  1950       CreateRemoteAnswer(temp_offer.get(), options, cricket::SEC_ENABLED); | 
|  1962  |  1951  | 
|  1963   // SetRemoteDescription and SetLocalDescription will take the ownership of |  1952   // SetRemoteDescription and SetLocalDescription will take the ownership of | 
| (...skipping 1956 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  3920  |  3909  | 
|  3921 TEST_F(WebRtcSessionTest, TestRtpDataChannel) { |  3910 TEST_F(WebRtcSessionTest, TestRtpDataChannel) { | 
|  3922   configuration_.enable_rtp_data_channel = true; |  3911   configuration_.enable_rtp_data_channel = true; | 
|  3923   Init(); |  3912   Init(); | 
|  3924   SetLocalDescriptionWithDataChannel(); |  3913   SetLocalDescriptionWithDataChannel(); | 
|  3925   ASSERT_TRUE(data_engine_); |  3914   ASSERT_TRUE(data_engine_); | 
|  3926   EXPECT_NE(nullptr, data_engine_->GetChannel(0)); |  3915   EXPECT_NE(nullptr, data_engine_->GetChannel(0)); | 
|  3927 } |  3916 } | 
|  3928  |  3917  | 
|  3929 TEST_P(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) { |  3918 TEST_P(WebRtcSessionTest, TestRtpDataChannelConstraintTakesPrecedence) { | 
|  3930   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  3931  |  | 
|  3932   configuration_.enable_rtp_data_channel = true; |  3919   configuration_.enable_rtp_data_channel = true; | 
|  3933   options_.disable_sctp_data_channels = false; |  3920   options_.disable_sctp_data_channels = false; | 
|  3934  |  3921  | 
|  3935   InitWithDtls(GetParam()); |  3922   InitWithDtls(GetParam()); | 
|  3936  |  3923  | 
|  3937   SetLocalDescriptionWithDataChannel(); |  3924   SetLocalDescriptionWithDataChannel(); | 
|  3938   EXPECT_NE(nullptr, data_engine_->GetChannel(0)); |  3925   EXPECT_NE(nullptr, data_engine_->GetChannel(0)); | 
|  3939 } |  3926 } | 
|  3940  |  3927  | 
|  3941 // Test that sctp_content_name/sctp_transport_name (used for stats) are correct |  3928 // Test that sctp_content_name/sctp_transport_name (used for stats) are correct | 
|  3942 // before and after BUNDLE is negotiated. |  3929 // before and after BUNDLE is negotiated. | 
|  3943 TEST_P(WebRtcSessionTest, SctpContentAndTransportName) { |  3930 TEST_P(WebRtcSessionTest, SctpContentAndTransportName) { | 
|  3944   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  3945   SetFactoryDtlsSrtp(); |  3931   SetFactoryDtlsSrtp(); | 
|  3946   InitWithDtls(GetParam()); |  3932   InitWithDtls(GetParam()); | 
|  3947  |  3933  | 
|  3948   // Initially these fields should be empty. |  3934   // Initially these fields should be empty. | 
|  3949   EXPECT_FALSE(session_->sctp_content_name()); |  3935   EXPECT_FALSE(session_->sctp_content_name()); | 
|  3950   EXPECT_FALSE(session_->sctp_transport_name()); |  3936   EXPECT_FALSE(session_->sctp_transport_name()); | 
|  3951  |  3937  | 
|  3952   // Create offer with audio/video/data. |  3938   // Create offer with audio/video/data. | 
|  3953   // Default bundle policy is "balanced", so data should be using its own |  3939   // Default bundle policy is "balanced", so data should be using its own | 
|  3954   // transport. |  3940   // transport. | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
|  3968   answer_options.data_channel_type = cricket::DCT_SCTP; |  3954   answer_options.data_channel_type = cricket::DCT_SCTP; | 
|  3969   SetRemoteDescriptionWithoutError(CreateRemoteAnswer( |  3955   SetRemoteDescriptionWithoutError(CreateRemoteAnswer( | 
|  3970       session_->local_description(), answer_options, cricket::SEC_DISABLED)); |  3956       session_->local_description(), answer_options, cricket::SEC_DISABLED)); | 
|  3971   ASSERT_TRUE(session_->sctp_content_name()); |  3957   ASSERT_TRUE(session_->sctp_content_name()); | 
|  3972   ASSERT_TRUE(session_->sctp_transport_name()); |  3958   ASSERT_TRUE(session_->sctp_transport_name()); | 
|  3973   EXPECT_EQ("data", *session_->sctp_content_name()); |  3959   EXPECT_EQ("data", *session_->sctp_content_name()); | 
|  3974   EXPECT_EQ("audio", *session_->sctp_transport_name()); |  3960   EXPECT_EQ("audio", *session_->sctp_transport_name()); | 
|  3975 } |  3961 } | 
|  3976  |  3962  | 
|  3977 TEST_P(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) { |  3963 TEST_P(WebRtcSessionTest, TestCreateOfferWithSctpEnabledWithoutStreams) { | 
|  3978   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  3979  |  | 
|  3980   InitWithDtls(GetParam()); |  3964   InitWithDtls(GetParam()); | 
|  3981  |  3965  | 
|  3982   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); |  3966   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); | 
|  3983   EXPECT_TRUE(offer->description()->GetContentByName("data") == NULL); |  3967   EXPECT_TRUE(offer->description()->GetContentByName("data") == NULL); | 
|  3984   EXPECT_TRUE(offer->description()->GetTransportInfoByName("data") == NULL); |  3968   EXPECT_TRUE(offer->description()->GetTransportInfoByName("data") == NULL); | 
|  3985 } |  3969 } | 
|  3986  |  3970  | 
|  3987 TEST_P(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) { |  3971 TEST_P(WebRtcSessionTest, TestCreateAnswerWithSctpInOfferAndNoStreams) { | 
|  3988   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  3989   SetFactoryDtlsSrtp(); |  3972   SetFactoryDtlsSrtp(); | 
|  3990   InitWithDtls(GetParam()); |  3973   InitWithDtls(GetParam()); | 
|  3991  |  3974  | 
|  3992   // Create remote offer with SCTP. |  3975   // Create remote offer with SCTP. | 
|  3993   cricket::MediaSessionOptions options; |  3976   cricket::MediaSessionOptions options; | 
|  3994   options.data_channel_type = cricket::DCT_SCTP; |  3977   options.data_channel_type = cricket::DCT_SCTP; | 
|  3995   JsepSessionDescription* offer = |  3978   JsepSessionDescription* offer = | 
|  3996       CreateRemoteOffer(options, cricket::SEC_DISABLED); |  3979       CreateRemoteOffer(options, cricket::SEC_DISABLED); | 
|  3997   SetRemoteDescriptionWithoutError(offer); |  3980   SetRemoteDescriptionWithoutError(offer); | 
|  3998  |  3981  | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|  4010   InitWithDtls(GetParam()); |  3993   InitWithDtls(GetParam()); | 
|  4011  |  3994  | 
|  4012   SetLocalDescriptionWithDataChannel(); |  3995   SetLocalDescriptionWithDataChannel(); | 
|  4013   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); |  3996   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); | 
|  4014   EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); |  3997   EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); | 
|  4015 } |  3998 } | 
|  4016  |  3999  | 
|  4017 // Test that if DTLS is enabled, we end up with an SctpTransport created |  4000 // Test that if DTLS is enabled, we end up with an SctpTransport created | 
|  4018 // (and not an RtpDataChannel). |  4001 // (and not an RtpDataChannel). | 
|  4019 TEST_P(WebRtcSessionTest, TestSctpDataChannelWithDtls) { |  4002 TEST_P(WebRtcSessionTest, TestSctpDataChannelWithDtls) { | 
|  4020   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4021  |  | 
|  4022   InitWithDtls(GetParam()); |  4003   InitWithDtls(GetParam()); | 
|  4023  |  4004  | 
|  4024   SetLocalDescriptionWithDataChannel(); |  4005   SetLocalDescriptionWithDataChannel(); | 
|  4025   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); |  4006   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); | 
|  4026   EXPECT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); |  4007   EXPECT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); | 
|  4027 } |  4008 } | 
|  4028  |  4009  | 
|  4029 // Test that if SCTP is disabled, we don't end up with an SctpTransport |  4010 // Test that if SCTP is disabled, we don't end up with an SctpTransport | 
|  4030 // created (or an RtpDataChannel). |  4011 // created (or an RtpDataChannel). | 
|  4031 TEST_P(WebRtcSessionTest, TestDisableSctpDataChannels) { |  4012 TEST_P(WebRtcSessionTest, TestDisableSctpDataChannels) { | 
|  4032   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4033   options_.disable_sctp_data_channels = true; |  4013   options_.disable_sctp_data_channels = true; | 
|  4034   InitWithDtls(GetParam()); |  4014   InitWithDtls(GetParam()); | 
|  4035  |  4015  | 
|  4036   SetLocalDescriptionWithDataChannel(); |  4016   SetLocalDescriptionWithDataChannel(); | 
|  4037   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); |  4017   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); | 
|  4038   EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); |  4018   EXPECT_EQ(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); | 
|  4039 } |  4019 } | 
|  4040  |  4020  | 
|  4041 TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { |  4021 TEST_P(WebRtcSessionTest, TestSctpDataChannelSendPortParsing) { | 
|  4042   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4043   const int new_send_port = 9998; |  4022   const int new_send_port = 9998; | 
|  4044   const int new_recv_port = 7775; |  4023   const int new_recv_port = 7775; | 
|  4045  |  4024  | 
|  4046   InitWithDtls(GetParam()); |  4025   InitWithDtls(GetParam()); | 
|  4047   SetFactoryDtlsSrtp(); |  4026   SetFactoryDtlsSrtp(); | 
|  4048  |  4027  | 
|  4049   // By default, don't actually add the codecs to desc_factory_; they don't |  4028   // By default, don't actually add the codecs to desc_factory_; they don't | 
|  4050   // actually get serialized for SCTP in BuildMediaDescription().  Instead, |  4029   // actually get serialized for SCTP in BuildMediaDescription().  Instead, | 
|  4051   // let the session description get parsed.  That'll get the proper codecs |  4030   // let the session description get parsed.  That'll get the proper codecs | 
|  4052   // into the stream. |  4031   // into the stream. | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
|  4074       fake_sctp_transport_factory_->last_fake_sctp_transport()->local_port()); |  4053       fake_sctp_transport_factory_->last_fake_sctp_transport()->local_port()); | 
|  4075   EXPECT_EQ( |  4054   EXPECT_EQ( | 
|  4076       new_send_port, |  4055       new_send_port, | 
|  4077       fake_sctp_transport_factory_->last_fake_sctp_transport()->remote_port()); |  4056       fake_sctp_transport_factory_->last_fake_sctp_transport()->remote_port()); | 
|  4078 } |  4057 } | 
|  4079  |  4058  | 
|  4080 // Verifies that when a session's SctpTransport receives an OPEN message, |  4059 // Verifies that when a session's SctpTransport receives an OPEN message, | 
|  4081 // WebRtcSession signals the SctpTransport creation request with the expected |  4060 // WebRtcSession signals the SctpTransport creation request with the expected | 
|  4082 // config. |  4061 // config. | 
|  4083 TEST_P(WebRtcSessionTest, TestSctpDataChannelOpenMessage) { |  4062 TEST_P(WebRtcSessionTest, TestSctpDataChannelOpenMessage) { | 
|  4084   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4085  |  | 
|  4086   InitWithDtls(GetParam()); |  4063   InitWithDtls(GetParam()); | 
|  4087  |  4064  | 
|  4088   SetLocalDescriptionWithDataChannel(); |  4065   SetLocalDescriptionWithDataChannel(); | 
|  4089   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); |  4066   EXPECT_EQ(nullptr, data_engine_->GetChannel(0)); | 
|  4090   ASSERT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); |  4067   ASSERT_NE(nullptr, fake_sctp_transport_factory_->last_fake_sctp_transport()); | 
|  4091  |  4068  | 
|  4092   // Make the fake SCTP transport pretend it received an OPEN message. |  4069   // Make the fake SCTP transport pretend it received an OPEN message. | 
|  4093   webrtc::DataChannelInit config; |  4070   webrtc::DataChannelInit config; | 
|  4094   config.id = 1; |  4071   config.id = 1; | 
|  4095   rtc::CopyOnWriteBuffer payload; |  4072   rtc::CopyOnWriteBuffer payload; | 
| (...skipping 19 matching lines...) Expand all  Loading... | 
|  4115   Init(); |  4092   Init(); | 
|  4116   EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); |  4093   EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); | 
|  4117  |  4094  | 
|  4118   EXPECT_EQ(session_->certificate_for_testing(), certificate); |  4095   EXPECT_EQ(session_->certificate_for_testing(), certificate); | 
|  4119 } |  4096 } | 
|  4120  |  4097  | 
|  4121 // Verifies that CreateOffer succeeds when CreateOffer is called before async |  4098 // Verifies that CreateOffer succeeds when CreateOffer is called before async | 
|  4122 // identity generation is finished (even if a certificate is provided this is |  4099 // identity generation is finished (even if a certificate is provided this is | 
|  4123 // an async op). |  4100 // an async op). | 
|  4124 TEST_P(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { |  4101 TEST_P(WebRtcSessionTest, TestCreateOfferBeforeIdentityRequestReturnSuccess) { | 
|  4125   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4126   InitWithDtls(GetParam()); |  4102   InitWithDtls(GetParam()); | 
|  4127  |  4103  | 
|  4128   EXPECT_TRUE(session_->waiting_for_certificate_for_testing()); |  4104   EXPECT_TRUE(session_->waiting_for_certificate_for_testing()); | 
|  4129   SendAudioVideoStream1(); |  4105   SendAudioVideoStream1(); | 
|  4130   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); |  4106   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); | 
|  4131  |  4107  | 
|  4132   EXPECT_TRUE(offer != NULL); |  4108   EXPECT_TRUE(offer != NULL); | 
|  4133   VerifyNoCryptoParams(offer->description(), true); |  4109   VerifyNoCryptoParams(offer->description(), true); | 
|  4134   VerifyFingerprintStatus(offer->description(), true); |  4110   VerifyFingerprintStatus(offer->description(), true); | 
|  4135 } |  4111 } | 
|  4136  |  4112  | 
|  4137 // Verifies that CreateAnswer succeeds when CreateOffer is called before async |  4113 // Verifies that CreateAnswer succeeds when CreateOffer is called before async | 
|  4138 // identity generation is finished (even if a certificate is provided this is |  4114 // identity generation is finished (even if a certificate is provided this is | 
|  4139 // an async op). |  4115 // an async op). | 
|  4140 TEST_P(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) { |  4116 TEST_P(WebRtcSessionTest, TestCreateAnswerBeforeIdentityRequestReturnSuccess) { | 
|  4141   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4142   InitWithDtls(GetParam()); |  4117   InitWithDtls(GetParam()); | 
|  4143   SetFactoryDtlsSrtp(); |  4118   SetFactoryDtlsSrtp(); | 
|  4144  |  4119  | 
|  4145   cricket::MediaSessionOptions options; |  4120   cricket::MediaSessionOptions options; | 
|  4146   options.recv_video = true; |  4121   options.recv_video = true; | 
|  4147   std::unique_ptr<JsepSessionDescription> offer( |  4122   std::unique_ptr<JsepSessionDescription> offer( | 
|  4148       CreateRemoteOffer(options, cricket::SEC_DISABLED)); |  4123       CreateRemoteOffer(options, cricket::SEC_DISABLED)); | 
|  4149   ASSERT_TRUE(offer.get() != NULL); |  4124   ASSERT_TRUE(offer.get() != NULL); | 
|  4150   SetRemoteDescriptionWithoutError(offer.release()); |  4125   SetRemoteDescriptionWithoutError(offer.release()); | 
|  4151  |  4126  | 
|  4152   std::unique_ptr<SessionDescriptionInterface> answer(CreateAnswer()); |  4127   std::unique_ptr<SessionDescriptionInterface> answer(CreateAnswer()); | 
|  4153   EXPECT_TRUE(answer != NULL); |  4128   EXPECT_TRUE(answer != NULL); | 
|  4154   VerifyNoCryptoParams(answer->description(), true); |  4129   VerifyNoCryptoParams(answer->description(), true); | 
|  4155   VerifyFingerprintStatus(answer->description(), true); |  4130   VerifyFingerprintStatus(answer->description(), true); | 
|  4156 } |  4131 } | 
|  4157  |  4132  | 
|  4158 // Verifies that CreateOffer succeeds when CreateOffer is called after async |  4133 // Verifies that CreateOffer succeeds when CreateOffer is called after async | 
|  4159 // identity generation is finished (even if a certificate is provided this is |  4134 // identity generation is finished (even if a certificate is provided this is | 
|  4160 // an async op). |  4135 // an async op). | 
|  4161 TEST_P(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { |  4136 TEST_P(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnSuccess) { | 
|  4162   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4163   InitWithDtls(GetParam()); |  4137   InitWithDtls(GetParam()); | 
|  4164  |  4138  | 
|  4165   EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); |  4139   EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); | 
|  4166  |  4140  | 
|  4167   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); |  4141   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); | 
|  4168   EXPECT_TRUE(offer != NULL); |  4142   EXPECT_TRUE(offer != NULL); | 
|  4169 } |  4143 } | 
|  4170  |  4144  | 
|  4171 // Verifies that CreateOffer fails when CreateOffer is called after async |  4145 // Verifies that CreateOffer fails when CreateOffer is called after async | 
|  4172 // identity generation fails. |  4146 // identity generation fails. | 
|  4173 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) { |  4147 TEST_F(WebRtcSessionTest, TestCreateOfferAfterIdentityRequestReturnFailure) { | 
|  4174   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4175   InitWithDtlsIdentityGenFail(); |  4148   InitWithDtlsIdentityGenFail(); | 
|  4176  |  4149  | 
|  4177   EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); |  4150   EXPECT_TRUE_WAIT(!session_->waiting_for_certificate_for_testing(), 1000); | 
|  4178  |  4151  | 
|  4179   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); |  4152   std::unique_ptr<SessionDescriptionInterface> offer(CreateOffer()); | 
|  4180   EXPECT_TRUE(offer == NULL); |  4153   EXPECT_TRUE(offer == NULL); | 
|  4181 } |  4154 } | 
|  4182  |  4155  | 
|  4183 // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made |  4156 // Verifies that CreateOffer succeeds when Multiple CreateOffer calls are made | 
|  4184 // before async identity generation is finished. |  4157 // before async identity generation is finished. | 
|  4185 TEST_P(WebRtcSessionTest, |  4158 TEST_P(WebRtcSessionTest, | 
|  4186        TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) { |  4159        TestMultipleCreateOfferBeforeIdentityRequestReturnSuccess) { | 
|  4187   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4188   VerifyMultipleAsyncCreateDescription(GetParam(), |  4160   VerifyMultipleAsyncCreateDescription(GetParam(), | 
|  4189                                        CreateSessionDescriptionRequest::kOffer); |  4161                                        CreateSessionDescriptionRequest::kOffer); | 
|  4190 } |  4162 } | 
|  4191  |  4163  | 
|  4192 // Verifies that CreateOffer fails when Multiple CreateOffer calls are made |  4164 // Verifies that CreateOffer fails when Multiple CreateOffer calls are made | 
|  4193 // before async identity generation fails. |  4165 // before async identity generation fails. | 
|  4194 TEST_F(WebRtcSessionTest, |  4166 TEST_F(WebRtcSessionTest, | 
|  4195        TestMultipleCreateOfferBeforeIdentityRequestReturnFailure) { |  4167        TestMultipleCreateOfferBeforeIdentityRequestReturnFailure) { | 
|  4196   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4197   VerifyMultipleAsyncCreateDescriptionIdentityGenFailure( |  4168   VerifyMultipleAsyncCreateDescriptionIdentityGenFailure( | 
|  4198       CreateSessionDescriptionRequest::kOffer); |  4169       CreateSessionDescriptionRequest::kOffer); | 
|  4199 } |  4170 } | 
|  4200  |  4171  | 
|  4201 // Verifies that CreateAnswer succeeds when Multiple CreateAnswer calls are made |  4172 // Verifies that CreateAnswer succeeds when Multiple CreateAnswer calls are made | 
|  4202 // before async identity generation is finished. |  4173 // before async identity generation is finished. | 
|  4203 TEST_P(WebRtcSessionTest, |  4174 TEST_P(WebRtcSessionTest, | 
|  4204        TestMultipleCreateAnswerBeforeIdentityRequestReturnSuccess) { |  4175        TestMultipleCreateAnswerBeforeIdentityRequestReturnSuccess) { | 
|  4205   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4206   VerifyMultipleAsyncCreateDescription( |  4176   VerifyMultipleAsyncCreateDescription( | 
|  4207       GetParam(), CreateSessionDescriptionRequest::kAnswer); |  4177       GetParam(), CreateSessionDescriptionRequest::kAnswer); | 
|  4208 } |  4178 } | 
|  4209  |  4179  | 
|  4210 // Verifies that CreateAnswer fails when Multiple CreateAnswer calls are made |  4180 // Verifies that CreateAnswer fails when Multiple CreateAnswer calls are made | 
|  4211 // before async identity generation fails. |  4181 // before async identity generation fails. | 
|  4212 TEST_F(WebRtcSessionTest, |  4182 TEST_F(WebRtcSessionTest, | 
|  4213        TestMultipleCreateAnswerBeforeIdentityRequestReturnFailure) { |  4183        TestMultipleCreateAnswerBeforeIdentityRequestReturnFailure) { | 
|  4214   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4215   VerifyMultipleAsyncCreateDescriptionIdentityGenFailure( |  4184   VerifyMultipleAsyncCreateDescriptionIdentityGenFailure( | 
|  4216       CreateSessionDescriptionRequest::kAnswer); |  4185       CreateSessionDescriptionRequest::kAnswer); | 
|  4217 } |  4186 } | 
|  4218  |  4187  | 
|  4219 // Verifies that setRemoteDescription fails when DTLS is disabled and the remote |  4188 // Verifies that setRemoteDescription fails when DTLS is disabled and the remote | 
|  4220 // offer has no SDES crypto but only DTLS fingerprint. |  4189 // offer has no SDES crypto but only DTLS fingerprint. | 
|  4221 TEST_F(WebRtcSessionTest, TestSetRemoteOfferFailIfDtlsDisabledAndNoCrypto) { |  4190 TEST_F(WebRtcSessionTest, TestSetRemoteOfferFailIfDtlsDisabledAndNoCrypto) { | 
|  4222   // Init without DTLS. |  4191   // Init without DTLS. | 
|  4223   Init(); |  4192   Init(); | 
|  4224   // Create a remote offer with secured transport disabled. |  4193   // Create a remote offer with secured transport disabled. | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
|  4248   voice_channel_ = media_engine_->GetVoiceChannel(0); |  4217   voice_channel_ = media_engine_->GetVoiceChannel(0); | 
|  4249  |  4218  | 
|  4250   ASSERT_TRUE(voice_channel_ != NULL); |  4219   ASSERT_TRUE(voice_channel_ != NULL); | 
|  4251   const cricket::AudioOptions& audio_options = voice_channel_->options(); |  4220   const cricket::AudioOptions& audio_options = voice_channel_->options(); | 
|  4252   EXPECT_EQ(rtc::Optional<bool>(true), audio_options.combined_audio_video_bwe); |  4221   EXPECT_EQ(rtc::Optional<bool>(true), audio_options.combined_audio_video_bwe); | 
|  4253 } |  4222 } | 
|  4254  |  4223  | 
|  4255 // Tests that we can renegotiate new media content with ICE candidates in the |  4224 // Tests that we can renegotiate new media content with ICE candidates in the | 
|  4256 // new remote SDP. |  4225 // new remote SDP. | 
|  4257 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { |  4226 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesInSdp) { | 
|  4258   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4259   InitWithDtls(GetParam()); |  4227   InitWithDtls(GetParam()); | 
|  4260   SetFactoryDtlsSrtp(); |  4228   SetFactoryDtlsSrtp(); | 
|  4261  |  4229  | 
|  4262   SendAudioOnlyStream2(); |  4230   SendAudioOnlyStream2(); | 
|  4263   SessionDescriptionInterface* offer = CreateOffer(); |  4231   SessionDescriptionInterface* offer = CreateOffer(); | 
|  4264   SetLocalDescriptionWithoutError(offer); |  4232   SetLocalDescriptionWithoutError(offer); | 
|  4265  |  4233  | 
|  4266   SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); |  4234   SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); | 
|  4267   SetRemoteDescriptionWithoutError(answer); |  4235   SetRemoteDescriptionWithoutError(answer); | 
|  4268  |  4236  | 
|  4269   cricket::MediaSessionOptions options; |  4237   cricket::MediaSessionOptions options; | 
|  4270   options.recv_video = true; |  4238   options.recv_video = true; | 
|  4271   offer = CreateRemoteOffer(options, cricket::SEC_DISABLED); |  4239   offer = CreateRemoteOffer(options, cricket::SEC_DISABLED); | 
|  4272  |  4240  | 
|  4273   cricket::Candidate candidate1; |  4241   cricket::Candidate candidate1; | 
|  4274   candidate1.set_address(rtc::SocketAddress("1.1.1.1", 5000)); |  4242   candidate1.set_address(rtc::SocketAddress("1.1.1.1", 5000)); | 
|  4275   candidate1.set_component(1); |  4243   candidate1.set_component(1); | 
|  4276   JsepIceCandidate ice_candidate(kMediaContentName1, kMediaContentIndex1, |  4244   JsepIceCandidate ice_candidate(kMediaContentName1, kMediaContentIndex1, | 
|  4277                                  candidate1); |  4245                                  candidate1); | 
|  4278   EXPECT_TRUE(offer->AddCandidate(&ice_candidate)); |  4246   EXPECT_TRUE(offer->AddCandidate(&ice_candidate)); | 
|  4279   SetRemoteDescriptionWithoutError(offer); |  4247   SetRemoteDescriptionWithoutError(offer); | 
|  4280  |  4248  | 
|  4281   answer = CreateAnswer(); |  4249   answer = CreateAnswer(); | 
|  4282   SetLocalDescriptionWithoutError(answer); |  4250   SetLocalDescriptionWithoutError(answer); | 
|  4283 } |  4251 } | 
|  4284  |  4252  | 
|  4285 // Tests that we can renegotiate new media content with ICE candidates separated |  4253 // Tests that we can renegotiate new media content with ICE candidates separated | 
|  4286 // from the remote SDP. |  4254 // from the remote SDP. | 
|  4287 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { |  4255 TEST_P(WebRtcSessionTest, TestRenegotiateNewMediaWithCandidatesSeparated) { | 
|  4288   MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |  | 
|  4289   InitWithDtls(GetParam()); |  4256   InitWithDtls(GetParam()); | 
|  4290   SetFactoryDtlsSrtp(); |  4257   SetFactoryDtlsSrtp(); | 
|  4291  |  4258  | 
|  4292   SendAudioOnlyStream2(); |  4259   SendAudioOnlyStream2(); | 
|  4293   SessionDescriptionInterface* offer = CreateOffer(); |  4260   SessionDescriptionInterface* offer = CreateOffer(); | 
|  4294   SetLocalDescriptionWithoutError(offer); |  4261   SetLocalDescriptionWithoutError(offer); | 
|  4295  |  4262  | 
|  4296   SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); |  4263   SessionDescriptionInterface* answer = CreateRemoteAnswer(offer); | 
|  4297   SetRemoteDescriptionWithoutError(answer); |  4264   SetRemoteDescriptionWithoutError(answer); | 
|  4298  |  4265  | 
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  4443 } |  4410 } | 
|  4444  |  4411  | 
|  4445 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled.  That test |  4412 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled.  That test | 
|  4446 // currently fails because upon disconnection and reconnection OnIceComplete is |  4413 // currently fails because upon disconnection and reconnection OnIceComplete is | 
|  4447 // called more than once without returning to IceGatheringGathering. |  4414 // called more than once without returning to IceGatheringGathering. | 
|  4448  |  4415  | 
|  4449 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, |  4416 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, | 
|  4450                         WebRtcSessionTest, |  4417                         WebRtcSessionTest, | 
|  4451                         testing::Values(ALREADY_GENERATED, |  4418                         testing::Values(ALREADY_GENERATED, | 
|  4452                                         DTLS_IDENTITY_STORE)); |  4419                                         DTLS_IDENTITY_STORE)); | 
| OLD | NEW |