| OLD | NEW | 
|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "remoting/protocol/webrtc_transport.h" | 5 #include "remoting/protocol/webrtc_transport.h" | 
| 6 | 6 | 
| 7 #include <string> | 7 #include <string> | 
| 8 #include <utility> | 8 #include <utility> | 
| 9 #include <vector> | 9 #include <vector> | 
| 10 | 10 | 
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 139 }  // namespace | 139 }  // namespace | 
| 140 | 140 | 
| 141 WebrtcTransport::WebrtcTransport( | 141 WebrtcTransport::WebrtcTransport( | 
| 142     rtc::Thread* worker_thread, | 142     rtc::Thread* worker_thread, | 
| 143     scoped_refptr<TransportContext> transport_context, | 143     scoped_refptr<TransportContext> transport_context, | 
| 144     EventHandler* event_handler) | 144     EventHandler* event_handler) | 
| 145     : worker_thread_(worker_thread), | 145     : worker_thread_(worker_thread), | 
| 146       transport_context_(transport_context), | 146       transport_context_(transport_context), | 
| 147       event_handler_(event_handler), | 147       event_handler_(event_handler), | 
| 148       handshake_hmac_(crypto::HMAC::SHA256), | 148       handshake_hmac_(crypto::HMAC::SHA256), | 
| 149       outgoing_data_stream_adapter_( |  | 
| 150           true, |  | 
| 151           base::Bind(&WebrtcTransport::Close, base::Unretained(this))), |  | 
| 152       incoming_data_stream_adapter_( |  | 
| 153           false, |  | 
| 154           base::Bind(&WebrtcTransport::Close, base::Unretained(this))), |  | 
| 155       weak_factory_(this) { | 149       weak_factory_(this) { | 
| 156   transport_context_->set_relay_mode(TransportContext::RelayMode::TURN); | 150   transport_context_->set_relay_mode(TransportContext::RelayMode::TURN); | 
| 157 } | 151 } | 
| 158 | 152 | 
| 159 WebrtcTransport::~WebrtcTransport() {} | 153 WebrtcTransport::~WebrtcTransport() {} | 
| 160 | 154 | 
| 161 void WebrtcTransport::Start( | 155 void WebrtcTransport::Start( | 
| 162     Authenticator* authenticator, | 156     Authenticator* authenticator, | 
| 163     SendTransportInfoCallback send_transport_info_callback) { | 157     SendTransportInfoCallback send_transport_info_callback) { | 
| 164   DCHECK(thread_checker_.CalledOnValidThread()); | 158   DCHECK(thread_checker_.CalledOnValidThread()); | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 191   webrtc::FakeConstraints constraints; | 185   webrtc::FakeConstraints constraints; | 
| 192   constraints.AddMandatory(webrtc::MediaConstraintsInterface::kEnableDtlsSrtp, | 186   constraints.AddMandatory(webrtc::MediaConstraintsInterface::kEnableDtlsSrtp, | 
| 193                            webrtc::MediaConstraintsInterface::kValueTrue); | 187                            webrtc::MediaConstraintsInterface::kValueTrue); | 
| 194 | 188 | 
| 195   std::unique_ptr<cricket::PortAllocator> port_allocator = | 189   std::unique_ptr<cricket::PortAllocator> port_allocator = | 
| 196       transport_context_->port_allocator_factory()->CreatePortAllocator( | 190       transport_context_->port_allocator_factory()->CreatePortAllocator( | 
| 197           transport_context_); | 191           transport_context_); | 
| 198   peer_connection_ = peer_connection_factory_->CreatePeerConnection( | 192   peer_connection_ = peer_connection_factory_->CreatePeerConnection( | 
| 199       rtc_config, &constraints, std::move(port_allocator), nullptr, this); | 193       rtc_config, &constraints, std::move(port_allocator), nullptr, this); | 
| 200 | 194 | 
| 201   outgoing_data_stream_adapter_.Initialize(peer_connection_); | 195   data_stream_adapter_.reset(new WebrtcDataStreamAdapter( | 
| 202   incoming_data_stream_adapter_.Initialize(peer_connection_); | 196       base::Bind(&WebrtcTransport::Close, base::Unretained(this)))); | 
|  | 197   data_stream_adapter_->Initialize(peer_connection_); | 
| 203 | 198 | 
| 204   event_handler_->OnWebrtcTransportConnecting(); | 199   event_handler_->OnWebrtcTransportConnecting(); | 
| 205 | 200 | 
| 206   if (transport_context_->role() == TransportRole::SERVER) | 201   if (transport_context_->role() == TransportRole::SERVER) | 
| 207     RequestNegotiation(); | 202     RequestNegotiation(); | 
| 208 } | 203 } | 
| 209 | 204 | 
| 210 bool WebrtcTransport::ProcessTransportInfo(XmlElement* transport_info) { | 205 bool WebrtcTransport::ProcessTransportInfo(XmlElement* transport_info) { | 
| 211   DCHECK(thread_checker_.CalledOnValidThread()); | 206   DCHECK(thread_checker_.CalledOnValidThread()); | 
| 212 | 207 | 
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 432 | 427 | 
| 433 void WebrtcTransport::OnRemoveStream( | 428 void WebrtcTransport::OnRemoveStream( | 
| 434     rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) { | 429     rtc::scoped_refptr<webrtc::MediaStreamInterface> stream) { | 
| 435   DCHECK(thread_checker_.CalledOnValidThread()); | 430   DCHECK(thread_checker_.CalledOnValidThread()); | 
| 436   event_handler_->OnWebrtcTransportMediaStreamRemoved(stream.get()); | 431   event_handler_->OnWebrtcTransportMediaStreamRemoved(stream.get()); | 
| 437 } | 432 } | 
| 438 | 433 | 
| 439 void WebrtcTransport::OnDataChannel( | 434 void WebrtcTransport::OnDataChannel( | 
| 440     rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) { | 435     rtc::scoped_refptr<webrtc::DataChannelInterface> data_channel) { | 
| 441   DCHECK(thread_checker_.CalledOnValidThread()); | 436   DCHECK(thread_checker_.CalledOnValidThread()); | 
| 442   incoming_data_stream_adapter_.OnIncomingDataChannel(data_channel); | 437   data_stream_adapter_->WrapIncomingDataChannel( | 
|  | 438       data_channel, | 
|  | 439       base::Bind(&EventHandler::OnWebrtcTransportIncomingDataChannel, | 
|  | 440                  base::Unretained(event_handler_), data_channel->label())); | 
| 443 } | 441 } | 
| 444 | 442 | 
| 445 void WebrtcTransport::OnRenegotiationNeeded() { | 443 void WebrtcTransport::OnRenegotiationNeeded() { | 
| 446   DCHECK(thread_checker_.CalledOnValidThread()); | 444   DCHECK(thread_checker_.CalledOnValidThread()); | 
| 447 | 445 | 
| 448   if (transport_context_->role() == TransportRole::SERVER) { | 446   if (transport_context_->role() == TransportRole::SERVER) { | 
| 449     RequestNegotiation(); | 447     RequestNegotiation(); | 
| 450   } else { | 448   } else { | 
| 451     // TODO(sergeyu): Is it necessary to support renegotiation initiated by the | 449     // TODO(sergeyu): Is it necessary to support renegotiation initiated by the | 
| 452     // client? | 450     // client? | 
| (...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 566     pending_incoming_candidates_.clear(); | 564     pending_incoming_candidates_.clear(); | 
| 567   } | 565   } | 
| 568 } | 566 } | 
| 569 | 567 | 
| 570 void WebrtcTransport::Close(ErrorCode error) { | 568 void WebrtcTransport::Close(ErrorCode error) { | 
| 571   DCHECK(thread_checker_.CalledOnValidThread()); | 569   DCHECK(thread_checker_.CalledOnValidThread()); | 
| 572   if (!peer_connection_) | 570   if (!peer_connection_) | 
| 573     return; | 571     return; | 
| 574 | 572 | 
| 575   weak_factory_.InvalidateWeakPtrs(); | 573   weak_factory_.InvalidateWeakPtrs(); | 
|  | 574 | 
|  | 575   data_stream_adapter_.reset(); | 
|  | 576 | 
| 576   peer_connection_->Close(); | 577   peer_connection_->Close(); | 
| 577   peer_connection_ = nullptr; | 578   peer_connection_ = nullptr; | 
| 578   peer_connection_factory_ = nullptr; | 579   peer_connection_factory_ = nullptr; | 
| 579 | 580 | 
| 580   if (error != OK) | 581   if (error != OK) | 
| 581     event_handler_->OnWebrtcTransportError(error); | 582     event_handler_->OnWebrtcTransportError(error); | 
| 582 } | 583 } | 
| 583 | 584 | 
| 584 }  // namespace protocol | 585 }  // namespace protocol | 
| 585 }  // namespace remoting | 586 }  // namespace remoting | 
| OLD | NEW | 
|---|