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 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
172 enum RTCCertificateGenerationMethod { ALREADY_GENERATED, DTLS_IDENTITY_STORE }; | 172 enum RTCCertificateGenerationMethod { ALREADY_GENERATED, DTLS_IDENTITY_STORE }; |
173 | 173 |
174 class MockIceObserver : public webrtc::IceObserver { | 174 class MockIceObserver : public webrtc::IceObserver { |
175 public: | 175 public: |
176 MockIceObserver() | 176 MockIceObserver() |
177 : oncandidatesready_(false), | 177 : oncandidatesready_(false), |
178 ice_connection_state_(PeerConnectionInterface::kIceConnectionNew), | 178 ice_connection_state_(PeerConnectionInterface::kIceConnectionNew), |
179 ice_gathering_state_(PeerConnectionInterface::kIceGatheringNew) { | 179 ice_gathering_state_(PeerConnectionInterface::kIceGatheringNew) { |
180 } | 180 } |
181 | 181 |
182 virtual void OnIceConnectionChange( | 182 void OnIceConnectionChange( |
183 PeerConnectionInterface::IceConnectionState new_state) { | 183 PeerConnectionInterface::IceConnectionState new_state) override { |
184 ice_connection_state_ = new_state; | 184 ice_connection_state_ = new_state; |
185 } | 185 } |
186 virtual void OnIceGatheringChange( | 186 void OnIceGatheringChange( |
187 PeerConnectionInterface::IceGatheringState new_state) { | 187 PeerConnectionInterface::IceGatheringState new_state) override { |
188 // We can never transition back to "new". | 188 // We can never transition back to "new". |
189 EXPECT_NE(PeerConnectionInterface::kIceGatheringNew, new_state); | 189 EXPECT_NE(PeerConnectionInterface::kIceGatheringNew, new_state); |
190 ice_gathering_state_ = new_state; | 190 ice_gathering_state_ = new_state; |
191 | 191 oncandidatesready_ = |
192 // oncandidatesready_ really means "ICE gathering is complete". | 192 new_state == PeerConnectionInterface::kIceGatheringComplete; |
193 // This if statement ensures that this value remains correct when we | |
194 // transition from kIceGatheringComplete to kIceGatheringGathering. | |
195 if (new_state == PeerConnectionInterface::kIceGatheringGathering) { | |
196 oncandidatesready_ = false; | |
197 } | |
198 } | 193 } |
199 | 194 |
200 // Found a new candidate. | 195 // Found a new candidate. |
201 virtual void OnIceCandidate(const webrtc::IceCandidateInterface* candidate) { | 196 void OnIceCandidate(const webrtc::IceCandidateInterface* candidate) override { |
202 switch (candidate->sdp_mline_index()) { | 197 switch (candidate->sdp_mline_index()) { |
203 case kMediaContentIndex0: | 198 case kMediaContentIndex0: |
204 mline_0_candidates_.push_back(candidate->candidate()); | 199 mline_0_candidates_.push_back(candidate->candidate()); |
205 break; | 200 break; |
206 case kMediaContentIndex1: | 201 case kMediaContentIndex1: |
207 mline_1_candidates_.push_back(candidate->candidate()); | 202 mline_1_candidates_.push_back(candidate->candidate()); |
208 break; | 203 break; |
209 default: | 204 default: |
210 ASSERT(false); | 205 ASSERT(false); |
211 } | 206 } |
212 | 207 |
213 // The ICE gathering state should always be Gathering when a candidate is | 208 // The ICE gathering state should always be Gathering when a candidate is |
214 // received (or possibly Completed in the case of the final candidate). | 209 // received (or possibly Completed in the case of the final candidate). |
215 EXPECT_NE(PeerConnectionInterface::kIceGatheringNew, ice_gathering_state_); | 210 EXPECT_NE(PeerConnectionInterface::kIceGatheringNew, ice_gathering_state_); |
216 } | 211 } |
217 | 212 |
218 // TODO(bemasc): Remove this once callers transition to OnIceGatheringChange. | |
219 virtual void OnIceComplete() { | |
220 EXPECT_FALSE(oncandidatesready_); | |
221 oncandidatesready_ = true; | |
222 | |
223 // OnIceGatheringChange(IceGatheringCompleted) and OnIceComplete() should | |
224 // be called approximately simultaneously. For ease of testing, this | |
225 // check additionally requires that they be called in the above order. | |
226 EXPECT_EQ(PeerConnectionInterface::kIceGatheringComplete, | |
227 ice_gathering_state_); | |
228 } | |
229 | |
230 bool oncandidatesready_; | 213 bool oncandidatesready_; |
231 std::vector<cricket::Candidate> mline_0_candidates_; | 214 std::vector<cricket::Candidate> mline_0_candidates_; |
232 std::vector<cricket::Candidate> mline_1_candidates_; | 215 std::vector<cricket::Candidate> mline_1_candidates_; |
233 PeerConnectionInterface::IceConnectionState ice_connection_state_; | 216 PeerConnectionInterface::IceConnectionState ice_connection_state_; |
234 PeerConnectionInterface::IceGatheringState ice_gathering_state_; | 217 PeerConnectionInterface::IceGatheringState ice_gathering_state_; |
235 }; | 218 }; |
236 | 219 |
237 class WebRtcSessionForTest : public webrtc::WebRtcSession { | 220 class WebRtcSessionForTest : public webrtc::WebRtcSession { |
238 public: | 221 public: |
239 WebRtcSessionForTest(webrtc::MediaControllerInterface* media_controller, | 222 WebRtcSessionForTest(webrtc::MediaControllerInterface* media_controller, |
(...skipping 4070 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4310 } | 4293 } |
4311 | 4294 |
4312 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test | 4295 // TODO(bemasc): Add a TestIceStatesBundle with BUNDLE enabled. That test |
4313 // currently fails because upon disconnection and reconnection OnIceComplete is | 4296 // currently fails because upon disconnection and reconnection OnIceComplete is |
4314 // called more than once without returning to IceGatheringGathering. | 4297 // called more than once without returning to IceGatheringGathering. |
4315 | 4298 |
4316 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, | 4299 INSTANTIATE_TEST_CASE_P(WebRtcSessionTests, |
4317 WebRtcSessionTest, | 4300 WebRtcSessionTest, |
4318 testing::Values(ALREADY_GENERATED, | 4301 testing::Values(ALREADY_GENERATED, |
4319 DTLS_IDENTITY_STORE)); | 4302 DTLS_IDENTITY_STORE)); |
OLD | NEW |