OLD | NEW |
1 /* | 1 /* |
2 * libjingle | 2 * libjingle |
3 * Copyright 2012 Google Inc. | 3 * Copyright 2012 Google Inc. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions are met: | 6 * modification, are permitted provided that the following conditions are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright notice, | 8 * 1. Redistributions of source code must retain the above copyright notice, |
9 * this list of conditions and the following disclaimer. | 9 * this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright notice, | 10 * 2. Redistributions in binary form must reproduce the above copyright notice, |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 | 244 |
245 std::string ice_sdp; | 245 std::string ice_sdp; |
246 EXPECT_TRUE(candidate->ToString(&ice_sdp)); | 246 EXPECT_TRUE(candidate->ToString(&ice_sdp)); |
247 if (signaling_message_receiver_ == nullptr) { | 247 if (signaling_message_receiver_ == nullptr) { |
248 // Remote party may be deleted. | 248 // Remote party may be deleted. |
249 return; | 249 return; |
250 } | 250 } |
251 signaling_message_receiver_->ReceiveIceMessage( | 251 signaling_message_receiver_->ReceiveIceMessage( |
252 candidate->sdp_mid(), candidate->sdp_mline_index(), ice_sdp); | 252 candidate->sdp_mid(), candidate->sdp_mline_index(), ice_sdp); |
253 } | 253 } |
| 254 void OnFirstMediaPacketReceived() override { received_media_packet_ = true; } |
254 | 255 |
255 // MediaStreamInterface callback | 256 // MediaStreamInterface callback |
256 void OnChanged() override { | 257 void OnChanged() override { |
257 // Track added or removed from MediaStream, so update our renderers. | 258 // Track added or removed from MediaStream, so update our renderers. |
258 rtc::scoped_refptr<StreamCollectionInterface> remote_streams = | 259 rtc::scoped_refptr<StreamCollectionInterface> remote_streams = |
259 pc()->remote_streams(); | 260 pc()->remote_streams(); |
260 // Remove renderers for tracks that were removed. | 261 // Remove renderers for tracks that were removed. |
261 for (auto it = fake_video_renderers_.begin(); | 262 for (auto it = fake_video_renderers_.begin(); |
262 it != fake_video_renderers_.end();) { | 263 it != fake_video_renderers_.end();) { |
263 if (remote_streams->FindVideoTrack(it->first) == nullptr) { | 264 if (remote_streams->FindVideoTrack(it->first) == nullptr) { |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
379 bool can_receive_video() { | 380 bool can_receive_video() { |
380 bool value; | 381 bool value; |
381 if (webrtc::FindConstraint(&session_description_constraints_, | 382 if (webrtc::FindConstraint(&session_description_constraints_, |
382 MediaConstraintsInterface::kOfferToReceiveVideo, | 383 MediaConstraintsInterface::kOfferToReceiveVideo, |
383 &value, nullptr)) { | 384 &value, nullptr)) { |
384 return value; | 385 return value; |
385 } | 386 } |
386 return true; | 387 return true; |
387 } | 388 } |
388 | 389 |
| 390 bool received_media_packet() const { return received_media_packet_; } |
| 391 |
389 void OnIceComplete() override { LOG(INFO) << id_ << "OnIceComplete"; } | 392 void OnIceComplete() override { LOG(INFO) << id_ << "OnIceComplete"; } |
390 | 393 |
391 void OnDataChannel(DataChannelInterface* data_channel) override { | 394 void OnDataChannel(DataChannelInterface* data_channel) override { |
392 LOG(INFO) << id_ << "OnDataChannel"; | 395 LOG(INFO) << id_ << "OnDataChannel"; |
393 data_channel_ = data_channel; | 396 data_channel_ = data_channel; |
394 data_observer_.reset(new MockDataChannelObserver(data_channel)); | 397 data_observer_.reset(new MockDataChannelObserver(data_channel)); |
395 } | 398 } |
396 | 399 |
397 void CreateDataChannel() { | 400 void CreateDataChannel() { |
398 data_channel_ = pc()->CreateDataChannel(kDataChannelLabel, nullptr); | 401 data_channel_ = pc()->CreateDataChannel(kDataChannelLabel, nullptr); |
(...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
917 | 920 |
918 webrtc::FakeConstraints session_description_constraints_; | 921 webrtc::FakeConstraints session_description_constraints_; |
919 bool remove_msid_ = false; // True if MSID should be removed in received SDP. | 922 bool remove_msid_ = false; // True if MSID should be removed in received SDP. |
920 bool remove_bundle_ = | 923 bool remove_bundle_ = |
921 false; // True if bundle should be removed in received SDP. | 924 false; // True if bundle should be removed in received SDP. |
922 bool remove_sdes_ = | 925 bool remove_sdes_ = |
923 false; // True if a=crypto should be removed in received SDP. | 926 false; // True if a=crypto should be removed in received SDP. |
924 | 927 |
925 rtc::scoped_refptr<DataChannelInterface> data_channel_; | 928 rtc::scoped_refptr<DataChannelInterface> data_channel_; |
926 rtc::scoped_ptr<MockDataChannelObserver> data_observer_; | 929 rtc::scoped_ptr<MockDataChannelObserver> data_observer_; |
| 930 |
| 931 // "true" if the PeerConnection indicated that a packet was received, |
| 932 // through PeerConnectionObserverInterface. |
| 933 bool received_media_packet_ = false; |
927 }; | 934 }; |
928 | 935 |
929 class P2PTestConductor : public testing::Test { | 936 class P2PTestConductor : public testing::Test { |
930 public: | 937 public: |
931 P2PTestConductor() | 938 P2PTestConductor() |
932 : pss_(new rtc::PhysicalSocketServer), | 939 : pss_(new rtc::PhysicalSocketServer), |
933 ss_(new rtc::VirtualSocketServer(pss_.get())), | 940 ss_(new rtc::VirtualSocketServer(pss_.get())), |
934 ss_scope_(ss_.get()) {} | 941 ss_scope_(ss_.get()) {} |
935 | 942 |
936 bool SessionActive() { | 943 bool SessionActive() { |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1097 } | 1104 } |
1098 if (receiving_client_->can_receive_audio() || | 1105 if (receiving_client_->can_receive_audio() || |
1099 receiving_client_->can_receive_video()) { | 1106 receiving_client_->can_receive_video()) { |
1100 EXPECT_EQ_WAIT(webrtc::PeerConnectionInterface::kIceGatheringComplete, | 1107 EXPECT_EQ_WAIT(webrtc::PeerConnectionInterface::kIceGatheringComplete, |
1101 receiving_client_->ice_gathering_state(), | 1108 receiving_client_->ice_gathering_state(), |
1102 kMaxWaitForFramesMs); | 1109 kMaxWaitForFramesMs); |
1103 } | 1110 } |
1104 | 1111 |
1105 EXPECT_TRUE_WAIT(FramesNotPending(audio_frame_count, video_frame_count), | 1112 EXPECT_TRUE_WAIT(FramesNotPending(audio_frame_count, video_frame_count), |
1106 kMaxWaitForFramesMs); | 1113 kMaxWaitForFramesMs); |
| 1114 if (audio_frame_count != -1 || video_frame_count != -1) { |
| 1115 EXPECT_TRUE_WAIT(initiating_client_->received_media_packet(), |
| 1116 kMaxWaitForFramesMs); |
| 1117 EXPECT_TRUE_WAIT(receiving_client_->received_media_packet(), |
| 1118 kMaxWaitForFramesMs); |
| 1119 } |
1107 } | 1120 } |
1108 | 1121 |
1109 void SetupAndVerifyDtlsCall() { | 1122 void SetupAndVerifyDtlsCall() { |
1110 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); | 1123 MAYBE_SKIP_TEST(rtc::SSLStreamAdapter::HaveDtlsSrtp); |
1111 FakeConstraints setup_constraints; | 1124 FakeConstraints setup_constraints; |
1112 setup_constraints.AddMandatory(MediaConstraintsInterface::kEnableDtlsSrtp, | 1125 setup_constraints.AddMandatory(MediaConstraintsInterface::kEnableDtlsSrtp, |
1113 true); | 1126 true); |
1114 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); | 1127 ASSERT_TRUE(CreateTestClients(&setup_constraints, &setup_constraints)); |
1115 LocalP2PTest(); | 1128 LocalP2PTest(); |
1116 VerifyRenderedSize(640, 480); | 1129 VerifyRenderedSize(640, 480); |
(...skipping 905 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2022 PeerConnectionInterface::IceServer server; | 2035 PeerConnectionInterface::IceServer server; |
2023 server.urls.push_back("turn:hostname"); | 2036 server.urls.push_back("turn:hostname"); |
2024 server.urls.push_back("turn:hostname2"); | 2037 server.urls.push_back("turn:hostname2"); |
2025 servers.push_back(server); | 2038 servers.push_back(server); |
2026 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); | 2039 EXPECT_TRUE(webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); |
2027 EXPECT_EQ(2U, turn_servers_.size()); | 2040 EXPECT_EQ(2U, turn_servers_.size()); |
2028 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); | 2041 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); |
2029 } | 2042 } |
2030 | 2043 |
2031 #endif // if !defined(THREAD_SANITIZER) | 2044 #endif // if !defined(THREAD_SANITIZER) |
OLD | NEW |