summaryrefslogtreecommitdiffstats
path: root/chrome
diff options
context:
space:
mode:
authorsergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 21:08:15 +0000
committersergeyu@chromium.org <sergeyu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-04 21:08:15 +0000
commit7b1c0376a17429471d2163c31ed4dbb05a9e819f (patch)
tree84018eceec973388732f768a6db69e901ea70b7e /chrome
parent5b54a5c0327ea3ac2c13cff37573ccd4e7f41e57 (diff)
downloadchromium_src-7b1c0376a17429471d2163c31ed4dbb05a9e819f.zip
chromium_src-7b1c0376a17429471d2163c31ed4dbb05a9e819f.tar.gz
chromium_src-7b1c0376a17429471d2163c31ed4dbb05a9e819f.tar.bz2
Integrate P2P Sockets IPC with chromoting plugin.
BUG=None TEST=None Review URL: http://codereview.chromium.org/6624020 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@76964 0039d316-1c4b-4281-b951-d872f2087c98
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_