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

Side by Side Diff: webrtc/pc/channel_unittest.cc

Issue 2761143002: Support encrypted RTP extensions (RFC 6904) (Closed)
Patch Set: Fix compile error on win_x64 bots. Created 3 years, 5 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
« no previous file with comments | « webrtc/pc/channel.cc ('k') | webrtc/pc/mediasession.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2009 The WebRTC project authors. All Rights Reserved. 2 * Copyright 2009 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 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 public: 93 public:
94 enum Flags { 94 enum Flags {
95 RTCP_MUX = 0x1, 95 RTCP_MUX = 0x1,
96 RTCP_MUX_REQUIRED = 0x2, 96 RTCP_MUX_REQUIRED = 0x2,
97 SECURE = 0x4, 97 SECURE = 0x4,
98 SSRC_MUX = 0x8, 98 SSRC_MUX = 0x8,
99 DTLS = 0x10, 99 DTLS = 0x10,
100 // Use BaseChannel with PacketTransportInternal rather than 100 // Use BaseChannel with PacketTransportInternal rather than
101 // DtlsTransportInternal. 101 // DtlsTransportInternal.
102 RAW_PACKET_TRANSPORT = 0x20, 102 RAW_PACKET_TRANSPORT = 0x20,
103 GCM_CIPHER = 0x40,
104 ENCRYPTED_HEADERS = 0x80,
103 }; 105 };
104 106
105 ChannelTest(bool verify_playout, 107 ChannelTest(bool verify_playout,
106 rtc::ArrayView<const uint8_t> rtp_data, 108 rtc::ArrayView<const uint8_t> rtp_data,
107 rtc::ArrayView<const uint8_t> rtcp_data, 109 rtc::ArrayView<const uint8_t> rtcp_data,
108 NetworkIsWorker network_is_worker) 110 NetworkIsWorker network_is_worker)
109 : verify_playout_(verify_playout), 111 : verify_playout_(verify_playout),
110 rtp_packet_(rtp_data.data(), rtp_data.size()), 112 rtp_packet_(rtp_data.data(), rtp_data.size()),
111 rtcp_packet_(rtcp_data.data(), rtcp_data.size()) { 113 rtcp_packet_(rtcp_data.data(), rtcp_data.size()) {
112 if (network_is_worker == NetworkIsWorker::Yes) { 114 if (network_is_worker == NetworkIsWorker::Yes) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 } 170 }
169 if (flags1 & DTLS) { 171 if (flags1 & DTLS) {
170 auto cert1 = 172 auto cert1 =
171 rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>( 173 rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
172 rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT))); 174 rtc::SSLIdentity::Generate("session1", rtc::KT_DEFAULT)));
173 fake_rtp_dtls_transport1_->SetLocalCertificate(cert1); 175 fake_rtp_dtls_transport1_->SetLocalCertificate(cert1);
174 if (fake_rtcp_dtls_transport1_) { 176 if (fake_rtcp_dtls_transport1_) {
175 fake_rtcp_dtls_transport1_->SetLocalCertificate(cert1); 177 fake_rtcp_dtls_transport1_->SetLocalCertificate(cert1);
176 } 178 }
177 } 179 }
180 if (flags1 & ENCRYPTED_HEADERS) {
181 rtc::CryptoOptions crypto_options;
182 crypto_options.enable_encrypted_rtp_header_extensions = true;
183 fake_rtp_dtls_transport1_->SetCryptoOptions(crypto_options);
184 if (fake_rtcp_dtls_transport1_) {
185 fake_rtcp_dtls_transport1_->SetCryptoOptions(crypto_options);
186 }
187 }
188 if (flags1 & GCM_CIPHER) {
189 fake_rtp_dtls_transport1_->SetSrtpCryptoSuite(
190 rtc::SRTP_AEAD_AES_256_GCM);
191 if (fake_rtcp_dtls_transport1_) {
192 fake_rtcp_dtls_transport1_->SetSrtpCryptoSuite(
193 rtc::SRTP_AEAD_AES_256_GCM);
194 }
195 }
178 } 196 }
179 // Based on flags, create fake DTLS or raw packet transports. 197 // Based on flags, create fake DTLS or raw packet transports.
180 if (flags2 & RAW_PACKET_TRANSPORT) { 198 if (flags2 & RAW_PACKET_TRANSPORT) {
181 fake_rtp_packet_transport2_.reset( 199 fake_rtp_packet_transport2_.reset(
182 new rtc::FakePacketTransport("channel2_rtp")); 200 new rtc::FakePacketTransport("channel2_rtp"));
183 rtp2 = fake_rtp_packet_transport2_.get(); 201 rtp2 = fake_rtp_packet_transport2_.get();
184 if (!(flags2 & RTCP_MUX_REQUIRED)) { 202 if (!(flags2 & RTCP_MUX_REQUIRED)) {
185 fake_rtcp_packet_transport2_.reset( 203 fake_rtcp_packet_transport2_.reset(
186 new rtc::FakePacketTransport("channel2_rtcp")); 204 new rtc::FakePacketTransport("channel2_rtcp"));
187 rtcp2 = fake_rtcp_packet_transport2_.get(); 205 rtcp2 = fake_rtcp_packet_transport2_.get();
(...skipping 10 matching lines...) Expand all
198 } 216 }
199 if (flags2 & DTLS) { 217 if (flags2 & DTLS) {
200 auto cert2 = 218 auto cert2 =
201 rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>( 219 rtc::RTCCertificate::Create(std::unique_ptr<rtc::SSLIdentity>(
202 rtc::SSLIdentity::Generate("session2", rtc::KT_DEFAULT))); 220 rtc::SSLIdentity::Generate("session2", rtc::KT_DEFAULT)));
203 fake_rtp_dtls_transport2_->SetLocalCertificate(cert2); 221 fake_rtp_dtls_transport2_->SetLocalCertificate(cert2);
204 if (fake_rtcp_dtls_transport2_) { 222 if (fake_rtcp_dtls_transport2_) {
205 fake_rtcp_dtls_transport2_->SetLocalCertificate(cert2); 223 fake_rtcp_dtls_transport2_->SetLocalCertificate(cert2);
206 } 224 }
207 } 225 }
226 if (flags2 & ENCRYPTED_HEADERS) {
227 rtc::CryptoOptions crypto_options;
228 crypto_options.enable_encrypted_rtp_header_extensions = true;
229 fake_rtp_dtls_transport2_->SetCryptoOptions(crypto_options);
230 if (fake_rtcp_dtls_transport2_) {
231 fake_rtcp_dtls_transport2_->SetCryptoOptions(crypto_options);
232 }
233 }
234 if (flags2 & GCM_CIPHER) {
235 fake_rtp_dtls_transport2_->SetSrtpCryptoSuite(
236 rtc::SRTP_AEAD_AES_256_GCM);
237 if (fake_rtcp_dtls_transport2_) {
238 fake_rtcp_dtls_transport2_->SetSrtpCryptoSuite(
239 rtc::SRTP_AEAD_AES_256_GCM);
240 }
241 }
208 } 242 }
209 channel1_.reset( 243 channel1_.reset(
210 CreateChannel(worker_thread, network_thread_, &media_engine_, ch1, 244 CreateChannel(worker_thread, network_thread_, &media_engine_, ch1,
211 fake_rtp_dtls_transport1_.get(), 245 fake_rtp_dtls_transport1_.get(),
212 fake_rtcp_dtls_transport1_.get(), rtp1, rtcp1, flags1)); 246 fake_rtcp_dtls_transport1_.get(), rtp1, rtcp1, flags1));
213 channel2_.reset( 247 channel2_.reset(
214 CreateChannel(worker_thread, network_thread_, &media_engine_, ch2, 248 CreateChannel(worker_thread, network_thread_, &media_engine_, ch2,
215 fake_rtp_dtls_transport2_.get(), 249 fake_rtp_dtls_transport2_.get(),
216 fake_rtcp_dtls_transport2_.get(), rtp2, rtcp2, flags2)); 250 fake_rtcp_dtls_transport2_.get(), rtp2, rtcp2, flags2));
217 channel1_->SignalMediaMonitor.connect(this, 251 channel1_->SignalMediaMonitor.connect(this,
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 EXPECT_TRUE(channel2_->SetRemoteContent(&content4, CA_ANSWER, NULL)); 896 EXPECT_TRUE(channel2_->SetRemoteContent(&content4, CA_ANSWER, NULL));
863 EXPECT_EQ(0u, media_channel2_->recv_streams().size()); 897 EXPECT_EQ(0u, media_channel2_->recv_streams().size());
864 898
865 EXPECT_TRUE(channel1_->secure()); 899 EXPECT_TRUE(channel1_->secure());
866 EXPECT_TRUE(channel2_->secure()); 900 EXPECT_TRUE(channel2_->secure());
867 SendCustomRtp2(kSsrc2, 0); 901 SendCustomRtp2(kSsrc2, 0);
868 WaitForThreads(); 902 WaitForThreads();
869 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, 0)); 903 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, 0));
870 } 904 }
871 905
906 enum EncryptedHeaderTestScenario {
907 // Offer/Answer are processed before DTLS completes.
908 DEFAULT,
909 // DTLS completes before any Offer/Answer have been sent.
910 DTLS_BEFORE_OFFER_ANSWER,
911 // DTLS completes after channel 2 has processed (remote) Offer and (local)
912 // Answer.
913 DTLS_AFTER_CHANNEL2_READY,
914 };
915
916 // Test that encrypted header extensions are working and can be changed when
917 // sending a new OFFER/ANSWER.
918 void TestChangeEncryptedHeaderExtensions(int flags,
919 EncryptedHeaderTestScenario scenario = DEFAULT) {
920 RTC_CHECK(scenario == 0 || (flags & DTLS));
921 struct PacketListener : public sigslot::has_slots<> {
922 PacketListener() {}
923 void OnReadPacket(rtc::PacketTransportInternal* transport,
924 const char* data, size_t size, const rtc::PacketTime& time,
925 int flags) {
926 CompareHeaderExtensions(
927 reinterpret_cast<const char*>(kPcmuFrameWithExtensions),
928 sizeof(kPcmuFrameWithExtensions), data, size, encrypted_headers,
929 false);
930 }
931 std::vector<int> encrypted_headers;
932 } packet_listener1, packet_listener2;
933
934 cricket::StreamParams stream1;
935 stream1.groupid = "group1";
936 stream1.id = "stream1";
937 stream1.ssrcs.push_back(kSsrc1);
938 stream1.cname = "stream1_cname";
939
940 cricket::StreamParams stream2;
941 stream2.groupid = "group1";
942 stream2.id = "stream2";
943 stream2.ssrcs.push_back(kSsrc2);
944 stream2.cname = "stream2_cname";
945
946 // Use SRTP when testing encrypted extensions.
947 int channel_flags = flags | SECURE | ENCRYPTED_HEADERS;
948 // Enable SDES if channel is not using DTLS.
949 int content_flags = (channel_flags & DTLS) == 0 ? SECURE : 0;
950
951 // kPcmuFrameWithExtensions contains RTP extension headers with ids 1-4.
952 // Make sure to use URIs that are supported for encryption.
953 cricket::RtpHeaderExtensions extensions1;
954 extensions1.push_back(
955 RtpExtension(RtpExtension::kAudioLevelUri, 10));
956 extensions1.push_back(
957 RtpExtension(RtpExtension::kAudioLevelUri, 1, true));
958
959 cricket::RtpHeaderExtensions extensions2;
960 extensions2.push_back(
961 RtpExtension(RtpExtension::kAudioLevelUri, 10));
962 extensions2.push_back(
963 RtpExtension(RtpExtension::kAudioLevelUri, 2, true));
964 extensions2.push_back(
965 RtpExtension(RtpExtension::kVideoRotationUri, 3));
966 extensions2.push_back(
967 RtpExtension(RtpExtension::kTimestampOffsetUri, 4, true));
968
969 // Setup a call where channel 1 send |stream1| to channel 2.
970 CreateChannels(channel_flags, channel_flags);
971 fake_rtp_dtls_transport1_->fake_ice_transport()->SignalReadPacket.connect(
972 &packet_listener1, &PacketListener::OnReadPacket);
973 fake_rtp_dtls_transport2_->fake_ice_transport()->SignalReadPacket.connect(
974 &packet_listener2, &PacketListener::OnReadPacket);
975
976 if (scenario == DTLS_BEFORE_OFFER_ANSWER) {
977 ConnectFakeTransports();
978 WaitForThreads();
979 }
980
981 typename T::Content content1;
982 CreateContent(content_flags, kPcmuCodec, kH264Codec, &content1);
983 content1.AddStream(stream1);
984 content1.set_rtp_header_extensions(extensions1);
985 EXPECT_TRUE(channel1_->SetLocalContent(&content1, CA_OFFER, NULL));
986 EXPECT_TRUE(channel1_->Enable(true));
987 EXPECT_EQ(1u, media_channel1_->send_streams().size());
988 packet_listener1.encrypted_headers.push_back(1);
989
990 EXPECT_TRUE(channel2_->SetRemoteContent(&content1, CA_OFFER, NULL));
991 EXPECT_EQ(1u, media_channel2_->recv_streams().size());
992
993 // Channel 2 sends back |stream2|.
994 typename T::Content content2;
995 CreateContent(content_flags, kPcmuCodec, kH264Codec, &content2);
996 content2.AddStream(stream2);
997 content2.set_rtp_header_extensions(extensions1);
998 EXPECT_TRUE(channel2_->SetLocalContent(&content2, CA_ANSWER, NULL));
999 EXPECT_TRUE(channel2_->Enable(true));
1000 EXPECT_EQ(1u, media_channel2_->send_streams().size());
1001 packet_listener2.encrypted_headers.push_back(1);
1002
1003 if (scenario == DTLS_AFTER_CHANNEL2_READY) {
1004 ConnectFakeTransports();
1005 WaitForThreads();
1006 }
1007
1008 if (scenario == DTLS_BEFORE_OFFER_ANSWER ||
1009 scenario == DTLS_AFTER_CHANNEL2_READY) {
1010 // In both scenarios with partially completed Offer/Answer, sending
1011 // packets from Channel 2 to Channel 1 should work.
1012 SendCustomRtp2(kSsrc2, 0);
1013 WaitForThreads();
1014 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, 0));
1015 }
1016
1017 EXPECT_TRUE(channel1_->SetRemoteContent(&content2, CA_ANSWER, NULL));
1018 EXPECT_EQ(1u, media_channel1_->recv_streams().size());
1019
1020 if (scenario == DEFAULT) {
1021 ConnectFakeTransports();
1022 WaitForThreads();
1023 }
1024
1025 SendCustomRtp1(kSsrc1, 0);
1026 SendCustomRtp2(kSsrc2, 0);
1027 WaitForThreads();
1028 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, 0));
1029 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, 0));
1030
1031 // Let channel 2 update the encrypted header extensions.
1032 typename T::Content content3;
1033 CreateContent(content_flags, kPcmuCodec, kH264Codec, &content3);
1034 content3.AddStream(stream2);
1035 content3.set_rtp_header_extensions(extensions2);
1036 EXPECT_TRUE(channel2_->SetLocalContent(&content3, CA_OFFER, NULL));
1037 ASSERT_EQ(1u, media_channel2_->send_streams().size());
1038 EXPECT_EQ(stream2, media_channel2_->send_streams()[0]);
1039 packet_listener2.encrypted_headers.clear();
1040 packet_listener2.encrypted_headers.push_back(2);
1041 packet_listener2.encrypted_headers.push_back(4);
1042
1043 EXPECT_TRUE(channel1_->SetRemoteContent(&content3, CA_OFFER, NULL));
1044 ASSERT_EQ(1u, media_channel1_->recv_streams().size());
1045 EXPECT_EQ(stream2, media_channel1_->recv_streams()[0]);
1046
1047 // Channel 1 is already sending the new encrypted extensions. These
1048 // can be decrypted by channel 2. Channel 2 is still sending the old
1049 // encrypted extensions (which can be decrypted by channel 1).
1050
1051 if (flags & DTLS) {
1052 // DTLS supports updating the encrypted extensions with only the OFFER
1053 // being processed. For SDES both the OFFER and ANSWER must have been
1054 // processed to update encrypted extensions, so we can't check this case.
1055 SendCustomRtp1(kSsrc1, 0);
1056 SendCustomRtp2(kSsrc2, 0);
1057 WaitForThreads();
1058 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, 0));
1059 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, 0));
1060 }
1061
1062 // Channel 1 replies with the same extensions.
1063 typename T::Content content4;
1064 CreateContent(content_flags, kPcmuCodec, kH264Codec, &content4);
1065 content4.AddStream(stream1);
1066 content4.set_rtp_header_extensions(extensions2);
1067 EXPECT_TRUE(channel1_->SetLocalContent(&content4, CA_ANSWER, NULL));
1068 EXPECT_EQ(1u, media_channel1_->send_streams().size());
1069 packet_listener1.encrypted_headers.clear();
1070 packet_listener1.encrypted_headers.push_back(2);
1071 packet_listener1.encrypted_headers.push_back(4);
1072
1073 EXPECT_TRUE(channel2_->SetRemoteContent(&content4, CA_ANSWER, NULL));
1074 EXPECT_EQ(1u, media_channel2_->recv_streams().size());
1075
1076 SendCustomRtp1(kSsrc1, 0);
1077 SendCustomRtp2(kSsrc2, 0);
1078 WaitForThreads();
1079 EXPECT_TRUE(CheckCustomRtp2(kSsrc1, 0));
1080 EXPECT_TRUE(CheckCustomRtp1(kSsrc2, 0));
1081 }
1082
872 // Test that we only start playout and sending at the right times. 1083 // Test that we only start playout and sending at the right times.
873 void TestPlayoutAndSendingStates() { 1084 void TestPlayoutAndSendingStates() {
874 CreateChannels(0, 0); 1085 CreateChannels(0, 0);
875 if (verify_playout_) { 1086 if (verify_playout_) {
876 EXPECT_FALSE(media_channel1_->playout()); 1087 EXPECT_FALSE(media_channel1_->playout());
877 } 1088 }
878 EXPECT_FALSE(media_channel1_->sending()); 1089 EXPECT_FALSE(media_channel1_->sending());
879 if (verify_playout_) { 1090 if (verify_playout_) {
880 EXPECT_FALSE(media_channel2_->playout()); 1091 EXPECT_FALSE(media_channel2_->playout());
881 } 1092 }
(...skipping 1066 matching lines...) Expand 10 before | Expand all | Expand 10 after
1948 : Base(true, kPcmuFrame, kRtcpReport, NetworkIsWorker::Yes) {} 2159 : Base(true, kPcmuFrame, kRtcpReport, NetworkIsWorker::Yes) {}
1949 }; 2160 };
1950 2161
1951 class VoiceChannelDoubleThreadTest : public ChannelTest<VoiceTraits> { 2162 class VoiceChannelDoubleThreadTest : public ChannelTest<VoiceTraits> {
1952 public: 2163 public:
1953 typedef ChannelTest<VoiceTraits> Base; 2164 typedef ChannelTest<VoiceTraits> Base;
1954 VoiceChannelDoubleThreadTest() 2165 VoiceChannelDoubleThreadTest()
1955 : Base(true, kPcmuFrame, kRtcpReport, NetworkIsWorker::No) {} 2166 : Base(true, kPcmuFrame, kRtcpReport, NetworkIsWorker::No) {}
1956 }; 2167 };
1957 2168
2169 class VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest
2170 : public ChannelTest<VoiceTraits> {
2171 public:
2172 typedef ChannelTest<VoiceTraits> Base;
2173 VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest()
2174 : Base(true, kPcmuFrameWithExtensions, kRtcpReport,
2175 NetworkIsWorker::Yes) {}
2176 };
2177
2178 class VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest
2179 : public ChannelTest<VoiceTraits> {
2180 public:
2181 typedef ChannelTest<VoiceTraits> Base;
2182 VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest()
2183 : Base(true, kPcmuFrameWithExtensions, kRtcpReport,
2184 NetworkIsWorker::No) {}
2185 };
2186
1958 // override to add NULL parameter 2187 // override to add NULL parameter
1959 template <> 2188 template <>
1960 cricket::VideoChannel* ChannelTest<VideoTraits>::CreateChannel( 2189 cricket::VideoChannel* ChannelTest<VideoTraits>::CreateChannel(
1961 rtc::Thread* worker_thread, 2190 rtc::Thread* worker_thread,
1962 rtc::Thread* network_thread, 2191 rtc::Thread* network_thread,
1963 cricket::MediaEngineInterface* engine, 2192 cricket::MediaEngineInterface* engine,
1964 cricket::FakeVideoMediaChannel* ch, 2193 cricket::FakeVideoMediaChannel* ch,
1965 cricket::DtlsTransportInternal* fake_rtp_dtls_transport, 2194 cricket::DtlsTransportInternal* fake_rtp_dtls_transport,
1966 cricket::DtlsTransportInternal* fake_rtcp_dtls_transport, 2195 cricket::DtlsTransportInternal* fake_rtcp_dtls_transport,
1967 rtc::PacketTransportInternal* fake_rtp_packet_transport, 2196 rtc::PacketTransportInternal* fake_rtp_packet_transport,
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
2084 } 2313 }
2085 2314
2086 TEST_F(VoiceChannelSingleThreadTest, TestUpdateRemoteStreamsInContent) { 2315 TEST_F(VoiceChannelSingleThreadTest, TestUpdateRemoteStreamsInContent) {
2087 Base::TestUpdateStreamsInRemoteContent(); 2316 Base::TestUpdateStreamsInRemoteContent();
2088 } 2317 }
2089 2318
2090 TEST_F(VoiceChannelSingleThreadTest, TestChangeStreamParamsInContent) { 2319 TEST_F(VoiceChannelSingleThreadTest, TestChangeStreamParamsInContent) {
2091 Base::TestChangeStreamParamsInContent(); 2320 Base::TestChangeStreamParamsInContent();
2092 } 2321 }
2093 2322
2323 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2324 TestChangeEncryptedHeaderExtensionsDtls) {
2325 int flags = DTLS;
2326 Base::TestChangeEncryptedHeaderExtensions(flags);
2327 }
2328
2329 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2330 TestChangeEncryptedHeaderExtensionsDtlsScenario1) {
2331 int flags = DTLS;
2332 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_BEFORE_OFFER_ANSWER);
2333 }
2334
2335 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2336 TestChangeEncryptedHeaderExtensionsDtlsScenario2) {
2337 int flags = DTLS;
2338 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_AFTER_CHANNEL2_READY);
2339 }
2340
2341 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2342 TestChangeEncryptedHeaderExtensionsDtlsGcm) {
2343 int flags = DTLS | GCM_CIPHER;
2344 Base::TestChangeEncryptedHeaderExtensions(flags);
2345 }
2346
2347 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2348 TestChangeEncryptedHeaderExtensionsDtlsGcmScenario1) {
2349 int flags = DTLS | GCM_CIPHER;
2350 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_BEFORE_OFFER_ANSWER);
2351 }
2352
2353 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2354 TestChangeEncryptedHeaderExtensionsDtlsGcmScenario2) {
2355 int flags = DTLS | GCM_CIPHER;
2356 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_AFTER_CHANNEL2_READY);
2357 }
2358
2359 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsSingleThreadTest,
2360 TestChangeEncryptedHeaderExtensionsSDES) {
2361 int flags = 0;
2362 Base::TestChangeEncryptedHeaderExtensions(flags);
2363 }
2364
2094 TEST_F(VoiceChannelSingleThreadTest, TestPlayoutAndSendingStates) { 2365 TEST_F(VoiceChannelSingleThreadTest, TestPlayoutAndSendingStates) {
2095 Base::TestPlayoutAndSendingStates(); 2366 Base::TestPlayoutAndSendingStates();
2096 } 2367 }
2097 2368
2098 TEST_F(VoiceChannelSingleThreadTest, TestMuteStream) { 2369 TEST_F(VoiceChannelSingleThreadTest, TestMuteStream) {
2099 CreateChannels(0, 0); 2370 CreateChannels(0, 0);
2100 // Test that we can Mute the default channel even though the sending SSRC 2371 // Test that we can Mute the default channel even though the sending SSRC
2101 // is unknown. 2372 // is unknown.
2102 EXPECT_FALSE(media_channel1_->IsStreamMuted(0)); 2373 EXPECT_FALSE(media_channel1_->IsStreamMuted(0));
2103 EXPECT_TRUE(channel1_->SetAudioSend(0, false, nullptr, nullptr)); 2374 EXPECT_TRUE(channel1_->SetAudioSend(0, false, nullptr, nullptr));
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
2401 } 2672 }
2402 2673
2403 TEST_F(VoiceChannelDoubleThreadTest, TestUpdateRemoteStreamsInContent) { 2674 TEST_F(VoiceChannelDoubleThreadTest, TestUpdateRemoteStreamsInContent) {
2404 Base::TestUpdateStreamsInRemoteContent(); 2675 Base::TestUpdateStreamsInRemoteContent();
2405 } 2676 }
2406 2677
2407 TEST_F(VoiceChannelDoubleThreadTest, TestChangeStreamParamsInContent) { 2678 TEST_F(VoiceChannelDoubleThreadTest, TestChangeStreamParamsInContent) {
2408 Base::TestChangeStreamParamsInContent(); 2679 Base::TestChangeStreamParamsInContent();
2409 } 2680 }
2410 2681
2682 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2683 TestChangeEncryptedHeaderExtensionsDtls) {
2684 int flags = DTLS;
2685 Base::TestChangeEncryptedHeaderExtensions(flags);
2686 }
2687
2688 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2689 TestChangeEncryptedHeaderExtensionsDtlsScenario1) {
2690 int flags = DTLS;
2691 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_BEFORE_OFFER_ANSWER);
2692 }
2693
2694 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2695 TestChangeEncryptedHeaderExtensionsDtlsScenario2) {
2696 int flags = DTLS;
2697 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_AFTER_CHANNEL2_READY);
2698 }
2699
2700 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2701 TestChangeEncryptedHeaderExtensionsDtlsGcm) {
2702 int flags = DTLS | GCM_CIPHER;
2703 Base::TestChangeEncryptedHeaderExtensions(flags);
2704 }
2705
2706 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2707 TestChangeEncryptedHeaderExtensionsDtlsGcmScenario1) {
2708 int flags = DTLS | GCM_CIPHER;
2709 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_BEFORE_OFFER_ANSWER);
2710 }
2711
2712 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2713 TestChangeEncryptedHeaderExtensionsDtlsGcmScenario2) {
2714 int flags = DTLS | GCM_CIPHER;
2715 Base::TestChangeEncryptedHeaderExtensions(flags, DTLS_AFTER_CHANNEL2_READY);
2716 }
2717
2718 TEST_F(VoiceChannelWithEncryptedRtpHeaderExtensionsDoubleThreadTest,
2719 TestChangeEncryptedHeaderExtensionsSDES) {
2720 int flags = 0;
2721 Base::TestChangeEncryptedHeaderExtensions(flags);
2722 }
2723
2411 TEST_F(VoiceChannelDoubleThreadTest, TestPlayoutAndSendingStates) { 2724 TEST_F(VoiceChannelDoubleThreadTest, TestPlayoutAndSendingStates) {
2412 Base::TestPlayoutAndSendingStates(); 2725 Base::TestPlayoutAndSendingStates();
2413 } 2726 }
2414 2727
2415 TEST_F(VoiceChannelDoubleThreadTest, TestMuteStream) { 2728 TEST_F(VoiceChannelDoubleThreadTest, TestMuteStream) {
2416 CreateChannels(0, 0); 2729 CreateChannels(0, 0);
2417 // Test that we can Mute the default channel even though the sending SSRC 2730 // Test that we can Mute the default channel even though the sending SSRC
2418 // is unknown. 2731 // is unknown.
2419 EXPECT_FALSE(media_channel1_->IsStreamMuted(0)); 2732 EXPECT_FALSE(media_channel1_->IsStreamMuted(0));
2420 EXPECT_TRUE(channel1_->SetAudioSend(0, false, nullptr, nullptr)); 2733 EXPECT_TRUE(channel1_->SetAudioSend(0, false, nullptr, nullptr));
(...skipping 1165 matching lines...) Expand 10 before | Expand all | Expand 10 after
3586 ASSERT_TRUE(voice_channel_.Init_w(nullptr, nullptr, &fake_rtp_dtls_transport_, 3899 ASSERT_TRUE(voice_channel_.Init_w(nullptr, nullptr, &fake_rtp_dtls_transport_,
3587 &fake_rtcp_dtls_transport_)); 3900 &fake_rtcp_dtls_transport_));
3588 EXPECT_DEATH(voice_channel_.SetTransports(&fake_rtp_dtls_transport_, 3901 EXPECT_DEATH(voice_channel_.SetTransports(&fake_rtp_dtls_transport_,
3589 &fake_rtp_dtls_transport_), 3902 &fake_rtp_dtls_transport_),
3590 ""); 3903 "");
3591 } 3904 }
3592 3905
3593 #endif // RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID) 3906 #endif // RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
3594 3907
3595 // TODO(pthatcher): TestSetReceiver? 3908 // TODO(pthatcher): TestSetReceiver?
OLDNEW
« no previous file with comments | « webrtc/pc/channel.cc ('k') | webrtc/pc/mediasession.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698