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

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

Issue 1309543004: Create a new preference which disables UDP protocol for WebRTC (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « content/public/common/renderer_preferences.cc ('k') | content/renderer/p2p/port_allocator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/location.h" 10 #include "base/location.h"
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 } 105 }
106 } 106 }
107 } 107 }
108 108
109 class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface { 109 class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
110 public: 110 public:
111 P2PPortAllocatorFactory(P2PSocketDispatcher* socket_dispatcher, 111 P2PPortAllocatorFactory(P2PSocketDispatcher* socket_dispatcher,
112 rtc::NetworkManager* network_manager, 112 rtc::NetworkManager* network_manager,
113 rtc::PacketSocketFactory* socket_factory, 113 rtc::PacketSocketFactory* socket_factory,
114 const GURL& origin, 114 const GURL& origin,
115 bool enable_multiple_routes) 115 const P2PPortAllocator::Config& config)
116 : socket_dispatcher_(socket_dispatcher), 116 : socket_dispatcher_(socket_dispatcher),
117 network_manager_(network_manager), 117 network_manager_(network_manager),
118 socket_factory_(socket_factory), 118 socket_factory_(socket_factory),
119 origin_(origin), 119 origin_(origin),
120 enable_multiple_routes_(enable_multiple_routes) {} 120 config_(config) {}
121 121
122 cricket::PortAllocator* CreatePortAllocator( 122 cricket::PortAllocator* CreatePortAllocator(
123 const std::vector<StunConfiguration>& stun_servers, 123 const std::vector<StunConfiguration>& stun_servers,
124 const std::vector<TurnConfiguration>& turn_configurations) override { 124 const std::vector<TurnConfiguration>& turn_configurations) override {
125 P2PPortAllocator::Config config; 125 P2PPortAllocator::Config config = config_;
126 for (size_t i = 0; i < stun_servers.size(); ++i) { 126 for (size_t i = 0; i < stun_servers.size(); ++i) {
127 config.stun_servers.insert(rtc::SocketAddress( 127 config.stun_servers.insert(rtc::SocketAddress(
128 stun_servers[i].server.hostname(), 128 stun_servers[i].server.hostname(),
129 stun_servers[i].server.port())); 129 stun_servers[i].server.port()));
130 } 130 }
131 for (size_t i = 0; i < turn_configurations.size(); ++i) { 131 for (size_t i = 0; i < turn_configurations.size(); ++i) {
132 P2PPortAllocator::Config::RelayServerConfig relay_config; 132 P2PPortAllocator::Config::RelayServerConfig relay_config;
133 relay_config.server_address = turn_configurations[i].server.hostname(); 133 relay_config.server_address = turn_configurations[i].server.hostname();
134 relay_config.port = turn_configurations[i].server.port(); 134 relay_config.port = turn_configurations[i].server.port();
135 relay_config.username = turn_configurations[i].username; 135 relay_config.username = turn_configurations[i].username;
136 relay_config.password = turn_configurations[i].password; 136 relay_config.password = turn_configurations[i].password;
137 relay_config.transport_type = turn_configurations[i].transport_type; 137 relay_config.transport_type = turn_configurations[i].transport_type;
138 relay_config.secure = turn_configurations[i].secure; 138 relay_config.secure = turn_configurations[i].secure;
139 config.relays.push_back(relay_config); 139 config.relays.push_back(relay_config);
140 } 140 }
141 config.enable_multiple_routes = enable_multiple_routes_;
142 141
143 return new P2PPortAllocator( 142 return new P2PPortAllocator(
144 socket_dispatcher_.get(), network_manager_, 143 socket_dispatcher_.get(), network_manager_,
145 socket_factory_, config, origin_); 144 socket_factory_, config, origin_);
146 } 145 }
147 146
148 protected: 147 protected:
149 ~P2PPortAllocatorFactory() override {} 148 ~P2PPortAllocatorFactory() override {}
150 149
151 private: 150 private:
152 scoped_refptr<P2PSocketDispatcher> socket_dispatcher_; 151 scoped_refptr<P2PSocketDispatcher> socket_dispatcher_;
153 // |network_manager_| and |socket_factory_| are a weak references, owned by 152 // |network_manager_| and |socket_factory_| are a weak references, owned by
154 // PeerConnectionDependencyFactory. 153 // PeerConnectionDependencyFactory.
155 rtc::NetworkManager* network_manager_; 154 rtc::NetworkManager* network_manager_;
156 rtc::PacketSocketFactory* socket_factory_; 155 rtc::PacketSocketFactory* socket_factory_;
157 // The origin URL of the WebFrame that created the 156 // The origin URL of the WebFrame that created the
158 // P2PPortAllocatorFactory. 157 // P2PPortAllocatorFactory.
159 GURL origin_; 158 GURL origin_;
160 // When false, only 'any' address (all 0s) will be bound for address 159
161 // discovery. 160 // Keep track of configuration common to all PortAllocators created by this
162 bool enable_multiple_routes_; 161 // factory; additional, per-allocator configuration is passed into
162 // CreatePortAllocator.
163 P2PPortAllocator::Config config_;
163 }; 164 };
164 165
165 PeerConnectionDependencyFactory::PeerConnectionDependencyFactory( 166 PeerConnectionDependencyFactory::PeerConnectionDependencyFactory(
166 P2PSocketDispatcher* p2p_socket_dispatcher) 167 P2PSocketDispatcher* p2p_socket_dispatcher)
167 : network_manager_(NULL), 168 : network_manager_(NULL),
168 p2p_socket_dispatcher_(p2p_socket_dispatcher), 169 p2p_socket_dispatcher_(p2p_socket_dispatcher),
169 signaling_thread_(NULL), 170 signaling_thread_(NULL),
170 worker_thread_(NULL), 171 worker_thread_(NULL),
171 chrome_signaling_thread_("Chrome_libJingle_Signaling"), 172 chrome_signaling_thread_("Chrome_libJingle_Signaling"),
172 chrome_worker_thread_("Chrome_libJingle_WorkerThread") { 173 chrome_worker_thread_("Chrome_libJingle_WorkerThread") {
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 PeerConnectionDependencyFactory::CreatePeerConnection( 390 PeerConnectionDependencyFactory::CreatePeerConnection(
390 const webrtc::PeerConnectionInterface::RTCConfiguration& config, 391 const webrtc::PeerConnectionInterface::RTCConfiguration& config,
391 const webrtc::MediaConstraintsInterface* constraints, 392 const webrtc::MediaConstraintsInterface* constraints,
392 blink::WebFrame* web_frame, 393 blink::WebFrame* web_frame,
393 webrtc::PeerConnectionObserver* observer) { 394 webrtc::PeerConnectionObserver* observer) {
394 CHECK(web_frame); 395 CHECK(web_frame);
395 CHECK(observer); 396 CHECK(observer);
396 if (!GetPcFactory().get()) 397 if (!GetPcFactory().get())
397 return NULL; 398 return NULL;
398 399
399 // Copy the flag from Preference associated with this WebFrame.
400 bool enable_multiple_routes = true;
401 rtc::scoped_ptr<PeerConnectionIdentityStore> identity_store( 400 rtc::scoped_ptr<PeerConnectionIdentityStore> identity_store(
402 new PeerConnectionIdentityStore( 401 new PeerConnectionIdentityStore(
403 GURL(web_frame->document().url()), 402 GURL(web_frame->document().url()),
404 GURL(web_frame->document().firstPartyForCookies()))); 403 GURL(web_frame->document().firstPartyForCookies())));
405 404
405 // Copy the flag from Preference associated with this WebFrame.
406 P2PPortAllocator::Config pref_config;
406 if (web_frame && web_frame->view()) { 407 if (web_frame && web_frame->view()) {
407 RenderViewImpl* renderer_view_impl = 408 RenderViewImpl* renderer_view_impl =
408 RenderViewImpl::FromWebView(web_frame->view()); 409 RenderViewImpl::FromWebView(web_frame->view());
409 if (renderer_view_impl) { 410 if (renderer_view_impl) {
410 enable_multiple_routes = renderer_view_impl->renderer_preferences() 411 pref_config.enable_multiple_routes =
411 .enable_webrtc_multiple_routes; 412 renderer_view_impl->renderer_preferences()
413 .enable_webrtc_multiple_routes;
414 pref_config.enable_nonproxied_udp_transport =
415 renderer_view_impl->renderer_preferences()
416 .enable_webrtc_nonproxied_udp_transport;
412 } 417 }
413 } 418 }
414 419
415 scoped_refptr<P2PPortAllocatorFactory> pa_factory = 420 scoped_refptr<P2PPortAllocatorFactory> pa_factory =
416 new rtc::RefCountedObject<P2PPortAllocatorFactory>( 421 new rtc::RefCountedObject<P2PPortAllocatorFactory>(
417 p2p_socket_dispatcher_.get(), network_manager_, socket_factory_.get(), 422 p2p_socket_dispatcher_.get(), network_manager_, socket_factory_.get(),
418 GURL(web_frame->document().url().spec()).GetOrigin(), 423 GURL(web_frame->document().url().spec()).GetOrigin(), pref_config);
419 enable_multiple_routes);
420 424
421 return GetPcFactory()->CreatePeerConnection(config, 425 return GetPcFactory()->CreatePeerConnection(config,
422 constraints, 426 constraints,
423 pa_factory.get(), 427 pa_factory.get(),
424 identity_store.Pass(), 428 identity_store.Pass(),
425 observer).get(); 429 observer).get();
426 } 430 }
427 431
428 scoped_refptr<webrtc::MediaStreamInterface> 432 scoped_refptr<webrtc::MediaStreamInterface>
429 PeerConnectionDependencyFactory::CreateLocalMediaStream( 433 PeerConnectionDependencyFactory::CreateLocalMediaStream(
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 } 681 }
678 682
679 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { 683 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() {
680 if (audio_device_.get()) 684 if (audio_device_.get())
681 return; 685 return;
682 686
683 audio_device_ = new WebRtcAudioDeviceImpl(); 687 audio_device_ = new WebRtcAudioDeviceImpl();
684 } 688 }
685 689
686 } // namespace content 690 } // namespace content
OLDNEW
« no previous file with comments | « content/public/common/renderer_preferences.cc ('k') | content/renderer/p2p/port_allocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698