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

Unified Diff: net/base/network_change_notifier.cc

Issue 298023005: Infer network connection type from network interface type. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Avoid std::vector operator[] element creation Created 6 years, 6 months 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 | « net/base/network_change_notifier.h ('k') | net/base/network_change_notifier_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/network_change_notifier.cc
diff --git a/net/base/network_change_notifier.cc b/net/base/network_change_notifier.cc
index c55be07d731178ceaf85a013c936bc4f7180ec08..3f776bdcd35ed0669919a5c0a56958318c90f1e1 100644
--- a/net/base/network_change_notifier.cc
+++ b/net/base/network_change_notifier.cc
@@ -763,6 +763,36 @@ void NetworkChangeNotifier::SetDnsConfig(const DnsConfig& config) {
NotifyObserversOfDNSChange();
}
+// static
+NetworkChangeNotifier::ConnectionType
+NetworkChangeNotifier::ConnectionTypeFromInterfaces() {
+ NetworkInterfaceList interfaces;
+ if (!GetNetworkList(&interfaces, EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES))
+ return CONNECTION_UNKNOWN;
+ return ConnectionTypeFromInterfaceList(interfaces);
+}
+
+//static
+NetworkChangeNotifier::ConnectionType
+NetworkChangeNotifier::ConnectionTypeFromInterfaceList(
+ const NetworkInterfaceList& interfaces) {
+ bool first = true;
+ ConnectionType result = CONNECTION_UNKNOWN;
+ for (size_t i = 0; i < interfaces.size(); ++i) {
+#if defined(OS_WIN)
+ if (interfaces[i].friendly_name == "Teredo Tunneling Pseudo-Interface")
+ continue;
+#endif
+ if (first) {
+ first = false;
+ result = interfaces[i].type;
+ } else if (result != interfaces[i].type) {
+ return CONNECTION_UNKNOWN;
+ }
+ }
+ return result;
+}
+
void NetworkChangeNotifier::NotifyObserversOfConnectionTypeChange() {
if (g_network_change_notifier) {
g_network_change_notifier->connection_type_observer_list_->Notify(
« no previous file with comments | « net/base/network_change_notifier.h ('k') | net/base/network_change_notifier_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698