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

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, 4 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/location.h" 10 #include "base/location.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 } 115 }
116 } 116 }
117 } 117 }
118 118
119 class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface { 119 class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
120 public: 120 public:
121 P2PPortAllocatorFactory(P2PSocketDispatcher* socket_dispatcher, 121 P2PPortAllocatorFactory(P2PSocketDispatcher* socket_dispatcher,
122 rtc::NetworkManager* network_manager, 122 rtc::NetworkManager* network_manager,
123 rtc::PacketSocketFactory* socket_factory, 123 rtc::PacketSocketFactory* socket_factory,
124 const GURL& origin, 124 const GURL& origin,
125 bool enable_multiple_routes) 125 bool enable_multiple_routes,
126 bool enable_udp_transport)
pthatcher2 2015/08/25 23:12:34 Can we make some kind of struct to contain the var
guoweis_left_chromium 2015/08/26 14:43:40 origin is used for completely different things. I
pthatcher2 2015/08/26 18:25:39 Yeah, that would be nice. Why not just use P2PPor
126 : socket_dispatcher_(socket_dispatcher), 127 : socket_dispatcher_(socket_dispatcher),
127 network_manager_(network_manager), 128 network_manager_(network_manager),
128 socket_factory_(socket_factory), 129 socket_factory_(socket_factory),
129 origin_(origin), 130 origin_(origin),
130 enable_multiple_routes_(enable_multiple_routes) {} 131 enable_multiple_routes_(enable_multiple_routes),
132 enable_udp_transport_(enable_udp_transport) {}
pthatcher2 2015/08/25 23:12:34 Even if we make the Chrome flag "ForceThroughProxy
131 133
132 cricket::PortAllocator* CreatePortAllocator( 134 cricket::PortAllocator* CreatePortAllocator(
133 const std::vector<StunConfiguration>& stun_servers, 135 const std::vector<StunConfiguration>& stun_servers,
134 const std::vector<TurnConfiguration>& turn_configurations) override { 136 const std::vector<TurnConfiguration>& turn_configurations) override {
135 P2PPortAllocator::Config config; 137 P2PPortAllocator::Config config;
136 for (size_t i = 0; i < stun_servers.size(); ++i) { 138 for (size_t i = 0; i < stun_servers.size(); ++i) {
137 config.stun_servers.insert(rtc::SocketAddress( 139 config.stun_servers.insert(rtc::SocketAddress(
138 stun_servers[i].server.hostname(), 140 stun_servers[i].server.hostname(),
139 stun_servers[i].server.port())); 141 stun_servers[i].server.port()));
140 } 142 }
141 for (size_t i = 0; i < turn_configurations.size(); ++i) { 143 for (size_t i = 0; i < turn_configurations.size(); ++i) {
142 P2PPortAllocator::Config::RelayServerConfig relay_config; 144 P2PPortAllocator::Config::RelayServerConfig relay_config;
143 relay_config.server_address = turn_configurations[i].server.hostname(); 145 relay_config.server_address = turn_configurations[i].server.hostname();
144 relay_config.port = turn_configurations[i].server.port(); 146 relay_config.port = turn_configurations[i].server.port();
145 relay_config.username = turn_configurations[i].username; 147 relay_config.username = turn_configurations[i].username;
146 relay_config.password = turn_configurations[i].password; 148 relay_config.password = turn_configurations[i].password;
147 relay_config.transport_type = turn_configurations[i].transport_type; 149 relay_config.transport_type = turn_configurations[i].transport_type;
148 relay_config.secure = turn_configurations[i].secure; 150 relay_config.secure = turn_configurations[i].secure;
149 config.relays.push_back(relay_config); 151 config.relays.push_back(relay_config);
150 } 152 }
151 config.enable_multiple_routes = enable_multiple_routes_; 153 config.enable_multiple_routes = enable_multiple_routes_;
154 config.disable_udp_transport = !enable_udp_transport_;
pthatcher2 2015/08/25 23:12:34 Can we keep it consistent across both (either enab
guoweis_left_chromium 2015/08/26 14:43:40 I also like disable more but if we looked at the o
152 155
153 return new P2PPortAllocator( 156 return new P2PPortAllocator(
154 socket_dispatcher_.get(), network_manager_, 157 socket_dispatcher_.get(), network_manager_,
155 socket_factory_, config, origin_); 158 socket_factory_, config, origin_);
156 } 159 }
157 160
158 protected: 161 protected:
159 ~P2PPortAllocatorFactory() override {} 162 ~P2PPortAllocatorFactory() override {}
160 163
161 private: 164 private:
162 scoped_refptr<P2PSocketDispatcher> socket_dispatcher_; 165 scoped_refptr<P2PSocketDispatcher> socket_dispatcher_;
163 // |network_manager_| and |socket_factory_| are a weak references, owned by 166 // |network_manager_| and |socket_factory_| are a weak references, owned by
164 // PeerConnectionDependencyFactory. 167 // PeerConnectionDependencyFactory.
165 rtc::NetworkManager* network_manager_; 168 rtc::NetworkManager* network_manager_;
166 rtc::PacketSocketFactory* socket_factory_; 169 rtc::PacketSocketFactory* socket_factory_;
167 // The origin URL of the WebFrame that created the 170 // The origin URL of the WebFrame that created the
168 // P2PPortAllocatorFactory. 171 // P2PPortAllocatorFactory.
169 GURL origin_; 172 GURL origin_;
170 // When false, only 'any' address (all 0s) will be bound for address 173 // When false, only 'any' address (all 0s) will be bound for address
171 // discovery. 174 // discovery.
172 bool enable_multiple_routes_; 175 bool enable_multiple_routes_;
176
177 bool enable_udp_transport_;
173 }; 178 };
174 179
175 PeerConnectionDependencyFactory::PeerConnectionDependencyFactory( 180 PeerConnectionDependencyFactory::PeerConnectionDependencyFactory(
176 P2PSocketDispatcher* p2p_socket_dispatcher) 181 P2PSocketDispatcher* p2p_socket_dispatcher)
177 : network_manager_(NULL), 182 : network_manager_(NULL),
178 p2p_socket_dispatcher_(p2p_socket_dispatcher), 183 p2p_socket_dispatcher_(p2p_socket_dispatcher),
179 signaling_thread_(NULL), 184 signaling_thread_(NULL),
180 worker_thread_(NULL), 185 worker_thread_(NULL),
181 chrome_signaling_thread_("Chrome_libJingle_Signaling"), 186 chrome_signaling_thread_("Chrome_libJingle_Signaling"),
182 chrome_worker_thread_("Chrome_libJingle_WorkerThread") { 187 chrome_worker_thread_("Chrome_libJingle_WorkerThread") {
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
399 PeerConnectionDependencyFactory::CreatePeerConnection( 404 PeerConnectionDependencyFactory::CreatePeerConnection(
400 const webrtc::PeerConnectionInterface::RTCConfiguration& config, 405 const webrtc::PeerConnectionInterface::RTCConfiguration& config,
401 const webrtc::MediaConstraintsInterface* constraints, 406 const webrtc::MediaConstraintsInterface* constraints,
402 blink::WebFrame* web_frame, 407 blink::WebFrame* web_frame,
403 webrtc::PeerConnectionObserver* observer) { 408 webrtc::PeerConnectionObserver* observer) {
404 CHECK(web_frame); 409 CHECK(web_frame);
405 CHECK(observer); 410 CHECK(observer);
406 if (!GetPcFactory().get()) 411 if (!GetPcFactory().get())
407 return NULL; 412 return NULL;
408 413
409 // Copy the flag from Preference associated with this WebFrame.
410 bool enable_multiple_routes = true;
411 rtc::scoped_ptr<PeerConnectionIdentityStore> identity_store( 414 rtc::scoped_ptr<PeerConnectionIdentityStore> identity_store(
412 new PeerConnectionIdentityStore( 415 new PeerConnectionIdentityStore(
413 GURL(web_frame->document().url()), 416 GURL(web_frame->document().url()),
414 GURL(web_frame->document().firstPartyForCookies()))); 417 GURL(web_frame->document().firstPartyForCookies())));
415 418
419 // Copy the flag from Preference associated with this WebFrame.
420 bool enable_multiple_routes = true;
421 bool enable_udp_transport = false;
416 if (web_frame && web_frame->view()) { 422 if (web_frame && web_frame->view()) {
417 RenderViewImpl* renderer_view_impl = 423 RenderViewImpl* renderer_view_impl =
418 RenderViewImpl::FromWebView(web_frame->view()); 424 RenderViewImpl::FromWebView(web_frame->view());
419 if (renderer_view_impl) { 425 if (renderer_view_impl) {
420 enable_multiple_routes = renderer_view_impl->renderer_preferences() 426 enable_multiple_routes = renderer_view_impl->renderer_preferences()
421 .enable_webrtc_multiple_routes; 427 .enable_webrtc_multiple_routes;
428 enable_udp_transport = renderer_view_impl->renderer_preferences()
429 .enable_webrtc_udp_transport;
422 } 430 }
423 } 431 }
424 432
425 scoped_refptr<P2PPortAllocatorFactory> pa_factory = 433 scoped_refptr<P2PPortAllocatorFactory> pa_factory =
426 new rtc::RefCountedObject<P2PPortAllocatorFactory>( 434 new rtc::RefCountedObject<P2PPortAllocatorFactory>(
427 p2p_socket_dispatcher_.get(), network_manager_, socket_factory_.get(), 435 p2p_socket_dispatcher_.get(), network_manager_, socket_factory_.get(),
428 GURL(web_frame->document().url().spec()).GetOrigin(), 436 GURL(web_frame->document().url().spec()).GetOrigin(),
429 enable_multiple_routes); 437 enable_multiple_routes, enable_udp_transport);
430 438
431 return GetPcFactory()->CreatePeerConnection(config, 439 return GetPcFactory()->CreatePeerConnection(config,
432 constraints, 440 constraints,
433 pa_factory.get(), 441 pa_factory.get(),
434 identity_store.Pass(), 442 identity_store.Pass(),
435 observer).get(); 443 observer).get();
436 } 444 }
437 445
438 scoped_refptr<webrtc::MediaStreamInterface> 446 scoped_refptr<webrtc::MediaStreamInterface>
439 PeerConnectionDependencyFactory::CreateLocalMediaStream( 447 PeerConnectionDependencyFactory::CreateLocalMediaStream(
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 } 695 }
688 696
689 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() { 697 void PeerConnectionDependencyFactory::EnsureWebRtcAudioDeviceImpl() {
690 if (audio_device_.get()) 698 if (audio_device_.get())
691 return; 699 return;
692 700
693 audio_device_ = new WebRtcAudioDeviceImpl(); 701 audio_device_ = new WebRtcAudioDeviceImpl();
694 } 702 }
695 703
696 } // namespace content 704 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698