Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(223)

Side by Side Diff: content/renderer/media/webrtc/peer_connection_dependency_factory.cc

Issue 916873004: Add a Preference to allow WebRTC only bind to "any address" (all 0s) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "content/renderer/media/webrtc/peer_connection_dependency_factory.h" 5 #include "content/renderer/media/webrtc/peer_connection_dependency_factory.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 webrtc::MediaConstraintsInterface::kValueFalse, true); 107 webrtc::MediaConstraintsInterface::kValueFalse, true);
108 // No need to modify |effects| since the ducking flag is already off. 108 // No need to modify |effects| since the ducking flag is already off.
109 DCHECK((*effects & media::AudioParameters::DUCKING) == 0); 109 DCHECK((*effects & media::AudioParameters::DUCKING) == 0);
110 } 110 }
111 } 111 }
112 } 112 }
113 } 113 }
114 114
115 class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface { 115 class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
116 public: 116 public:
117 P2PPortAllocatorFactory( 117 P2PPortAllocatorFactory(P2PSocketDispatcher* socket_dispatcher,
118 P2PSocketDispatcher* socket_dispatcher, 118 rtc::NetworkManager* network_manager,
119 rtc::NetworkManager* network_manager, 119 rtc::PacketSocketFactory* socket_factory,
120 rtc::PacketSocketFactory* socket_factory) 120 bool disable_multiple_routes)
121 : socket_dispatcher_(socket_dispatcher), 121 : socket_dispatcher_(socket_dispatcher),
122 network_manager_(network_manager), 122 network_manager_(network_manager),
123 socket_factory_(socket_factory) { 123 socket_factory_(socket_factory),
124 } 124 disable_multiple_routes_(disable_multiple_routes) {}
125 125
126 cricket::PortAllocator* CreatePortAllocator( 126 cricket::PortAllocator* CreatePortAllocator(
127 const std::vector<StunConfiguration>& stun_servers, 127 const std::vector<StunConfiguration>& stun_servers,
128 const std::vector<TurnConfiguration>& turn_configurations) override { 128 const std::vector<TurnConfiguration>& turn_configurations) override {
129 P2PPortAllocator::Config config; 129 P2PPortAllocator::Config config;
130 for (size_t i = 0; i < stun_servers.size(); ++i) { 130 for (size_t i = 0; i < stun_servers.size(); ++i) {
131 config.stun_servers.insert(rtc::SocketAddress( 131 config.stun_servers.insert(rtc::SocketAddress(
132 stun_servers[i].server.hostname(), 132 stun_servers[i].server.hostname(),
133 stun_servers[i].server.port())); 133 stun_servers[i].server.port()));
134 } 134 }
135 for (size_t i = 0; i < turn_configurations.size(); ++i) { 135 for (size_t i = 0; i < turn_configurations.size(); ++i) {
136 P2PPortAllocator::Config::RelayServerConfig relay_config; 136 P2PPortAllocator::Config::RelayServerConfig relay_config;
137 relay_config.server_address = turn_configurations[i].server.hostname(); 137 relay_config.server_address = turn_configurations[i].server.hostname();
138 relay_config.port = turn_configurations[i].server.port(); 138 relay_config.port = turn_configurations[i].server.port();
139 relay_config.username = turn_configurations[i].username; 139 relay_config.username = turn_configurations[i].username;
140 relay_config.password = turn_configurations[i].password; 140 relay_config.password = turn_configurations[i].password;
141 relay_config.transport_type = turn_configurations[i].transport_type; 141 relay_config.transport_type = turn_configurations[i].transport_type;
142 relay_config.secure = turn_configurations[i].secure; 142 relay_config.secure = turn_configurations[i].secure;
143 config.relays.push_back(relay_config); 143 config.relays.push_back(relay_config);
144 144
145 // Use turn servers as stun servers. 145 // Use turn servers as stun servers.
146 config.stun_servers.insert(rtc::SocketAddress( 146 config.stun_servers.insert(rtc::SocketAddress(
147 turn_configurations[i].server.hostname(), 147 turn_configurations[i].server.hostname(),
148 turn_configurations[i].server.port())); 148 turn_configurations[i].server.port()));
149 } 149 }
150 config.disable_multiple_routes = disable_multiple_routes_;
150 151
151 return new P2PPortAllocator( 152 return new P2PPortAllocator(
152 socket_dispatcher_.get(), network_manager_, socket_factory_, config); 153 socket_dispatcher_.get(), network_manager_, socket_factory_, config);
153 } 154 }
154 155
155 protected: 156 protected:
156 ~P2PPortAllocatorFactory() override {} 157 ~P2PPortAllocatorFactory() override {}
157 158
158 private: 159 private:
159 scoped_refptr<P2PSocketDispatcher> socket_dispatcher_; 160 scoped_refptr<P2PSocketDispatcher> socket_dispatcher_;
160 // |network_manager_| and |socket_factory_| are a weak references, owned by 161 // |network_manager_| and |socket_factory_| are a weak references, owned by
161 // PeerConnectionDependencyFactory. 162 // PeerConnectionDependencyFactory.
162 rtc::NetworkManager* network_manager_; 163 rtc::NetworkManager* network_manager_;
163 rtc::PacketSocketFactory* socket_factory_; 164 rtc::PacketSocketFactory* socket_factory_;
165
166 // When false, individual NICs will be bound for address discovery phase.
167 bool disable_multiple_routes_;
164 }; 168 };
165 169
166 PeerConnectionDependencyFactory::PeerConnectionDependencyFactory( 170 PeerConnectionDependencyFactory::PeerConnectionDependencyFactory(
167 P2PSocketDispatcher* p2p_socket_dispatcher) 171 P2PSocketDispatcher* p2p_socket_dispatcher)
168 : network_manager_(NULL), 172 : network_manager_(NULL),
169 p2p_socket_dispatcher_(p2p_socket_dispatcher), 173 p2p_socket_dispatcher_(p2p_socket_dispatcher),
170 signaling_thread_(NULL), 174 signaling_thread_(NULL),
171 worker_thread_(NULL), 175 worker_thread_(NULL),
172 chrome_signaling_thread_("Chrome_libJingle_Signaling"), 176 chrome_signaling_thread_("Chrome_libJingle_Signaling"),
173 chrome_worker_thread_("Chrome_libJingle_WorkerThread") { 177 chrome_worker_thread_("Chrome_libJingle_WorkerThread"),
178 disable_multiple_routes_(false) {
174 } 179 }
175 180
176 PeerConnectionDependencyFactory::~PeerConnectionDependencyFactory() { 181 PeerConnectionDependencyFactory::~PeerConnectionDependencyFactory() {
177 DVLOG(1) << "~PeerConnectionDependencyFactory()"; 182 DVLOG(1) << "~PeerConnectionDependencyFactory()";
178 DCHECK(pc_factory_ == NULL); 183 DCHECK(pc_factory_ == NULL);
179 } 184 }
180 185
181 blink::WebRTCPeerConnectionHandler* 186 blink::WebRTCPeerConnectionHandler*
182 PeerConnectionDependencyFactory::CreateRTCPeerConnectionHandler( 187 PeerConnectionDependencyFactory::CreateRTCPeerConnectionHandler(
183 blink::WebRTCPeerConnectionHandlerClient* client) { 188 blink::WebRTCPeerConnectionHandlerClient* client) {
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
380 } 385 }
381 386
382 bool PeerConnectionDependencyFactory::PeerConnectionFactoryCreated() { 387 bool PeerConnectionDependencyFactory::PeerConnectionFactoryCreated() {
383 return pc_factory_.get() != NULL; 388 return pc_factory_.get() != NULL;
384 } 389 }
385 390
386 scoped_refptr<webrtc::PeerConnectionInterface> 391 scoped_refptr<webrtc::PeerConnectionInterface>
387 PeerConnectionDependencyFactory::CreatePeerConnection( 392 PeerConnectionDependencyFactory::CreatePeerConnection(
388 const webrtc::PeerConnectionInterface::RTCConfiguration& config, 393 const webrtc::PeerConnectionInterface::RTCConfiguration& config,
389 const webrtc::MediaConstraintsInterface* constraints, 394 const webrtc::MediaConstraintsInterface* constraints,
390 blink::WebFrame* web_frame, 395 blink::WebFrame* web_frame,
perkj_chrome 2015/02/18 08:10:08 Here you have the web_frame. Please read the prefs
guoweis_left_chromium 2015/02/18 19:20:35 Done.
391 webrtc::PeerConnectionObserver* observer) { 396 webrtc::PeerConnectionObserver* observer) {
392 CHECK(web_frame); 397 CHECK(web_frame);
393 CHECK(observer); 398 CHECK(observer);
394 if (!GetPcFactory().get()) 399 if (!GetPcFactory().get())
395 return NULL; 400 return NULL;
396 401
397 scoped_refptr<P2PPortAllocatorFactory> pa_factory = 402 scoped_refptr<P2PPortAllocatorFactory> pa_factory =
398 new rtc::RefCountedObject<P2PPortAllocatorFactory>( 403 new rtc::RefCountedObject<P2PPortAllocatorFactory>(
399 p2p_socket_dispatcher_.get(), 404 p2p_socket_dispatcher_.get(), network_manager_, socket_factory_.get(),
400 network_manager_, 405 disable_multiple_routes_);
401 socket_factory_.get());
402 406
403 PeerConnectionIdentityService* identity_service = 407 PeerConnectionIdentityService* identity_service =
404 new PeerConnectionIdentityService( 408 new PeerConnectionIdentityService(
405 GURL(web_frame->document().url().spec()).GetOrigin()); 409 GURL(web_frame->document().url().spec()).GetOrigin());
406 410
407 return GetPcFactory()->CreatePeerConnection(config, 411 return GetPcFactory()->CreatePeerConnection(config,
408 constraints, 412 constraints,
409 pa_factory.get(), 413 pa_factory.get(),
410 identity_service, 414 identity_service,
411 observer).get(); 415 observer).get();
(...skipping 210 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 } 626 }
623 627
624 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { 628 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() {
625 if (audio_device_.get()) 629 if (audio_device_.get())
626 return; 630 return;
627 631
628 audio_device_ = new WebRtcAudioDeviceImpl(); 632 audio_device_ = new WebRtcAudioDeviceImpl();
629 } 633 }
630 634
631 } // namespace content 635 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698