Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2009 The WebRTC Project Authors. All rights reserved. | 2 * Copyright 2009 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 29 matching lines...) Expand all Loading... | |
| 40 // SetDestination. | 40 // SetDestination. |
| 41 // TODO(hbos): Move implementation to .cc file, this and other classes in file. | 41 // TODO(hbos): Move implementation to .cc file, this and other classes in file. |
| 42 class FakeTransportChannel : public TransportChannelImpl, | 42 class FakeTransportChannel : public TransportChannelImpl, |
| 43 public rtc::MessageHandler { | 43 public rtc::MessageHandler { |
| 44 public: | 44 public: |
| 45 explicit FakeTransportChannel(Transport* transport, | 45 explicit FakeTransportChannel(Transport* transport, |
| 46 const std::string& content_name, | 46 const std::string& content_name, |
| 47 int component) | 47 int component) |
| 48 : TransportChannelImpl(content_name, component), | 48 : TransportChannelImpl(content_name, component), |
| 49 transport_(transport), | 49 transport_(transport), |
| 50 dest_(NULL), | 50 dest_(nullptr), |
| 51 state_(STATE_INIT), | 51 state_(STATE_INIT), |
| 52 async_(false), | 52 async_(false), |
| 53 identity_(NULL), | 53 certificate_(nullptr), |
|
tommi
2015/09/03 20:06:04
no need to include in initializer list
hbos
2015/09/07 08:11:01
Done.
| |
| 54 do_dtls_(false), | 54 do_dtls_(false), |
| 55 role_(ICEROLE_UNKNOWN), | 55 role_(ICEROLE_UNKNOWN), |
| 56 tiebreaker_(0), | 56 tiebreaker_(0), |
| 57 remote_ice_mode_(ICEMODE_FULL), | 57 remote_ice_mode_(ICEMODE_FULL), |
| 58 dtls_fingerprint_("", NULL, 0), | 58 dtls_fingerprint_("", nullptr, 0), |
| 59 ssl_role_(rtc::SSL_CLIENT), | 59 ssl_role_(rtc::SSL_CLIENT), |
| 60 connection_count_(0) { | 60 connection_count_(0) { |
| 61 } | 61 } |
| 62 ~FakeTransportChannel() { | 62 ~FakeTransportChannel() { |
| 63 Reset(); | 63 Reset(); |
| 64 } | 64 } |
| 65 | 65 |
| 66 uint64 IceTiebreaker() const { return tiebreaker_; } | 66 uint64 IceTiebreaker() const { return tiebreaker_; } |
| 67 IceMode remote_ice_mode() const { return remote_ice_mode_; } | 67 IceMode remote_ice_mode() const { return remote_ice_mode_; } |
| 68 const std::string& ice_ufrag() const { return ice_ufrag_; } | 68 const std::string& ice_ufrag() const { return ice_ufrag_; } |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 140 | 140 |
| 141 void SetWritable(bool writable) { | 141 void SetWritable(bool writable) { |
| 142 set_writable(writable); | 142 set_writable(writable); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void SetDestination(FakeTransportChannel* dest) { | 145 void SetDestination(FakeTransportChannel* dest) { |
| 146 if (state_ == STATE_CONNECTING && dest) { | 146 if (state_ == STATE_CONNECTING && dest) { |
| 147 // This simulates the delivery of candidates. | 147 // This simulates the delivery of candidates. |
| 148 dest_ = dest; | 148 dest_ = dest; |
| 149 dest_->dest_ = this; | 149 dest_->dest_ = this; |
| 150 if (identity_ && dest_->identity_) { | 150 if (certificate_ && dest_->certificate_) { |
| 151 do_dtls_ = true; | 151 do_dtls_ = true; |
| 152 dest_->do_dtls_ = true; | 152 dest_->do_dtls_ = true; |
| 153 NegotiateSrtpCiphers(); | 153 NegotiateSrtpCiphers(); |
| 154 } | 154 } |
| 155 state_ = STATE_CONNECTED; | 155 state_ = STATE_CONNECTED; |
| 156 dest_->state_ = STATE_CONNECTED; | 156 dest_->state_ = STATE_CONNECTED; |
| 157 set_writable(true); | 157 set_writable(true); |
| 158 dest_->set_writable(true); | 158 dest_->set_writable(true); |
| 159 } else if (state_ == STATE_CONNECTED && !dest) { | 159 } else if (state_ == STATE_CONNECTED && !dest) { |
| 160 // Simulates loss of connectivity, by asymmetrically forgetting dest_. | 160 // Simulates loss of connectivity, by asymmetrically forgetting dest_. |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 211 } | 211 } |
| 212 | 212 |
| 213 virtual void OnMessage(rtc::Message* msg) { | 213 virtual void OnMessage(rtc::Message* msg) { |
| 214 PacketMessageData* data = static_cast<PacketMessageData*>( | 214 PacketMessageData* data = static_cast<PacketMessageData*>( |
| 215 msg->pdata); | 215 msg->pdata); |
| 216 dest_->SignalReadPacket(dest_, data->packet.data<char>(), | 216 dest_->SignalReadPacket(dest_, data->packet.data<char>(), |
| 217 data->packet.size(), rtc::CreatePacketTime(0), 0); | 217 data->packet.size(), rtc::CreatePacketTime(0), 0); |
| 218 delete data; | 218 delete data; |
| 219 } | 219 } |
| 220 | 220 |
| 221 bool SetLocalIdentity(rtc::SSLIdentity* identity) { | 221 bool SetLocalCertificate( |
| 222 identity_ = identity; | 222 const rtc::scoped_refptr<rtc::RTCCertificate>& certificate) override { |
| 223 certificate_ = certificate; | |
| 223 return true; | 224 return true; |
| 224 } | 225 } |
| 225 | 226 |
| 226 | 227 void SetRemoteSSLCertificate(rtc::FakeSSLCertificate* cert) { |
| 227 void SetRemoteCertificate(rtc::FakeSSLCertificate* cert) { | |
| 228 remote_cert_ = cert; | 228 remote_cert_ = cert; |
| 229 } | 229 } |
| 230 | 230 |
| 231 virtual bool IsDtlsActive() const { | 231 virtual bool IsDtlsActive() const { |
| 232 return do_dtls_; | 232 return do_dtls_; |
| 233 } | 233 } |
| 234 | 234 |
| 235 virtual bool SetSrtpCiphers(const std::vector<std::string>& ciphers) { | 235 virtual bool SetSrtpCiphers(const std::vector<std::string>& ciphers) { |
| 236 srtp_ciphers_ = ciphers; | 236 srtp_ciphers_ = ciphers; |
| 237 return true; | 237 return true; |
| 238 } | 238 } |
| 239 | 239 |
| 240 virtual bool GetSrtpCipher(std::string* cipher) { | 240 virtual bool GetSrtpCipher(std::string* cipher) { |
| 241 if (!chosen_srtp_cipher_.empty()) { | 241 if (!chosen_srtp_cipher_.empty()) { |
| 242 *cipher = chosen_srtp_cipher_; | 242 *cipher = chosen_srtp_cipher_; |
| 243 return true; | 243 return true; |
| 244 } | 244 } |
| 245 return false; | 245 return false; |
| 246 } | 246 } |
| 247 | 247 |
| 248 virtual bool GetSslCipher(std::string* cipher) { | 248 virtual bool GetSslCipher(std::string* cipher) { |
| 249 return false; | 249 return false; |
| 250 } | 250 } |
| 251 | 251 |
| 252 virtual bool GetLocalIdentity(rtc::SSLIdentity** identity) const { | 252 bool GetLocalCertificate( |
| 253 if (!identity_) | 253 rtc::scoped_refptr<rtc::RTCCertificate>* certificate) const override { |
|
tommi
2015/09/03 20:06:04
I wonder if we should just change this method to r
hbos
2015/09/07 08:11:01
Done, except I made it (non-const non-ref) scoped_
| |
| 254 if (!certificate_) | |
| 254 return false; | 255 return false; |
| 255 | 256 |
| 256 *identity = identity_->GetReference(); | 257 *certificate = certificate_; |
| 257 return true; | 258 return true; |
| 258 } | 259 } |
| 259 | 260 |
| 260 virtual bool GetRemoteCertificate(rtc::SSLCertificate** cert) const { | 261 bool GetRemoteSSLCertificate(rtc::SSLCertificate** cert) const override { |
| 261 if (!remote_cert_) | 262 if (!remote_cert_) |
| 262 return false; | 263 return false; |
| 263 | 264 |
| 264 *cert = remote_cert_->GetReference(); | 265 *cert = remote_cert_->GetReference(); |
| 265 return true; | 266 return true; |
| 266 } | 267 } |
| 267 | 268 |
| 268 virtual bool ExportKeyingMaterial(const std::string& label, | 269 virtual bool ExportKeyingMaterial(const std::string& label, |
| 269 const uint8* context, | 270 const uint8* context, |
| 270 size_t context_len, | 271 size_t context_len, |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 300 infos->push_back(info); | 301 infos->push_back(info); |
| 301 return true; | 302 return true; |
| 302 } | 303 } |
| 303 | 304 |
| 304 private: | 305 private: |
| 305 enum State { STATE_INIT, STATE_CONNECTING, STATE_CONNECTED }; | 306 enum State { STATE_INIT, STATE_CONNECTING, STATE_CONNECTED }; |
| 306 Transport* transport_; | 307 Transport* transport_; |
| 307 FakeTransportChannel* dest_; | 308 FakeTransportChannel* dest_; |
| 308 State state_; | 309 State state_; |
| 309 bool async_; | 310 bool async_; |
| 310 rtc::SSLIdentity* identity_; | 311 rtc::scoped_refptr<rtc::RTCCertificate> certificate_; |
| 311 rtc::FakeSSLCertificate* remote_cert_; | 312 rtc::FakeSSLCertificate* remote_cert_; |
| 312 bool do_dtls_; | 313 bool do_dtls_; |
| 313 std::vector<std::string> srtp_ciphers_; | 314 std::vector<std::string> srtp_ciphers_; |
| 314 std::string chosen_srtp_cipher_; | 315 std::string chosen_srtp_cipher_; |
| 315 IceRole role_; | 316 IceRole role_; |
| 316 uint64 tiebreaker_; | 317 uint64 tiebreaker_; |
| 317 std::string ice_ufrag_; | 318 std::string ice_ufrag_; |
| 318 std::string ice_pwd_; | 319 std::string ice_pwd_; |
| 319 std::string remote_ice_ufrag_; | 320 std::string remote_ice_ufrag_; |
| 320 std::string remote_ice_pwd_; | 321 std::string remote_ice_pwd_; |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 343 DestroyAllChannels(); | 344 DestroyAllChannels(); |
| 344 } | 345 } |
| 345 | 346 |
| 346 const ChannelMap& channels() const { return channels_; } | 347 const ChannelMap& channels() const { return channels_; } |
| 347 | 348 |
| 348 void SetAsync(bool async) { async_ = async; } | 349 void SetAsync(bool async) { async_ = async; } |
| 349 void SetDestination(FakeTransport* dest) { | 350 void SetDestination(FakeTransport* dest) { |
| 350 dest_ = dest; | 351 dest_ = dest; |
| 351 for (ChannelMap::iterator it = channels_.begin(); it != channels_.end(); | 352 for (ChannelMap::iterator it = channels_.begin(); it != channels_.end(); |
| 352 ++it) { | 353 ++it) { |
| 353 // TODO(hbos): SetLocalCertificate | 354 it->second->SetLocalCertificate(certificate_); |
| 354 it->second->SetLocalIdentity( | |
| 355 certificate_ ? certificate_->identity() : nullptr); | |
| 356 SetChannelDestination(it->first, it->second); | 355 SetChannelDestination(it->first, it->second); |
| 357 } | 356 } |
| 358 } | 357 } |
| 359 | 358 |
| 360 void SetWritable(bool writable) { | 359 void SetWritable(bool writable) { |
| 361 for (ChannelMap::iterator it = channels_.begin(); it != channels_.end(); | 360 for (ChannelMap::iterator it = channels_.begin(); it != channels_.end(); |
| 362 ++it) { | 361 ++it) { |
| 363 it->second->SetWritable(writable); | 362 it->second->SetWritable(writable); |
| 364 } | 363 } |
| 365 } | 364 } |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 404 private: | 403 private: |
| 405 FakeTransportChannel* GetFakeChannel(int component) { | 404 FakeTransportChannel* GetFakeChannel(int component) { |
| 406 ChannelMap::iterator it = channels_.find(component); | 405 ChannelMap::iterator it = channels_.find(component); |
| 407 return (it != channels_.end()) ? it->second : NULL; | 406 return (it != channels_.end()) ? it->second : NULL; |
| 408 } | 407 } |
| 409 void SetChannelDestination(int component, | 408 void SetChannelDestination(int component, |
| 410 FakeTransportChannel* channel) { | 409 FakeTransportChannel* channel) { |
| 411 FakeTransportChannel* dest_channel = NULL; | 410 FakeTransportChannel* dest_channel = NULL; |
| 412 if (dest_) { | 411 if (dest_) { |
| 413 dest_channel = dest_->GetFakeChannel(component); | 412 dest_channel = dest_->GetFakeChannel(component); |
| 414 if (dest_channel) { | 413 if (dest_channel) |
| 415 // TODO(hbos): SetLocalCertificate | 414 dest_channel->SetLocalCertificate(dest_->certificate_); |
| 416 dest_channel->SetLocalIdentity( | |
| 417 dest_->certificate_ ? dest_->certificate_->identity() : nullptr); | |
| 418 } | |
| 419 } | 415 } |
| 420 channel->SetDestination(dest_channel); | 416 channel->SetDestination(dest_channel); |
| 421 } | 417 } |
| 422 | 418 |
| 423 // Note, this is distinct from the Channel map owned by Transport. | 419 // Note, this is distinct from the Channel map owned by Transport. |
| 424 // This map just tracks the FakeTransportChannels created by this class. | 420 // This map just tracks the FakeTransportChannels created by this class. |
| 425 ChannelMap channels_; | 421 ChannelMap channels_; |
| 426 FakeTransport* dest_; | 422 FakeTransport* dest_; |
| 427 bool async_; | 423 bool async_; |
| 428 rtc::scoped_refptr<rtc::RTCCertificate> certificate_; | 424 rtc::scoped_refptr<rtc::RTCCertificate> certificate_; |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 505 } | 501 } |
| 506 } | 502 } |
| 507 | 503 |
| 508 private: | 504 private: |
| 509 bool fail_create_channel_; | 505 bool fail_create_channel_; |
| 510 }; | 506 }; |
| 511 | 507 |
| 512 } // namespace cricket | 508 } // namespace cricket |
| 513 | 509 |
| 514 #endif // WEBRTC_P2P_BASE_FAKESESSION_H_ | 510 #endif // WEBRTC_P2P_BASE_FAKESESSION_H_ |
| OLD | NEW |