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

Unified Diff: content/renderer/media/webrtc/peer_connection_dependency_factory.cc

Issue 1514853003: Revert of Removing references to webrtc::PortAllocatorFactoryInterface. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | content/renderer/p2p/filtering_network_manager.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 faa92df16161653d9386bb8c18250d95eb77cab9..869a4a55dccc0b9ed0b3037ecc83040087fb8652 100644
--- a/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
+++ b/content/renderer/media/webrtc/peer_connection_dependency_factory.cc
@@ -135,6 +135,87 @@
}
}
+class P2PPortAllocatorFactory
+ : public rtc::RefCountedObject<webrtc::PortAllocatorFactoryInterface> {
+ public:
+ P2PPortAllocatorFactory(
+ scoped_ptr<media::MediaPermission> media_permission,
+ const scoped_refptr<P2PSocketDispatcher>& socket_dispatcher,
+ rtc::NetworkManager* network_manager,
+ rtc::PacketSocketFactory* socket_factory,
+ const P2PPortAllocator::Config& config,
+ const GURL& origin,
+ const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
+ : media_permission_(media_permission.Pass()),
+ socket_dispatcher_(socket_dispatcher),
+ network_manager_(network_manager),
+ socket_factory_(socket_factory),
+ config_(config),
+ origin_(origin),
+ task_runner_(task_runner) {}
+
+ cricket::PortAllocator* CreatePortAllocator(
+ const std::vector<StunConfiguration>& stun_servers,
+ const std::vector<TurnConfiguration>& turn_configurations) override {
+ 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(),
+ stun_servers[i].server.port()));
+ }
+ for (size_t i = 0; i < turn_configurations.size(); ++i) {
+ P2PPortAllocator::Config::RelayServerConfig relay_config;
+ relay_config.server_address = turn_configurations[i].server.hostname();
+ relay_config.port = turn_configurations[i].server.port();
+ relay_config.username = turn_configurations[i].username;
+ relay_config.password = turn_configurations[i].password;
+ relay_config.transport_type = turn_configurations[i].transport_type;
+ relay_config.secure = turn_configurations[i].secure;
+ config.relays.push_back(relay_config);
+ }
+
+ scoped_ptr<rtc::NetworkManager> network_manager;
+ if (config.enable_multiple_routes) {
+ media::MediaPermission* media_permission = media_permission_.get();
+ FilteringNetworkManager* filtering_network_manager =
+ new FilteringNetworkManager(network_manager_, origin_,
+ media_permission_.Pass());
+ if (media_permission) {
+ // Start permission check earlier to reduce any impact to call set up
+ // time. It's safe to use Unretained here since both destructor and
+ // Initialize can only be called on the worker thread.
+ task_runner_->PostTask(
+ FROM_HERE, base::Bind(&FilteringNetworkManager::Initialize,
+ base::Unretained(filtering_network_manager)));
+ }
+ network_manager.reset(filtering_network_manager);
+ } else {
+ network_manager.reset(new EmptyNetworkManager(network_manager_));
+ }
+
+ return new P2PPortAllocator(socket_dispatcher_, network_manager.Pass(),
+ socket_factory_, config, origin_, task_runner_);
+ }
+
+ protected:
+ ~P2PPortAllocatorFactory() override {}
+
+ private:
+ // Ownership of |media_permission_| will be passed to FilteringNetworkManager
+ // during CreatePortAllocator.
+ scoped_ptr<media::MediaPermission> media_permission_;
+
+ scoped_refptr<P2PSocketDispatcher> socket_dispatcher_;
+ rtc::NetworkManager* network_manager_;
+ rtc::PacketSocketFactory* socket_factory_;
+ P2PPortAllocator::Config config_;
+ GURL origin_;
+
+ // This is the worker thread where |media_permission_| and |network_manager_|
+ // live on.
+ scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
+};
+
PeerConnectionDependencyFactory::PeerConnectionDependencyFactory(
P2PSocketDispatcher* p2p_socket_dispatcher)
: network_manager_(NULL),
@@ -459,30 +540,14 @@
const GURL& requesting_origin =
GURL(web_frame->document().url().spec()).GetOrigin();
- scoped_ptr<rtc::NetworkManager> network_manager;
- if (port_config.enable_multiple_routes) {
- media::MediaPermission* media_permission_ptr = media_permission.get();
- FilteringNetworkManager* filtering_network_manager =
- new FilteringNetworkManager(network_manager_, requesting_origin,
- std::move(media_permission));
- if (media_permission_ptr) {
- // Start permission check earlier to reduce any impact to call set up
- // time. It's safe to use Unretained here since both destructor and
- // Initialize can only be called on the worker thread.
- chrome_worker_thread_.task_runner()->PostTask(
- FROM_HERE, base::Bind(&FilteringNetworkManager::Initialize,
- base::Unretained(filtering_network_manager)));
- }
- network_manager.reset(filtering_network_manager);
- } else {
- network_manager.reset(new EmptyNetworkManager(network_manager_));
- }
- rtc::scoped_ptr<P2PPortAllocator> port_allocator(new P2PPortAllocator(
- p2p_socket_dispatcher_, std::move(network_manager), socket_factory_.get(),
- port_config, requesting_origin, chrome_worker_thread_.task_runner()));
+ scoped_refptr<P2PPortAllocatorFactory> pa_factory =
+ new P2PPortAllocatorFactory(
+ media_permission.Pass(), p2p_socket_dispatcher_, network_manager_,
+ socket_factory_.get(), port_config, requesting_origin,
+ chrome_worker_thread_.task_runner());
return GetPcFactory()
- ->CreatePeerConnection(config, constraints, std::move(port_allocator),
+ ->CreatePeerConnection(config, constraints, pa_factory.get(),
std::move(identity_store), observer)
.get();
}
« no previous file with comments | « no previous file | content/renderer/p2p/filtering_network_manager.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698