| Index: content/renderer/media/webrtc/peer_connection_dependency_factory.cc
|
| diff --git a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
|
| index 81d34b9161bd0af27e0c52143fa5bd272b3ae795..9974e767271bf8aac3d5088108e06e49de591851 100644
|
| --- a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
|
| +++ b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
|
| @@ -112,17 +112,17 @@ class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
|
| rtc::NetworkManager* network_manager,
|
| rtc::PacketSocketFactory* socket_factory,
|
| const GURL& origin,
|
| - bool enable_multiple_routes)
|
| + const P2PPortAllocator::Config& config)
|
| : socket_dispatcher_(socket_dispatcher),
|
| network_manager_(network_manager),
|
| socket_factory_(socket_factory),
|
| origin_(origin),
|
| - enable_multiple_routes_(enable_multiple_routes) {}
|
| + config_(config) {}
|
|
|
| cricket::PortAllocator* CreatePortAllocator(
|
| const std::vector<StunConfiguration>& stun_servers,
|
| const std::vector<TurnConfiguration>& turn_configurations) override {
|
| - P2PPortAllocator::Config config;
|
| + P2PPortAllocator::Config config = config_;
|
| for (size_t i = 0; i < stun_servers.size(); ++i) {
|
| config.stun_servers.insert(rtc::SocketAddress(
|
| stun_servers[i].server.hostname(),
|
| @@ -138,7 +138,6 @@ class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
|
| relay_config.secure = turn_configurations[i].secure;
|
| config.relays.push_back(relay_config);
|
| }
|
| - config.enable_multiple_routes = enable_multiple_routes_;
|
|
|
| return new P2PPortAllocator(
|
| socket_dispatcher_.get(), network_manager_,
|
| @@ -157,9 +156,11 @@ class P2PPortAllocatorFactory : public webrtc::PortAllocatorFactoryInterface {
|
| // The origin URL of the WebFrame that created the
|
| // P2PPortAllocatorFactory.
|
| GURL origin_;
|
| - // When false, only 'any' address (all 0s) will be bound for address
|
| - // discovery.
|
| - bool enable_multiple_routes_;
|
| +
|
| + // Keep track of configuration common to all PortAllocators created by this
|
| + // factory; additional, per-allocator configuration is passed into
|
| + // CreatePortAllocator.
|
| + P2PPortAllocator::Config config_;
|
| };
|
|
|
| PeerConnectionDependencyFactory::PeerConnectionDependencyFactory(
|
| @@ -396,27 +397,30 @@ PeerConnectionDependencyFactory::CreatePeerConnection(
|
| if (!GetPcFactory().get())
|
| return NULL;
|
|
|
| - // Copy the flag from Preference associated with this WebFrame.
|
| - bool enable_multiple_routes = true;
|
| rtc::scoped_ptr<PeerConnectionIdentityStore> identity_store(
|
| new PeerConnectionIdentityStore(
|
| GURL(web_frame->document().url()),
|
| GURL(web_frame->document().firstPartyForCookies())));
|
|
|
| + // Copy the flag from Preference associated with this WebFrame.
|
| + P2PPortAllocator::Config pref_config;
|
| if (web_frame && web_frame->view()) {
|
| RenderViewImpl* renderer_view_impl =
|
| RenderViewImpl::FromWebView(web_frame->view());
|
| if (renderer_view_impl) {
|
| - enable_multiple_routes = renderer_view_impl->renderer_preferences()
|
| - .enable_webrtc_multiple_routes;
|
| + pref_config.enable_multiple_routes =
|
| + renderer_view_impl->renderer_preferences()
|
| + .enable_webrtc_multiple_routes;
|
| + pref_config.enable_nonproxied_udp_transport =
|
| + renderer_view_impl->renderer_preferences()
|
| + .enable_webrtc_nonproxied_udp_transport;
|
| }
|
| }
|
|
|
| scoped_refptr<P2PPortAllocatorFactory> pa_factory =
|
| new rtc::RefCountedObject<P2PPortAllocatorFactory>(
|
| p2p_socket_dispatcher_.get(), network_manager_, socket_factory_.get(),
|
| - GURL(web_frame->document().url().spec()).GetOrigin(),
|
| - enable_multiple_routes);
|
| + GURL(web_frame->document().url().spec()).GetOrigin(), pref_config);
|
|
|
| return GetPcFactory()->CreatePeerConnection(config,
|
| constraints,
|
|
|