summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
Diffstat (limited to 'chrome')
-rw-r--r--chrome/chrome_renderer.gypi2
-rw-r--r--chrome/renderer/p2p/ipc_network_manager.cc25
-rw-r--r--chrome/renderer/p2p/ipc_network_manager.h32
3 files changed, 59 insertions, 0 deletions
diff --git a/chrome/chrome_renderer.gypi b/chrome/chrome_renderer.gypi
index 0b78b88..47d6189 100644
--- a/chrome/chrome_renderer.gypi
+++ b/chrome/chrome_renderer.gypi
@@ -131,6 +131,8 @@
'renderer/notification_provider.cc',
'renderer/notification_provider.h',
'renderer/paint_aggregator.cc',
+ 'renderer/p2p/ipc_network_manager.cc',
+ 'renderer/p2p/ipc_network_manager.h',
'renderer/p2p/ipc_socket_factory.cc',
'renderer/p2p/ipc_socket_factory.h',
'renderer/p2p/socket_client.cc',
diff --git a/chrome/renderer/p2p/ipc_network_manager.cc b/chrome/renderer/p2p/ipc_network_manager.cc
new file mode 100644
index 0000000..70e84c6
--- /dev/null
+++ b/chrome/renderer/p2p/ipc_network_manager.cc
@@ -0,0 +1,25 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/renderer/p2p/ipc_network_manager.h"
+
+IpcNetworkManager::IpcNetworkManager(P2PSocketDispatcher* socket_dispatcher)
+ : socket_dispatcher_(socket_dispatcher) {
+}
+
+IpcNetworkManager::~IpcNetworkManager() {
+}
+
+// TODO(sergeyu): Currently this method just adds one fake network in
+// the list. This doesn't prevent PortAllocator from allocating ports:
+// browser process chooses first IPv4-enabled interface. But this
+// approach will not work in case when there is more than one active
+// network interface. Implement this properly: get list of networks
+// from the browser.
+bool IpcNetworkManager::EnumNetworks(
+ bool include_ignored, std::vector<talk_base::Network*>* networks) {
+ networks->push_back(new talk_base::Network(
+ "chrome", "Chrome virtual network", 0, 0));
+ return true;
+}
diff --git a/chrome/renderer/p2p/ipc_network_manager.h b/chrome/renderer/p2p/ipc_network_manager.h
new file mode 100644
index 0000000..4775c70
--- /dev/null
+++ b/chrome/renderer/p2p/ipc_network_manager.h
@@ -0,0 +1,32 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_RENDERER_P2P_IPC_NETWORK_MANAGER_H_
+#define CHROME_RENDERER_P2P_IPC_NETWORK_MANAGER_H_
+
+#include <vector>
+
+#include "base/compiler_specific.h"
+#include "third_party/libjingle/source/talk/base/network.h"
+
+class P2PSocketDispatcher;
+
+// IpcNetworkManager is a NetworkManager for libjingle that gets a
+// list of network interfaces from the browser.
+class IpcNetworkManager : public talk_base::NetworkManager {
+ public:
+ // Constructor doesn't take ownership of the |socket_dispatcher|.
+ IpcNetworkManager(P2PSocketDispatcher* socket_dispatcher);
+ virtual ~IpcNetworkManager();
+
+ protected:
+ // Fills the supplied list with all usable networks.
+ virtual bool EnumNetworks(bool include_ignored,
+ std::vector<talk_base::Network*>* networks)
+ OVERRIDE;
+
+ P2PSocketDispatcher* socket_dispatcher_;
+};
+
+#endif // CHROME_RENDERER_P2P_IPC_NETWORK_MANAGER_H_