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

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

Issue 2647593003: Accept SDP with TRANSPORT attributes missing from bundled m= sections. (Closed)
Patch Set: Fixing tests due to bool's meaning being reversed in patchset 4 Created 3 years, 10 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/mediasession.cc ('k') | webrtc/pc/webrtcsession.cc » ('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 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 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 } 510 }
511 511
512 void RemoveMsidFromReceivedSdp(bool remove) { remove_msid_ = remove; } 512 void RemoveMsidFromReceivedSdp(bool remove) { remove_msid_ = remove; }
513 513
514 void RemoveSdesCryptoFromReceivedSdp(bool remove) { remove_sdes_ = remove; } 514 void RemoveSdesCryptoFromReceivedSdp(bool remove) { remove_sdes_ = remove; }
515 515
516 void RemoveBundleFromReceivedSdp(bool remove) { remove_bundle_ = remove; } 516 void RemoveBundleFromReceivedSdp(bool remove) { remove_bundle_ = remove; }
517 517
518 void RemoveCvoFromReceivedSdp(bool remove) { remove_cvo_ = remove; } 518 void RemoveCvoFromReceivedSdp(bool remove) { remove_cvo_ = remove; }
519 519
520 void MakeSpecCompliantMaxBundleOfferFromReceivedSdp(bool real) {
521 make_spec_compliant_max_bundle_offer_ = real;
522 }
523
520 bool can_receive_audio() { 524 bool can_receive_audio() {
521 bool value; 525 bool value;
522 if (prefer_constraint_apis_) { 526 if (prefer_constraint_apis_) {
523 if (webrtc::FindConstraint( 527 if (webrtc::FindConstraint(
524 &offer_answer_constraints_, 528 &offer_answer_constraints_,
525 MediaConstraintsInterface::kOfferToReceiveAudio, &value, 529 MediaConstraintsInterface::kOfferToReceiveAudio, &value,
526 nullptr)) { 530 nullptr)) {
527 return value; 531 return value;
528 } 532 }
529 return true; 533 return true;
(...skipping 512 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 } 1046 }
1043 1047
1044 void HandleIncomingOffer(const std::string& msg) { 1048 void HandleIncomingOffer(const std::string& msg) {
1045 LOG(INFO) << id_ << "HandleIncomingOffer "; 1049 LOG(INFO) << id_ << "HandleIncomingOffer ";
1046 if (NumberOfLocalMediaStreams() == 0 && auto_add_stream_) { 1050 if (NumberOfLocalMediaStreams() == 0 && auto_add_stream_) {
1047 // If we are not sending any streams ourselves it is time to add some. 1051 // If we are not sending any streams ourselves it is time to add some.
1048 AddMediaStream(true, true); 1052 AddMediaStream(true, true);
1049 } 1053 }
1050 std::unique_ptr<SessionDescriptionInterface> desc( 1054 std::unique_ptr<SessionDescriptionInterface> desc(
1051 webrtc::CreateSessionDescription("offer", msg, nullptr)); 1055 webrtc::CreateSessionDescription("offer", msg, nullptr));
1056
1057 // Do the equivalent of setting the port to 0, adding a=bundle-only, and
1058 // removing a=ice-ufrag, a=ice-pwd, a=fingerprint and a=setup from all but
1059 // the first m= section.
1060 if (make_spec_compliant_max_bundle_offer_) {
1061 bool first = true;
1062 for (cricket::ContentInfo& content : desc->description()->contents()) {
1063 if (first) {
1064 first = false;
1065 continue;
1066 }
1067 content.bundle_only = true;
1068 }
1069 first = true;
1070 for (cricket::TransportInfo& transport :
1071 desc->description()->transport_infos()) {
1072 if (first) {
1073 first = false;
1074 continue;
1075 }
1076 transport.description.ice_ufrag.clear();
1077 transport.description.ice_pwd.clear();
1078 transport.description.connection_role = cricket::CONNECTIONROLE_NONE;
1079 transport.description.identity_fingerprint.reset(nullptr);
1080 }
1081 }
1082
1052 EXPECT_TRUE(DoSetRemoteDescription(desc.release())); 1083 EXPECT_TRUE(DoSetRemoteDescription(desc.release()));
1053 // Set the RtpReceiverObserver after receivers are created. 1084 // Set the RtpReceiverObserver after receivers are created.
1054 SetRtpReceiverObservers(); 1085 SetRtpReceiverObservers();
1055 std::unique_ptr<SessionDescriptionInterface> answer; 1086 std::unique_ptr<SessionDescriptionInterface> answer;
1056 EXPECT_TRUE(DoCreateAnswer(&answer)); 1087 EXPECT_TRUE(DoCreateAnswer(&answer));
1057 std::string sdp; 1088 std::string sdp;
1058 EXPECT_TRUE(answer->ToString(&sdp)); 1089 EXPECT_TRUE(answer->ToString(&sdp));
1059 EXPECT_TRUE(DoSetLocalDescription(answer.release())); 1090 EXPECT_TRUE(DoSetLocalDescription(answer.release()));
1060 SendSdpMessage(webrtc::SessionDescriptionInterface::kAnswer, sdp); 1091 SendSdpMessage(webrtc::SessionDescriptionInterface::kAnswer, sdp);
1061 } 1092 }
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
1202 webrtc::FakeConstraints offer_answer_constraints_; 1233 webrtc::FakeConstraints offer_answer_constraints_;
1203 PeerConnectionInterface::RTCOfferAnswerOptions offer_answer_options_; 1234 PeerConnectionInterface::RTCOfferAnswerOptions offer_answer_options_;
1204 bool remove_msid_ = false; // True if MSID should be removed in received SDP. 1235 bool remove_msid_ = false; // True if MSID should be removed in received SDP.
1205 bool remove_bundle_ = 1236 bool remove_bundle_ =
1206 false; // True if bundle should be removed in received SDP. 1237 false; // True if bundle should be removed in received SDP.
1207 bool remove_sdes_ = 1238 bool remove_sdes_ =
1208 false; // True if a=crypto should be removed in received SDP. 1239 false; // True if a=crypto should be removed in received SDP.
1209 // |remove_cvo_| is true if extension urn:3gpp:video-orientation should be 1240 // |remove_cvo_| is true if extension urn:3gpp:video-orientation should be
1210 // removed in the received SDP. 1241 // removed in the received SDP.
1211 bool remove_cvo_ = false; 1242 bool remove_cvo_ = false;
1243 // See LocalP2PTestWithSpecCompliantMaxBundleOffer.
1244 bool make_spec_compliant_max_bundle_offer_ = false;
1212 1245
1213 rtc::scoped_refptr<DataChannelInterface> data_channel_; 1246 rtc::scoped_refptr<DataChannelInterface> data_channel_;
1214 std::unique_ptr<MockDataChannelObserver> data_observer_; 1247 std::unique_ptr<MockDataChannelObserver> data_observer_;
1215 1248
1216 std::vector<std::unique_ptr<MockRtpReceiverObserver>> rtp_receiver_observers_; 1249 std::vector<std::unique_ptr<MockRtpReceiverObserver>> rtp_receiver_observers_;
1217 }; 1250 };
1218 1251
1219 class P2PTestConductor : public testing::Test { 1252 class P2PTestConductor : public testing::Test {
1220 public: 1253 public:
1221 P2PTestConductor() 1254 P2PTestConductor()
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after
1842 FakeConstraints constraint; 1875 FakeConstraints constraint;
1843 constraint.SetOptionalMaxWidth(320); 1876 constraint.SetOptionalMaxWidth(320);
1844 SetVideoConstraints(constraint, constraint); 1877 SetVideoConstraints(constraint, constraint);
1845 initializing_client()->AddMediaStream(true, true); 1878 initializing_client()->AddMediaStream(true, true);
1846 initializing_client()->AddMediaStream(false, true); 1879 initializing_client()->AddMediaStream(false, true);
1847 ASSERT_EQ(2u, initializing_client()->NumberOfLocalMediaStreams()); 1880 ASSERT_EQ(2u, initializing_client()->NumberOfLocalMediaStreams());
1848 LocalP2PTest(); 1881 LocalP2PTest();
1849 EXPECT_EQ(2u, receiving_client()->number_of_remote_streams()); 1882 EXPECT_EQ(2u, receiving_client()->number_of_remote_streams());
1850 } 1883 }
1851 1884
1885 // Test that if applying a true "max bundle" offer, which uses ports of 0,
1886 // "a=bundle-only", omitting "a=fingerprint", "a=setup", "a=ice-ufrag" and
1887 // "a=ice-pwd" for all but the audio "m=" section, negotiation still completes
1888 // successfully and media flows.
1889 // TODO(deadbeef): Update this test to also omit "a=rtcp-mux", once that works.
1890 // TODO(deadbeef): Won't need this test once we start generating actual
1891 // standards-compliant SDP.
1892 TEST_F(P2PTestConductor, LocalP2PTestWithSpecCompliantMaxBundleOffer) {
1893 ASSERT_TRUE(CreateTestClients());
1894 receiving_client()->MakeSpecCompliantMaxBundleOfferFromReceivedSdp(true);
1895 LocalP2PTest();
1896 }
1897
1852 // Test that we can receive the audio output level from a remote audio track. 1898 // Test that we can receive the audio output level from a remote audio track.
1853 TEST_F(P2PTestConductor, GetAudioOutputLevelStats) { 1899 TEST_F(P2PTestConductor, GetAudioOutputLevelStats) {
1854 ASSERT_TRUE(CreateTestClients()); 1900 ASSERT_TRUE(CreateTestClients());
1855 LocalP2PTest(); 1901 LocalP2PTest();
1856 1902
1857 StreamCollectionInterface* remote_streams = 1903 StreamCollectionInterface* remote_streams =
1858 initializing_client()->remote_streams(); 1904 initializing_client()->remote_streams();
1859 ASSERT_GT(remote_streams->count(), 0u); 1905 ASSERT_GT(remote_streams->count(), 0u);
1860 ASSERT_GT(remote_streams->at(0)->GetAudioTracks().size(), 0u); 1906 ASSERT_GT(remote_streams->at(0)->GetAudioTracks().size(), 0u);
1861 MediaStreamTrackInterface* remote_audio_track = 1907 MediaStreamTrackInterface* remote_audio_track =
(...skipping 959 matching lines...) Expand 10 before | Expand all | Expand 10 after
2821 servers.push_back(server); 2867 servers.push_back(server);
2822 EXPECT_EQ(webrtc::RTCErrorType::NONE, 2868 EXPECT_EQ(webrtc::RTCErrorType::NONE,
2823 webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_)); 2869 webrtc::ParseIceServers(servers, &stun_servers_, &turn_servers_));
2824 EXPECT_EQ(2U, turn_servers_.size()); 2870 EXPECT_EQ(2U, turn_servers_.size());
2825 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority); 2871 EXPECT_NE(turn_servers_[0].priority, turn_servers_[1].priority);
2826 } 2872 }
2827 2873
2828 #endif // if !defined(THREAD_SANITIZER) 2874 #endif // if !defined(THREAD_SANITIZER)
2829 2875
2830 } // namespace 2876 } // namespace
OLDNEW
« no previous file with comments | « webrtc/pc/mediasession.cc ('k') | webrtc/pc/webrtcsession.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698