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 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
148 }; | 148 }; |
149 | 149 |
150 class PeerConnectionTestClient : public webrtc::PeerConnectionObserver, | 150 class PeerConnectionTestClient : public webrtc::PeerConnectionObserver, |
151 public SignalingMessageReceiver, | 151 public SignalingMessageReceiver, |
152 public ObserverInterface { | 152 public ObserverInterface { |
153 public: | 153 public: |
154 static PeerConnectionTestClient* CreateClientWithDtlsIdentityStore( | 154 static PeerConnectionTestClient* CreateClientWithDtlsIdentityStore( |
155 const std::string& id, | 155 const std::string& id, |
156 const MediaConstraintsInterface* constraints, | 156 const MediaConstraintsInterface* constraints, |
157 const PeerConnectionFactory::Options* options, | 157 const PeerConnectionFactory::Options* options, |
158 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store) { | 158 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store, |
159 bool prefer_constraint_apis) { | |
159 PeerConnectionTestClient* client(new PeerConnectionTestClient(id)); | 160 PeerConnectionTestClient* client(new PeerConnectionTestClient(id)); |
160 if (!client->Init(constraints, options, std::move(dtls_identity_store))) { | 161 if (!client->Init(constraints, options, std::move(dtls_identity_store), |
162 prefer_constraint_apis)) { | |
161 delete client; | 163 delete client; |
162 return nullptr; | 164 return nullptr; |
163 } | 165 } |
164 return client; | 166 return client; |
165 } | 167 } |
166 | 168 |
167 static PeerConnectionTestClient* CreateClient( | 169 static PeerConnectionTestClient* CreateClient( |
168 const std::string& id, | 170 const std::string& id, |
169 const MediaConstraintsInterface* constraints, | 171 const MediaConstraintsInterface* constraints, |
170 const PeerConnectionFactory::Options* options) { | 172 const PeerConnectionFactory::Options* options) { |
171 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( | 173 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( |
172 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() | 174 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() |
173 : nullptr); | 175 : nullptr); |
174 | 176 |
175 return CreateClientWithDtlsIdentityStore(id, constraints, options, | 177 return CreateClientWithDtlsIdentityStore( |
176 std::move(dtls_identity_store)); | 178 id, constraints, options, std::move(dtls_identity_store), true); |
179 } | |
180 | |
181 static PeerConnectionTestClient* CreateClientPreferNoConstraints( | |
182 const std::string& id, | |
183 const PeerConnectionFactory::Options* options) { | |
184 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( | |
185 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() | |
186 : nullptr); | |
187 | |
188 return CreateClientWithDtlsIdentityStore( | |
189 id, nullptr, options, std::move(dtls_identity_store), false); | |
177 } | 190 } |
178 | 191 |
179 ~PeerConnectionTestClient() { | 192 ~PeerConnectionTestClient() { |
180 } | 193 } |
181 | 194 |
182 void Negotiate() { Negotiate(true, true); } | 195 void Negotiate() { Negotiate(true, true); } |
183 | 196 |
184 void Negotiate(bool audio, bool video) { | 197 void Negotiate(bool audio, bool video) { |
185 rtc::scoped_ptr<SessionDescriptionInterface> offer; | 198 rtc::scoped_ptr<SessionDescriptionInterface> offer; |
186 ASSERT_TRUE(DoCreateOffer(offer.use())); | 199 ASSERT_TRUE(DoCreateOffer(offer.use())); |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
330 } | 343 } |
331 | 344 |
332 void EnableVideoDecoderFactory() { | 345 void EnableVideoDecoderFactory() { |
333 video_decoder_factory_enabled_ = true; | 346 video_decoder_factory_enabled_ = true; |
334 fake_video_decoder_factory_->AddSupportedVideoCodecType( | 347 fake_video_decoder_factory_->AddSupportedVideoCodecType( |
335 webrtc::kVideoCodecVP8); | 348 webrtc::kVideoCodecVP8); |
336 } | 349 } |
337 | 350 |
338 void IceRestart() { | 351 void IceRestart() { |
339 session_description_constraints_.SetMandatoryIceRestart(true); | 352 session_description_constraints_.SetMandatoryIceRestart(true); |
353 session_description_options_.ice_restart = true; | |
340 SetExpectIceRestart(true); | 354 SetExpectIceRestart(true); |
341 } | 355 } |
342 | 356 |
343 void SetExpectIceRestart(bool expect_restart) { | 357 void SetExpectIceRestart(bool expect_restart) { |
344 expect_ice_restart_ = expect_restart; | 358 expect_ice_restart_ = expect_restart; |
345 } | 359 } |
346 | 360 |
347 bool ExpectIceRestart() const { return expect_ice_restart_; } | 361 bool ExpectIceRestart() const { return expect_ice_restart_; } |
348 | 362 |
349 void SetReceiveAudioVideo(bool audio, bool video) { | 363 void SetReceiveAudioVideo(bool audio, bool video) { |
350 SetReceiveAudio(audio); | 364 SetReceiveAudio(audio); |
351 SetReceiveVideo(video); | 365 SetReceiveVideo(video); |
352 ASSERT_EQ(audio, can_receive_audio()); | 366 ASSERT_EQ(audio, can_receive_audio()); |
353 ASSERT_EQ(video, can_receive_video()); | 367 ASSERT_EQ(video, can_receive_video()); |
354 } | 368 } |
355 | 369 |
356 void SetReceiveAudio(bool audio) { | 370 void SetReceiveAudio(bool audio) { |
357 if (audio && can_receive_audio()) | 371 if (audio && can_receive_audio()) |
358 return; | 372 return; |
359 session_description_constraints_.SetMandatoryReceiveAudio(audio); | 373 session_description_constraints_.SetMandatoryReceiveAudio(audio); |
374 session_description_options_.offer_to_receive_audio = audio ? 1 : 0; | |
360 } | 375 } |
361 | 376 |
362 void SetReceiveVideo(bool video) { | 377 void SetReceiveVideo(bool video) { |
363 if (video && can_receive_video()) | 378 if (video && can_receive_video()) |
364 return; | 379 return; |
365 session_description_constraints_.SetMandatoryReceiveVideo(video); | 380 session_description_constraints_.SetMandatoryReceiveVideo(video); |
381 session_description_options_.offer_to_receive_video = video ? 1 : 0; | |
366 } | 382 } |
367 | 383 |
368 void RemoveMsidFromReceivedSdp(bool remove) { remove_msid_ = remove; } | 384 void RemoveMsidFromReceivedSdp(bool remove) { remove_msid_ = remove; } |
369 | 385 |
370 void RemoveSdesCryptoFromReceivedSdp(bool remove) { remove_sdes_ = remove; } | 386 void RemoveSdesCryptoFromReceivedSdp(bool remove) { remove_sdes_ = remove; } |
371 | 387 |
372 void RemoveBundleFromReceivedSdp(bool remove) { remove_bundle_ = remove; } | 388 void RemoveBundleFromReceivedSdp(bool remove) { remove_bundle_ = remove; } |
373 | 389 |
374 bool can_receive_audio() { | 390 bool can_receive_audio() { |
375 bool value; | 391 bool value; |
376 if (webrtc::FindConstraint(&session_description_constraints_, | 392 if (prefer_constraint_apis_) { |
377 MediaConstraintsInterface::kOfferToReceiveAudio, | 393 if (webrtc::FindConstraint( |
378 &value, nullptr)) { | 394 &session_description_constraints_, |
379 return value; | 395 MediaConstraintsInterface::kOfferToReceiveAudio, &value, |
396 nullptr)) { | |
397 return value; | |
398 } | |
399 return true; | |
380 } | 400 } |
381 return true; | 401 return session_description_options_.offer_to_receive_audio > 0 || |
402 session_description_options_.offer_to_receive_audio == | |
403 PeerConnectionInterface::RTCOfferAnswerOptions::kUndefined; | |
382 } | 404 } |
383 | 405 |
384 bool can_receive_video() { | 406 bool can_receive_video() { |
385 bool value; | 407 bool value; |
386 if (webrtc::FindConstraint(&session_description_constraints_, | 408 if (prefer_constraint_apis_) { |
387 MediaConstraintsInterface::kOfferToReceiveVideo, | 409 if (webrtc::FindConstraint( |
388 &value, nullptr)) { | 410 &session_description_constraints_, |
389 return value; | 411 MediaConstraintsInterface::kOfferToReceiveVideo, &value, |
412 nullptr)) { | |
413 return value; | |
414 } | |
415 return true; | |
390 } | 416 } |
391 return true; | 417 return session_description_options_.offer_to_receive_audio > 0 || |
perkj_webrtc
2016/03/10 15:35:24
video
hta-webrtc
2016/03/10 16:22:05
Ouch. Makes me feel I should write tests for my te
| |
418 session_description_options_.offer_to_receive_audio == | |
perkj_webrtc
2016/03/10 15:35:24
video
hta-webrtc
2016/03/10 16:22:05
Done.
| |
419 PeerConnectionInterface::RTCOfferAnswerOptions::kUndefined; | |
392 } | 420 } |
393 | 421 |
394 void OnDataChannel(DataChannelInterface* data_channel) override { | 422 void OnDataChannel(DataChannelInterface* data_channel) override { |
395 LOG(INFO) << id_ << "OnDataChannel"; | 423 LOG(INFO) << id_ << "OnDataChannel"; |
396 data_channel_ = data_channel; | 424 data_channel_ = data_channel; |
397 data_observer_.reset(new MockDataChannelObserver(data_channel)); | 425 data_observer_.reset(new MockDataChannelObserver(data_channel)); |
398 } | 426 } |
399 | 427 |
400 void CreateDataChannel() { | 428 void CreateDataChannel() { |
401 data_channel_ = pc()->CreateDataChannel(kDataChannelLabel, nullptr); | 429 data_channel_ = pc()->CreateDataChannel(kDataChannelLabel, nullptr); |
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
738 private: | 766 private: |
739 bool completed_; | 767 bool completed_; |
740 std::vector<std::string> tones_; | 768 std::vector<std::string> tones_; |
741 }; | 769 }; |
742 | 770 |
743 explicit PeerConnectionTestClient(const std::string& id) : id_(id) {} | 771 explicit PeerConnectionTestClient(const std::string& id) : id_(id) {} |
744 | 772 |
745 bool Init( | 773 bool Init( |
746 const MediaConstraintsInterface* constraints, | 774 const MediaConstraintsInterface* constraints, |
747 const PeerConnectionFactory::Options* options, | 775 const PeerConnectionFactory::Options* options, |
748 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store) { | 776 rtc::scoped_ptr<webrtc::DtlsIdentityStoreInterface> dtls_identity_store, |
777 bool prefer_constraint_apis) { | |
749 EXPECT_TRUE(!peer_connection_); | 778 EXPECT_TRUE(!peer_connection_); |
750 EXPECT_TRUE(!peer_connection_factory_); | 779 EXPECT_TRUE(!peer_connection_factory_); |
780 if (!prefer_constraint_apis) { | |
781 EXPECT_TRUE(!constraints); | |
782 } | |
783 prefer_constraint_apis_ = prefer_constraint_apis; | |
784 | |
751 rtc::scoped_ptr<cricket::PortAllocator> port_allocator( | 785 rtc::scoped_ptr<cricket::PortAllocator> port_allocator( |
752 new cricket::FakePortAllocator(rtc::Thread::Current(), nullptr)); | 786 new cricket::FakePortAllocator(rtc::Thread::Current(), nullptr)); |
753 fake_audio_capture_module_ = FakeAudioCaptureModule::Create(); | 787 fake_audio_capture_module_ = FakeAudioCaptureModule::Create(); |
754 | 788 |
755 if (fake_audio_capture_module_ == nullptr) { | 789 if (fake_audio_capture_module_ == nullptr) { |
756 return false; | 790 return false; |
757 } | 791 } |
758 fake_video_decoder_factory_ = new FakeWebRtcVideoDecoderFactory(); | 792 fake_video_decoder_factory_ = new FakeWebRtcVideoDecoderFactory(); |
759 fake_video_encoder_factory_ = new FakeWebRtcVideoEncoderFactory(); | 793 fake_video_encoder_factory_ = new FakeWebRtcVideoEncoderFactory(); |
760 peer_connection_factory_ = webrtc::CreatePeerConnectionFactory( | 794 peer_connection_factory_ = webrtc::CreatePeerConnectionFactory( |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
812 rtc::scoped_ptr<SessionDescriptionInterface> desc( | 846 rtc::scoped_ptr<SessionDescriptionInterface> desc( |
813 webrtc::CreateSessionDescription("answer", msg, nullptr)); | 847 webrtc::CreateSessionDescription("answer", msg, nullptr)); |
814 EXPECT_TRUE(DoSetRemoteDescription(desc.release())); | 848 EXPECT_TRUE(DoSetRemoteDescription(desc.release())); |
815 } | 849 } |
816 | 850 |
817 bool DoCreateOfferAnswer(SessionDescriptionInterface** desc, | 851 bool DoCreateOfferAnswer(SessionDescriptionInterface** desc, |
818 bool offer) { | 852 bool offer) { |
819 rtc::scoped_refptr<MockCreateSessionDescriptionObserver> | 853 rtc::scoped_refptr<MockCreateSessionDescriptionObserver> |
820 observer(new rtc::RefCountedObject< | 854 observer(new rtc::RefCountedObject< |
821 MockCreateSessionDescriptionObserver>()); | 855 MockCreateSessionDescriptionObserver>()); |
822 if (offer) { | 856 if (prefer_constraint_apis_) { |
823 pc()->CreateOffer(observer, &session_description_constraints_); | 857 if (offer) { |
858 pc()->CreateOffer(observer, &session_description_constraints_); | |
859 } else { | |
860 pc()->CreateAnswer(observer, &session_description_constraints_); | |
861 } | |
824 } else { | 862 } else { |
825 pc()->CreateAnswer(observer, &session_description_constraints_); | 863 if (offer) { |
864 pc()->CreateOffer(observer, session_description_options_); | |
865 } else { | |
866 pc()->CreateAnswer(observer, session_description_options_); | |
867 } | |
826 } | 868 } |
827 EXPECT_EQ_WAIT(true, observer->called(), kMaxWaitMs); | 869 EXPECT_EQ_WAIT(true, observer->called(), kMaxWaitMs); |
828 *desc = observer->release_desc(); | 870 *desc = observer->release_desc(); |
829 if (observer->result() && ExpectIceRestart()) { | 871 if (observer->result() && ExpectIceRestart()) { |
830 EXPECT_EQ(0u, (*desc)->candidates(0)->count()); | 872 EXPECT_EQ(0u, (*desc)->candidates(0)->count()); |
831 } | 873 } |
832 return observer->result(); | 874 return observer->result(); |
833 } | 875 } |
834 | 876 |
835 bool DoCreateOffer(SessionDescriptionInterface** desc) { | 877 bool DoCreateOffer(SessionDescriptionInterface** desc) { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
888 RemoveLinesFromSdp(kSdpSdesCryptoAttribute, sdp); | 930 RemoveLinesFromSdp(kSdpSdesCryptoAttribute, sdp); |
889 } | 931 } |
890 } | 932 } |
891 | 933 |
892 std::string id_; | 934 std::string id_; |
893 | 935 |
894 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; | 936 rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_; |
895 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> | 937 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> |
896 peer_connection_factory_; | 938 peer_connection_factory_; |
897 | 939 |
940 bool prefer_constraint_apis_ = true; | |
898 bool auto_add_stream_ = true; | 941 bool auto_add_stream_ = true; |
899 | 942 |
900 typedef std::pair<std::string, std::string> IceUfragPwdPair; | 943 typedef std::pair<std::string, std::string> IceUfragPwdPair; |
901 std::map<int, IceUfragPwdPair> ice_ufrag_pwd_; | 944 std::map<int, IceUfragPwdPair> ice_ufrag_pwd_; |
902 bool expect_ice_restart_ = false; | 945 bool expect_ice_restart_ = false; |
903 | 946 |
904 // Needed to keep track of number of frames sent. | 947 // Needed to keep track of number of frames sent. |
905 rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; | 948 rtc::scoped_refptr<FakeAudioCaptureModule> fake_audio_capture_module_; |
906 // Needed to keep track of number of frames received. | 949 // Needed to keep track of number of frames received. |
907 std::map<std::string, rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>> | 950 std::map<std::string, rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>> |
908 fake_video_renderers_; | 951 fake_video_renderers_; |
909 // Needed to ensure frames aren't received for removed tracks. | 952 // Needed to ensure frames aren't received for removed tracks. |
910 std::vector<rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>> | 953 std::vector<rtc::scoped_ptr<webrtc::FakeVideoTrackRenderer>> |
911 removed_fake_video_renderers_; | 954 removed_fake_video_renderers_; |
912 // Needed to keep track of number of frames received when external decoder | 955 // Needed to keep track of number of frames received when external decoder |
913 // used. | 956 // used. |
914 FakeWebRtcVideoDecoderFactory* fake_video_decoder_factory_ = nullptr; | 957 FakeWebRtcVideoDecoderFactory* fake_video_decoder_factory_ = nullptr; |
915 FakeWebRtcVideoEncoderFactory* fake_video_encoder_factory_ = nullptr; | 958 FakeWebRtcVideoEncoderFactory* fake_video_encoder_factory_ = nullptr; |
916 bool video_decoder_factory_enabled_ = false; | 959 bool video_decoder_factory_enabled_ = false; |
917 webrtc::FakeConstraints video_constraints_; | 960 webrtc::FakeConstraints video_constraints_; |
918 | 961 |
919 // For remote peer communication. | 962 // For remote peer communication. |
920 SignalingMessageReceiver* signaling_message_receiver_ = nullptr; | 963 SignalingMessageReceiver* signaling_message_receiver_ = nullptr; |
921 | 964 |
922 // Store references to the video capturers we've created, so that we can stop | 965 // Store references to the video capturers we've created, so that we can stop |
923 // them, if required. | 966 // them, if required. |
924 std::vector<cricket::VideoCapturer*> video_capturers_; | 967 std::vector<cricket::VideoCapturer*> video_capturers_; |
925 | 968 |
926 webrtc::FakeConstraints session_description_constraints_; | 969 webrtc::FakeConstraints session_description_constraints_; |
970 PeerConnectionInterface::RTCOfferAnswerOptions session_description_options_; | |
perkj_webrtc
2016/03/10 15:35:24
suggest change name to match the type. what about
hta-webrtc
2016/03/10 16:22:05
Good idea. The "session_description" moniker was n
| |
927 bool remove_msid_ = false; // True if MSID should be removed in received SDP. | 971 bool remove_msid_ = false; // True if MSID should be removed in received SDP. |
928 bool remove_bundle_ = | 972 bool remove_bundle_ = |
929 false; // True if bundle should be removed in received SDP. | 973 false; // True if bundle should be removed in received SDP. |
930 bool remove_sdes_ = | 974 bool remove_sdes_ = |
931 false; // True if a=crypto should be removed in received SDP. | 975 false; // True if a=crypto should be removed in received SDP. |
932 | 976 |
933 rtc::scoped_refptr<DataChannelInterface> data_channel_; | 977 rtc::scoped_refptr<DataChannelInterface> data_channel_; |
934 rtc::scoped_ptr<MockDataChannelObserver> data_observer_; | 978 rtc::scoped_ptr<MockDataChannelObserver> data_observer_; |
935 }; | 979 }; |
936 | 980 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1026 } | 1070 } |
1027 | 1071 |
1028 bool CreateTestClients() { return CreateTestClients(nullptr, nullptr); } | 1072 bool CreateTestClients() { return CreateTestClients(nullptr, nullptr); } |
1029 | 1073 |
1030 bool CreateTestClients(MediaConstraintsInterface* init_constraints, | 1074 bool CreateTestClients(MediaConstraintsInterface* init_constraints, |
1031 MediaConstraintsInterface* recv_constraints) { | 1075 MediaConstraintsInterface* recv_constraints) { |
1032 return CreateTestClients(init_constraints, nullptr, recv_constraints, | 1076 return CreateTestClients(init_constraints, nullptr, recv_constraints, |
1033 nullptr); | 1077 nullptr); |
1034 } | 1078 } |
1035 | 1079 |
1080 bool CreateTestClientsThatPreferNoConstraints() { | |
1081 initiating_client_.reset( | |
1082 PeerConnectionTestClient::CreateClientPreferNoConstraints("Caller: ", | |
1083 nullptr)); | |
1084 receiving_client_.reset( | |
1085 PeerConnectionTestClient::CreateClientPreferNoConstraints("Callee: ", | |
1086 nullptr)); | |
1087 if (!initiating_client_ || !receiving_client_) { | |
1088 return false; | |
1089 } | |
1090 // Remember the choice for possible later resets of the clients. | |
1091 prefer_constraint_apis_ = false; | |
1092 SetSignalingReceivers(); | |
1093 return true; | |
1094 } | |
1095 | |
1036 void SetSignalingReceivers() { | 1096 void SetSignalingReceivers() { |
1037 initiating_client_->set_signaling_message_receiver(receiving_client_.get()); | 1097 initiating_client_->set_signaling_message_receiver(receiving_client_.get()); |
1038 receiving_client_->set_signaling_message_receiver(initiating_client_.get()); | 1098 receiving_client_->set_signaling_message_receiver(initiating_client_.get()); |
1039 } | 1099 } |
1040 | 1100 |
1041 bool CreateTestClients(MediaConstraintsInterface* init_constraints, | 1101 bool CreateTestClients(MediaConstraintsInterface* init_constraints, |
1042 PeerConnectionFactory::Options* init_options, | 1102 PeerConnectionFactory::Options* init_options, |
1043 MediaConstraintsInterface* recv_constraints, | 1103 MediaConstraintsInterface* recv_constraints, |
1044 PeerConnectionFactory::Options* recv_options) { | 1104 PeerConnectionFactory::Options* recv_options) { |
1045 initiating_client_.reset(PeerConnectionTestClient::CreateClient( | 1105 initiating_client_.reset(PeerConnectionTestClient::CreateClient( |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1134 true); | 1194 true); |
1135 | 1195 |
1136 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( | 1196 rtc::scoped_ptr<FakeDtlsIdentityStore> dtls_identity_store( |
1137 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() | 1197 rtc::SSLStreamAdapter::HaveDtlsSrtp() ? new FakeDtlsIdentityStore() |
1138 : nullptr); | 1198 : nullptr); |
1139 dtls_identity_store->use_alternate_key(); | 1199 dtls_identity_store->use_alternate_key(); |
1140 | 1200 |
1141 // Make sure the new client is using a different certificate. | 1201 // Make sure the new client is using a different certificate. |
1142 return PeerConnectionTestClient::CreateClientWithDtlsIdentityStore( | 1202 return PeerConnectionTestClient::CreateClientWithDtlsIdentityStore( |
1143 "New Peer: ", &setup_constraints, nullptr, | 1203 "New Peer: ", &setup_constraints, nullptr, |
1144 std::move(dtls_identity_store)); | 1204 std::move(dtls_identity_store), prefer_constraint_apis_); |
1145 } | 1205 } |
1146 | 1206 |
1147 void SendRtpData(webrtc::DataChannelInterface* dc, const std::string& data) { | 1207 void SendRtpData(webrtc::DataChannelInterface* dc, const std::string& data) { |
1148 // Messages may get lost on the unreliable DataChannel, so we send multiple | 1208 // Messages may get lost on the unreliable DataChannel, so we send multiple |
1149 // times to avoid test flakiness. | 1209 // times to avoid test flakiness. |
1150 static const size_t kSendAttempts = 5; | 1210 static const size_t kSendAttempts = 5; |
1151 | 1211 |
1152 for (size_t i = 0; i < kSendAttempts; ++i) { | 1212 for (size_t i = 0; i < kSendAttempts; ++i) { |
1153 dc->Send(DataBuffer(data)); | 1213 dc->Send(DataBuffer(data)); |
1154 } | 1214 } |
(...skipping 24 matching lines...) Expand all Loading... | |
1179 receiving_client_.reset(client); | 1239 receiving_client_.reset(client); |
1180 return old; | 1240 return old; |
1181 } | 1241 } |
1182 | 1242 |
1183 private: | 1243 private: |
1184 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; | 1244 rtc::scoped_ptr<rtc::PhysicalSocketServer> pss_; |
1185 rtc::scoped_ptr<rtc::VirtualSocketServer> ss_; | 1245 rtc::scoped_ptr<rtc::VirtualSocketServer> ss_; |
1186 rtc::SocketServerScope ss_scope_; | 1246 rtc::SocketServerScope ss_scope_; |
1187 rtc::scoped_ptr<PeerConnectionTestClient> initiating_client_; | 1247 rtc::scoped_ptr<PeerConnectionTestClient> initiating_client_; |
1188 rtc::scoped_ptr<PeerConnectionTestClient> receiving_client_; | 1248 rtc::scoped_ptr<PeerConnectionTestClient> receiving_client_; |
1249 bool prefer_constraint_apis_ = true; | |
1189 }; | 1250 }; |
1190 | 1251 |
1191 // Disable for TSan v2, see | 1252 // Disable for TSan v2, see |
1192 // https://code.google.com/p/webrtc/issues/detail?id=1205 for details. | 1253 // https://code.google.com/p/webrtc/issues/detail?id=1205 for details. |
1193 #if !defined(THREAD_SANITIZER) | 1254 #if !defined(THREAD_SANITIZER) |
1194 | 1255 |
1195 // This test sets up a Jsep call between two parties and test Dtmf. | 1256 // This test sets up a Jsep call between two parties and test Dtmf. |
1196 // TODO(holmer): Disabled due to sometimes crashing on buildbots. | 1257 // TODO(holmer): Disabled due to sometimes crashing on buildbots. |
1197 // See issue webrtc/2378. | 1258 // See issue webrtc/2378. |
1198 TEST_F(P2PTestConductor, DISABLED_LocalP2PTestDtmf) { | 1259 TEST_F(P2PTestConductor, DISABLED_LocalP2PTestDtmf) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1245 } | 1306 } |
1246 | 1307 |
1247 // This test sets up an one-way call, with media only from initiator to | 1308 // This test sets up an one-way call, with media only from initiator to |
1248 // responder. | 1309 // responder. |
1249 TEST_F(P2PTestConductor, OneWayMediaCall) { | 1310 TEST_F(P2PTestConductor, OneWayMediaCall) { |
1250 ASSERT_TRUE(CreateTestClients()); | 1311 ASSERT_TRUE(CreateTestClients()); |
1251 receiving_client()->set_auto_add_stream(false); | 1312 receiving_client()->set_auto_add_stream(false); |
1252 LocalP2PTest(); | 1313 LocalP2PTest(); |
1253 } | 1314 } |
1254 | 1315 |
1316 TEST_F(P2PTestConductor, OneWayMediaCallWithoutConstraints) { | |
1317 ASSERT_TRUE(CreateTestClientsThatPreferNoConstraints()); | |
1318 receiving_client()->set_auto_add_stream(false); | |
1319 LocalP2PTest(); | |
1320 } | |
1321 | |
1255 // This test sets up a audio call initially and then upgrades to audio/video, | 1322 // This test sets up a audio call initially and then upgrades to audio/video, |
1256 // using DTLS. | 1323 // using DTLS. |
1257 TEST_F(P2PTestConductor, LocalP2PTestDtlsRenegotiate) { | 1324 TEST_F(P2PTestConductor, LocalP2PTestDtlsRenegotiate) { |
1258 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); | 1325 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
1259 FakeConstraints setup_constraints; | 1326 FakeConstraints setup_constraints; |
1260 setup_constraints.AddMandatory(MediaConstraintsInterface::kEnableDtlsSrtp, | 1327 setup_constraints.AddMandatory(MediaConstraintsInterface::kEnableDtlsSrtp, |
1261 true); | 1328 true); |
1262 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); | 1329 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); |
1263 receiving_client()->SetReceiveAudioVideo(true, false); | 1330 receiving_client()->SetReceiveAudioVideo(true, false); |
1264 LocalP2PTest(); | 1331 LocalP2PTest(); |
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2047 server.urls.push_back("turn:hostname2"); | 2114 server.urls.push_back("turn:hostname2"); |
2048 servers.push_back(server); | 2115 servers.push_back(server); |
2049 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); | 2116 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); |
2050 EXPECT_EQ(2U, turn_servers_.size()); | 2117 EXPECT_EQ(2U, turn_servers_.size()); |
2051 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); | 2118 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); |
2052 } | 2119 } |
2053 | 2120 |
2054 #endif // if !defined(THREAD_SANITIZER) | 2121 #endif // if !defined(THREAD_SANITIZER) |
2055 | 2122 |
2056 } // namespace | 2123 } // namespace |
OLD | NEW |