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, |
11 * this list of conditions and the following disclaimer in the documentation | 11 * this list of conditions and the following disclaimer in the documentation |
12 * and/or other materials provided with the distribution. | 12 * and/or other materials provided with the distribution. |
13 * 3. The name of the author may not be used to endorse or promote products | 13 * 3. The name of the author may not be used to endorse or promote products |
14 * derived from this software without specific prior written permission. | 14 * derived from this software without specific prior written permission. |
15 * | 15 * |
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED | 16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED |
17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | 17 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF |
18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO | 18 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO |
19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 19 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | 20 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; | 21 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | 22 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR | 23 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF | 24 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 25 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
26 */ | 26 */ |
27 | 27 |
28 #include "talk/app/webrtc/audiotrack.h" | 28 #include "talk/app/webrtc/audiotrack.h" |
| 29 #include "talk/app/webrtc/fakemetricsobserver.h" |
29 #include "talk/app/webrtc/jsepicecandidate.h" | 30 #include "talk/app/webrtc/jsepicecandidate.h" |
30 #include "talk/app/webrtc/jsepsessiondescription.h" | 31 #include "talk/app/webrtc/jsepsessiondescription.h" |
31 #include "talk/app/webrtc/mediastreamsignaling.h" | 32 #include "talk/app/webrtc/mediastreamsignaling.h" |
32 #include "talk/app/webrtc/streamcollection.h" | 33 #include "talk/app/webrtc/streamcollection.h" |
33 #include "talk/app/webrtc/test/fakeconstraints.h" | 34 #include "talk/app/webrtc/test/fakeconstraints.h" |
34 #include "talk/app/webrtc/test/fakedtlsidentityservice.h" | 35 #include "talk/app/webrtc/test/fakedtlsidentityservice.h" |
35 #include "talk/app/webrtc/test/fakemediastreamsignaling.h" | 36 #include "talk/app/webrtc/test/fakemediastreamsignaling.h" |
36 #include "talk/app/webrtc/videotrack.h" | 37 #include "talk/app/webrtc/videotrack.h" |
37 #include "talk/app/webrtc/webrtcsession.h" | 38 #include "talk/app/webrtc/webrtcsession.h" |
38 #include "talk/app/webrtc/webrtcsessiondescriptionfactory.h" | 39 #include "talk/app/webrtc/webrtcsessiondescriptionfactory.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 using cricket::TransportInfo; | 75 using cricket::TransportInfo; |
75 using rtc::SocketAddress; | 76 using rtc::SocketAddress; |
76 using rtc::scoped_ptr; | 77 using rtc::scoped_ptr; |
77 using rtc::Thread; | 78 using rtc::Thread; |
78 using webrtc::CreateSessionDescription; | 79 using webrtc::CreateSessionDescription; |
79 using webrtc::CreateSessionDescriptionObserver; | 80 using webrtc::CreateSessionDescriptionObserver; |
80 using webrtc::CreateSessionDescriptionRequest; | 81 using webrtc::CreateSessionDescriptionRequest; |
81 using webrtc::DTLSIdentityRequestObserver; | 82 using webrtc::DTLSIdentityRequestObserver; |
82 using webrtc::DTLSIdentityServiceInterface; | 83 using webrtc::DTLSIdentityServiceInterface; |
83 using webrtc::FakeConstraints; | 84 using webrtc::FakeConstraints; |
| 85 using webrtc::FakeMetricsObserver; |
84 using webrtc::IceCandidateCollection; | 86 using webrtc::IceCandidateCollection; |
85 using webrtc::JsepIceCandidate; | 87 using webrtc::JsepIceCandidate; |
86 using webrtc::JsepSessionDescription; | 88 using webrtc::JsepSessionDescription; |
87 using webrtc::PeerConnectionFactoryInterface; | 89 using webrtc::PeerConnectionFactoryInterface; |
88 using webrtc::PeerConnectionInterface; | 90 using webrtc::PeerConnectionInterface; |
89 using webrtc::SessionDescriptionInterface; | 91 using webrtc::SessionDescriptionInterface; |
90 using webrtc::StreamCollection; | 92 using webrtc::StreamCollection; |
91 using webrtc::WebRtcSession; | 93 using webrtc::WebRtcSession; |
92 using webrtc::kBundleWithoutRtcpMux; | 94 using webrtc::kBundleWithoutRtcpMux; |
93 using webrtc::kCreateChannelFailed; | 95 using webrtc::kCreateChannelFailed; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 | 160 |
159 // Add some extra |newlines| to the |message| after |line|. | 161 // Add some extra |newlines| to the |message| after |line|. |
160 static void InjectAfter(const std::string& line, | 162 static void InjectAfter(const std::string& line, |
161 const std::string& newlines, | 163 const std::string& newlines, |
162 std::string* message) { | 164 std::string* message) { |
163 const std::string tmp = line + newlines; | 165 const std::string tmp = line + newlines; |
164 rtc::replace_substrs(line.c_str(), line.length(), | 166 rtc::replace_substrs(line.c_str(), line.length(), |
165 tmp.c_str(), tmp.length(), message); | 167 tmp.c_str(), tmp.length(), message); |
166 } | 168 } |
167 | 169 |
168 class FakeMetricsObserver : public webrtc::MetricsObserverInterface { | |
169 public: | |
170 FakeMetricsObserver() { Reset(); } | |
171 void Reset() { | |
172 memset(peer_connection_metrics_counters_, 0, | |
173 sizeof(peer_connection_metrics_counters_)); | |
174 memset(peer_connection_metrics_name_, 0, | |
175 sizeof(peer_connection_metrics_name_)); | |
176 } | |
177 | |
178 void IncrementCounter(webrtc::PeerConnectionMetricsCounter type) override { | |
179 peer_connection_metrics_counters_[type]++; | |
180 } | |
181 void AddHistogramSample(webrtc::PeerConnectionMetricsName type, | |
182 int value) override { | |
183 ASSERT(peer_connection_metrics_name_[type] == 0); | |
184 peer_connection_metrics_name_[type] = value; | |
185 } | |
186 | |
187 int peer_connection_metrics_counters_ | |
188 [webrtc::kPeerConnectionMetricsCounter_Max]; | |
189 int peer_connection_metrics_name_[webrtc::kPeerConnectionMetricsCounter_Max]; | |
190 | |
191 int AddRef() override { return 1; } | |
192 int Release() override { return 1; } | |
193 }; | |
194 | |
195 class MockIceObserver : public webrtc::IceObserver { | 170 class MockIceObserver : public webrtc::IceObserver { |
196 public: | 171 public: |
197 MockIceObserver() | 172 MockIceObserver() |
198 : oncandidatesready_(false), | 173 : oncandidatesready_(false), |
199 ice_connection_state_(PeerConnectionInterface::kIceConnectionNew), | 174 ice_connection_state_(PeerConnectionInterface::kIceConnectionNew), |
200 ice_gathering_state_(PeerConnectionInterface::kIceGatheringNew) { | 175 ice_gathering_state_(PeerConnectionInterface::kIceGatheringNew) { |
201 } | 176 } |
202 | 177 |
203 virtual void OnIceConnectionChange( | 178 virtual void OnIceConnectionChange( |
204 PeerConnectionInterface::IceConnectionState new_state) { | 179 PeerConnectionInterface::IceConnectionState new_state) { |
(...skipping 3669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3874 EXPECT_EQ(4000, option_val); | 3849 EXPECT_EQ(4000, option_val); |
3875 | 3850 |
3876 EXPECT_TRUE(session_->voice_channel()->transport_channel()->GetOption( | 3851 EXPECT_TRUE(session_->voice_channel()->transport_channel()->GetOption( |
3877 rtc::Socket::Option::OPT_RCVBUF, &option_val)); | 3852 rtc::Socket::Option::OPT_RCVBUF, &option_val)); |
3878 EXPECT_EQ(8000, option_val); | 3853 EXPECT_EQ(8000, option_val); |
3879 } | 3854 } |
3880 | 3855 |
3881 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test | 3856 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test |
3882 // currently fails because upon disconnection and reconnection OnIceComplete is | 3857 // currently fails because upon disconnection and reconnection OnIceComplete is |
3883 // called more than once without returning to IceGatheringGathering. | 3858 // called more than once without returning to IceGatheringGathering. |
OLD | NEW |