summaryrefslogtreecommitdiffstats
path: root/content/renderer/p2p
diff options
context:
space:
mode:
authormallinath@chromium.org <mallinath@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-08 23:45:33 +0000
committermallinath@chromium.org <mallinath@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-05-08 23:45:33 +0000
commite4916df484bdb4a4dd5154a62a25fd1c1df5a550 (patch)
tree5f79f9ba2b3aae67b32c339c062c706e0cd672d9 /content/renderer/p2p
parent19bcf0839a86197a668bb770dc32232c6d04736a (diff)
downloadchromium_src-e4916df484bdb4a4dd5154a62a25fd1c1df5a550.zip
chromium_src-e4916df484bdb4a4dd5154a62a25fd1c1df5a550.tar.gz
chromium_src-e4916df484bdb4a4dd5154a62a25fd1c1df5a550.tar.bz2
Wiring network interface from Chromium net to libjingle Network.
Network interface type are detected only on Windows and OSX platforms for now. BUG=361791 TBR=sergeyu@chromium.org,cevans@chromium.org Review URL: https://codereview.chromium.org/271833002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@269099 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer/p2p')
-rw-r--r--content/renderer/p2p/ipc_network_manager.cc33
1 files changed, 29 insertions, 4 deletions
diff --git a/content/renderer/p2p/ipc_network_manager.cc b/content/renderer/p2p/ipc_network_manager.cc
index ee88831..a11e03c 100644
--- a/content/renderer/p2p/ipc_network_manager.cc
+++ b/content/renderer/p2p/ipc_network_manager.cc
@@ -12,6 +12,29 @@
namespace content {
+namespace {
+
+talk_base::AdapterType ConvertConnectionTypeToAdapterType(
+ net::NetworkChangeNotifier::ConnectionType type) {
+ switch (type) {
+ case net::NetworkChangeNotifier::CONNECTION_UNKNOWN:
+ return talk_base::ADAPTER_TYPE_UNKNOWN;
+ case net::NetworkChangeNotifier::CONNECTION_ETHERNET:
+ return talk_base::ADAPTER_TYPE_ETHERNET;
+ case net::NetworkChangeNotifier::CONNECTION_WIFI:
+ return talk_base::ADAPTER_TYPE_WIFI;
+ case net::NetworkChangeNotifier::CONNECTION_2G:
+ case net::NetworkChangeNotifier::CONNECTION_3G:
+ case net::NetworkChangeNotifier::CONNECTION_4G:
+ return talk_base::ADAPTER_TYPE_CELLULAR;
+ default:
+ return talk_base::ADAPTER_TYPE_UNKNOWN;
+ }
+ return talk_base::ADAPTER_TYPE_UNKNOWN;
+}
+
+} // namespace
+
IpcNetworkManager::IpcNetworkManager(P2PSocketDispatcher* socket_dispatcher)
: socket_dispatcher_(socket_dispatcher),
start_count_(0),
@@ -60,7 +83,8 @@ void IpcNetworkManager::OnNetworkListChanged(
memcpy(&address, &it->address[0], sizeof(uint32));
address = talk_base::NetworkToHost32(address);
talk_base::Network* network = new talk_base::Network(
- it->name, it->name, talk_base::IPAddress(address), 32);
+ it->name, it->name, talk_base::IPAddress(address), 32,
+ ConvertConnectionTypeToAdapterType(it->type));
network->AddIP(talk_base::IPAddress(address));
networks.push_back(network);
} else if (it->address.size() == net::kIPv6AddressSize) {
@@ -69,7 +93,8 @@ void IpcNetworkManager::OnNetworkListChanged(
talk_base::IPAddress ip6_addr(address);
if (!talk_base::IPIsPrivate(ip6_addr)) {
talk_base::Network* network = new talk_base::Network(
- it->name, it->name, ip6_addr, 64);
+ it->name, it->name, ip6_addr, 64,
+ ConvertConnectionTypeToAdapterType(it->type));
network->AddIP(ip6_addr);
networks.push_back(network);
}
@@ -81,14 +106,14 @@ void IpcNetworkManager::OnNetworkListChanged(
std::string name_v4("loopback_ipv4");
talk_base::IPAddress ip_address_v4(INADDR_LOOPBACK);
talk_base::Network* network_v4 = new talk_base::Network(
- name_v4, name_v4, ip_address_v4, 32);
+ name_v4, name_v4, ip_address_v4, 32, talk_base::ADAPTER_TYPE_UNKNOWN);
network_v4->AddIP(ip_address_v4);
networks.push_back(network_v4);
std::string name_v6("loopback_ipv6");
talk_base::IPAddress ip_address_v6(in6addr_loopback);
talk_base::Network* network_v6 = new talk_base::Network(
- name_v6, name_v6, ip_address_v6, 64);
+ name_v6, name_v6, ip_address_v6, 64, talk_base::ADAPTER_TYPE_UNKNOWN);
network_v6->AddIP(ip_address_v6);
networks.push_back(network_v6);
}