diff options
author | mallinath@chromium.org <mallinath@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-08 23:45:33 +0000 |
---|---|---|
committer | mallinath@chromium.org <mallinath@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-08 23:45:33 +0000 |
commit | e4916df484bdb4a4dd5154a62a25fd1c1df5a550 (patch) | |
tree | 5f79f9ba2b3aae67b32c339c062c706e0cd672d9 /content/renderer/p2p | |
parent | 19bcf0839a86197a668bb770dc32232c6d04736a (diff) | |
download | chromium_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.cc | 33 |
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); } |