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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 using webrtc::JsepSessionDescription; | 63 using webrtc::JsepSessionDescription; |
64 using webrtc::PeerConnectionFactoryInterface; | 64 using webrtc::PeerConnectionFactoryInterface; |
65 using webrtc::PeerConnectionInterface; | 65 using webrtc::PeerConnectionInterface; |
66 using webrtc::SessionDescriptionInterface; | 66 using webrtc::SessionDescriptionInterface; |
67 using webrtc::SessionStats; | 67 using webrtc::SessionStats; |
68 using webrtc::StreamCollection; | 68 using webrtc::StreamCollection; |
69 using webrtc::WebRtcSession; | 69 using webrtc::WebRtcSession; |
70 using webrtc::kBundleWithoutRtcpMux; | 70 using webrtc::kBundleWithoutRtcpMux; |
71 using webrtc::kCreateChannelFailed; | 71 using webrtc::kCreateChannelFailed; |
72 using webrtc::kInvalidSdp; | 72 using webrtc::kInvalidSdp; |
73 using webrtc::kMlineMismatch; | 73 using webrtc::kMlineMismatchInAnswer; |
74 using webrtc::kPushDownTDFailed; | 74 using webrtc::kPushDownTDFailed; |
75 using webrtc::kSdpWithoutIceUfragPwd; | 75 using webrtc::kSdpWithoutIceUfragPwd; |
76 using webrtc::kSdpWithoutDtlsFingerprint; | 76 using webrtc::kSdpWithoutDtlsFingerprint; |
77 using webrtc::kSdpWithoutSdesCrypto; | 77 using webrtc::kSdpWithoutSdesCrypto; |
78 using webrtc::kSessionError; | 78 using webrtc::kSessionError; |
79 using webrtc::kSessionErrorDesc; | 79 using webrtc::kSessionErrorDesc; |
80 using webrtc::kMaxUnsignalledRecvStreams; | 80 using webrtc::kMaxUnsignalledRecvStreams; |
81 | 81 |
82 typedef PeerConnectionInterface::RTCOfferAnswerOptions RTCOfferAnswerOptions; | 82 typedef PeerConnectionInterface::RTCOfferAnswerOptions RTCOfferAnswerOptions; |
83 | 83 |
(...skipping 3656 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3740 CreateRemoteAnswer(session_->local_description())); | 3740 CreateRemoteAnswer(session_->local_description())); |
3741 | 3741 |
3742 cricket::SessionDescription* answer_copy = answer->description()->Copy(); | 3742 cricket::SessionDescription* answer_copy = answer->description()->Copy(); |
3743 answer_copy->RemoveContentByName("video"); | 3743 answer_copy->RemoveContentByName("video"); |
3744 JsepSessionDescription* modified_answer = | 3744 JsepSessionDescription* modified_answer = |
3745 new JsepSessionDescription(JsepSessionDescription::kAnswer); | 3745 new JsepSessionDescription(JsepSessionDescription::kAnswer); |
3746 | 3746 |
3747 EXPECT_TRUE(modified_answer->Initialize(answer_copy, | 3747 EXPECT_TRUE(modified_answer->Initialize(answer_copy, |
3748 answer->session_id(), | 3748 answer->session_id(), |
3749 answer->session_version())); | 3749 answer->session_version())); |
3750 SetRemoteDescriptionAnswerExpectError(kMlineMismatch, modified_answer); | 3750 SetRemoteDescriptionAnswerExpectError(kMlineMismatchInAnswer, |
| 3751 modified_answer); |
3751 | 3752 |
3752 // Different content names. | 3753 // Different content names. |
3753 std::string sdp; | 3754 std::string sdp; |
3754 EXPECT_TRUE(answer->ToString(&sdp)); | 3755 EXPECT_TRUE(answer->ToString(&sdp)); |
3755 const std::string kAudioMid = "a=mid:audio"; | 3756 const std::string kAudioMid = "a=mid:audio"; |
3756 const std::string kAudioMidReplaceStr = "a=mid:audio_content_name"; | 3757 const std::string kAudioMidReplaceStr = "a=mid:audio_content_name"; |
3757 rtc::replace_substrs(kAudioMid.c_str(), kAudioMid.length(), | 3758 rtc::replace_substrs(kAudioMid.c_str(), kAudioMid.length(), |
3758 kAudioMidReplaceStr.c_str(), | 3759 kAudioMidReplaceStr.c_str(), |
3759 kAudioMidReplaceStr.length(), | 3760 kAudioMidReplaceStr.length(), |
3760 &sdp); | 3761 &sdp); |
3761 SessionDescriptionInterface* modified_answer1 = | 3762 SessionDescriptionInterface* modified_answer1 = |
3762 CreateSessionDescription(JsepSessionDescription::kAnswer, sdp, NULL); | 3763 CreateSessionDescription(JsepSessionDescription::kAnswer, sdp, NULL); |
3763 SetRemoteDescriptionAnswerExpectError(kMlineMismatch, modified_answer1); | 3764 SetRemoteDescriptionAnswerExpectError(kMlineMismatchInAnswer, |
| 3765 modified_answer1); |
3764 | 3766 |
3765 // Different media types. | 3767 // Different media types. |
3766 EXPECT_TRUE(answer->ToString(&sdp)); | 3768 EXPECT_TRUE(answer->ToString(&sdp)); |
3767 const std::string kAudioMline = "m=audio"; | 3769 const std::string kAudioMline = "m=audio"; |
3768 const std::string kAudioMlineReplaceStr = "m=video"; | 3770 const std::string kAudioMlineReplaceStr = "m=video"; |
3769 rtc::replace_substrs(kAudioMline.c_str(), kAudioMline.length(), | 3771 rtc::replace_substrs(kAudioMline.c_str(), kAudioMline.length(), |
3770 kAudioMlineReplaceStr.c_str(), | 3772 kAudioMlineReplaceStr.c_str(), |
3771 kAudioMlineReplaceStr.length(), | 3773 kAudioMlineReplaceStr.length(), |
3772 &sdp); | 3774 &sdp); |
3773 SessionDescriptionInterface* modified_answer2 = | 3775 SessionDescriptionInterface* modified_answer2 = |
3774 CreateSessionDescription(JsepSessionDescription::kAnswer, sdp, NULL); | 3776 CreateSessionDescription(JsepSessionDescription::kAnswer, sdp, NULL); |
3775 SetRemoteDescriptionAnswerExpectError(kMlineMismatch, modified_answer2); | 3777 SetRemoteDescriptionAnswerExpectError(kMlineMismatchInAnswer, |
| 3778 modified_answer2); |
3776 | 3779 |
3777 SetRemoteDescriptionWithoutError(answer.release()); | 3780 SetRemoteDescriptionWithoutError(answer.release()); |
3778 } | 3781 } |
3779 | 3782 |
3780 // Verifying remote offer and local answer have matching m-lines as per | 3783 // Verifying remote offer and local answer have matching m-lines as per |
3781 // RFC 3264. | 3784 // RFC 3264. |
3782 TEST_F(WebRtcSessionTest, TestIncorrectMLinesInLocalAnswer) { | 3785 TEST_F(WebRtcSessionTest, TestIncorrectMLinesInLocalAnswer) { |
3783 Init(); | 3786 Init(); |
3784 SendAudioVideoStream1(); | 3787 SendAudioVideoStream1(); |
3785 SessionDescriptionInterface* offer = CreateRemoteOffer(); | 3788 SessionDescriptionInterface* offer = CreateRemoteOffer(); |
3786 SetRemoteDescriptionWithoutError(offer); | 3789 SetRemoteDescriptionWithoutError(offer); |
3787 SessionDescriptionInterface* answer = CreateAnswer(); | 3790 SessionDescriptionInterface* answer = CreateAnswer(); |
3788 | 3791 |
3789 cricket::SessionDescription* answer_copy = answer->description()->Copy(); | 3792 cricket::SessionDescription* answer_copy = answer->description()->Copy(); |
3790 answer_copy->RemoveContentByName("video"); | 3793 answer_copy->RemoveContentByName("video"); |
3791 JsepSessionDescription* modified_answer = | 3794 JsepSessionDescription* modified_answer = |
3792 new JsepSessionDescription(JsepSessionDescription::kAnswer); | 3795 new JsepSessionDescription(JsepSessionDescription::kAnswer); |
3793 | 3796 |
3794 EXPECT_TRUE(modified_answer->Initialize(answer_copy, | 3797 EXPECT_TRUE(modified_answer->Initialize(answer_copy, |
3795 answer->session_id(), | 3798 answer->session_id(), |
3796 answer->session_version())); | 3799 answer->session_version())); |
3797 SetLocalDescriptionAnswerExpectError(kMlineMismatch, modified_answer); | 3800 SetLocalDescriptionAnswerExpectError(kMlineMismatchInAnswer, modified_answer); |
3798 SetLocalDescriptionWithoutError(answer); | 3801 SetLocalDescriptionWithoutError(answer); |
3799 } | 3802 } |
3800 | 3803 |
3801 // This test verifies that WebRtcSession does not start candidate allocation | 3804 // This test verifies that WebRtcSession does not start candidate allocation |
3802 // before SetLocalDescription is called. | 3805 // before SetLocalDescription is called. |
3803 TEST_F(WebRtcSessionTest, TestIceStartAfterSetLocalDescriptionOnly) { | 3806 TEST_F(WebRtcSessionTest, TestIceStartAfterSetLocalDescriptionOnly) { |
3804 Init(); | 3807 Init(); |
3805 SendAudioVideoStream1(); | 3808 SendAudioVideoStream1(); |
3806 SessionDescriptionInterface* offer = CreateRemoteOffer(); | 3809 SessionDescriptionInterface* offer = CreateRemoteOffer(); |
3807 cricket::Candidate candidate; | 3810 cricket::Candidate candidate; |
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4569 } | 4572 } |
4570 | 4573 |
4571 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test | 4574 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test |
4572 // currently fails because upon disconnection and reconnection OnIceComplete is | 4575 // currently fails because upon disconnection and reconnection OnIceComplete is |
4573 // called more than once without returning to IceGatheringGathering. | 4576 // called more than once without returning to IceGatheringGathering. |
4574 | 4577 |
4575 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, | 4578 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, |
4576 WebRtcSessionTest, | 4579 WebRtcSessionTest, |
4577 testing::Values(ALREADY_GENERATED, | 4580 testing::Values(ALREADY_GENERATED, |
4578 DTLS_IDENTITY_STORE)); | 4581 DTLS_IDENTITY_STORE)); |
OLD | NEW |