1*6777b538SAndroid Build Coastguard Worker // Copyright 2012 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #include "net/quic/network_connection.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker #include "base/logging.h" 8*6777b538SAndroid Build Coastguard Worker #include "net/base/network_interfaces.h" 9*6777b538SAndroid Build Coastguard Worker 10*6777b538SAndroid Build Coastguard Worker namespace net { 11*6777b538SAndroid Build Coastguard Worker NetworkConnection()12*6777b538SAndroid Build Coastguard WorkerNetworkConnection::NetworkConnection() { 13*6777b538SAndroid Build Coastguard Worker NetworkChangeNotifier::AddIPAddressObserver(this); 14*6777b538SAndroid Build Coastguard Worker NetworkChangeNotifier::AddConnectionTypeObserver(this); 15*6777b538SAndroid Build Coastguard Worker OnIPAddressChanged(); 16*6777b538SAndroid Build Coastguard Worker } 17*6777b538SAndroid Build Coastguard Worker ~NetworkConnection()18*6777b538SAndroid Build Coastguard WorkerNetworkConnection::~NetworkConnection() { 19*6777b538SAndroid Build Coastguard Worker NetworkChangeNotifier::RemoveConnectionTypeObserver(this); 20*6777b538SAndroid Build Coastguard Worker NetworkChangeNotifier::RemoveIPAddressObserver(this); 21*6777b538SAndroid Build Coastguard Worker } 22*6777b538SAndroid Build Coastguard Worker OnIPAddressChanged()23*6777b538SAndroid Build Coastguard Workervoid NetworkConnection::OnIPAddressChanged() { 24*6777b538SAndroid Build Coastguard Worker OnConnectionTypeChanged(NetworkChangeNotifier::GetConnectionType()); 25*6777b538SAndroid Build Coastguard Worker } 26*6777b538SAndroid Build Coastguard Worker OnConnectionTypeChanged(NetworkChangeNotifier::ConnectionType type)27*6777b538SAndroid Build Coastguard Workervoid NetworkConnection::OnConnectionTypeChanged( 28*6777b538SAndroid Build Coastguard Worker NetworkChangeNotifier::ConnectionType type) { 29*6777b538SAndroid Build Coastguard Worker DVLOG(1) << "Updating NetworkConnection's Cached Data"; 30*6777b538SAndroid Build Coastguard Worker 31*6777b538SAndroid Build Coastguard Worker connection_type_ = type; 32*6777b538SAndroid Build Coastguard Worker connection_description_ = NetworkChangeNotifier::ConnectionTypeToString(type); 33*6777b538SAndroid Build Coastguard Worker if (connection_type_ != NetworkChangeNotifier::CONNECTION_UNKNOWN && 34*6777b538SAndroid Build Coastguard Worker connection_type_ != NetworkChangeNotifier::CONNECTION_WIFI) { 35*6777b538SAndroid Build Coastguard Worker return; 36*6777b538SAndroid Build Coastguard Worker } 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker // This function only seems usefully defined on Windows currently. 39*6777b538SAndroid Build Coastguard Worker WifiPHYLayerProtocol wifi_type = GetWifiPHYLayerProtocol(); 40*6777b538SAndroid Build Coastguard Worker switch (wifi_type) { 41*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_NONE: 42*6777b538SAndroid Build Coastguard Worker // No wifi support or no associated AP. 43*6777b538SAndroid Build Coastguard Worker break; 44*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_ANCIENT: 45*6777b538SAndroid Build Coastguard Worker // An obsolete modes introduced by the original 802.11, e.g. IR, FHSS. 46*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_ANCIENT"; 47*6777b538SAndroid Build Coastguard Worker break; 48*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_A: 49*6777b538SAndroid Build Coastguard Worker // 802.11a, OFDM-based rates. 50*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11a"; 51*6777b538SAndroid Build Coastguard Worker break; 52*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_B: 53*6777b538SAndroid Build Coastguard Worker // 802.11b, DSSS or HR DSSS. 54*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11b"; 55*6777b538SAndroid Build Coastguard Worker break; 56*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_G: 57*6777b538SAndroid Build Coastguard Worker // 802.11g, same rates as 802.11a but compatible with 802.11b. 58*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11g"; 59*6777b538SAndroid Build Coastguard Worker break; 60*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_N: 61*6777b538SAndroid Build Coastguard Worker // 802.11n, HT rates. 62*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11n"; 63*6777b538SAndroid Build Coastguard Worker break; 64*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_AC: 65*6777b538SAndroid Build Coastguard Worker // 802.11ac 66*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11ac"; 67*6777b538SAndroid Build Coastguard Worker break; 68*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_AD: 69*6777b538SAndroid Build Coastguard Worker // 802.11ad 70*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11ad"; 71*6777b538SAndroid Build Coastguard Worker break; 72*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_AX: 73*6777b538SAndroid Build Coastguard Worker // 802.11ax 74*6777b538SAndroid Build Coastguard Worker connection_description_ = "CONNECTION_WIFI_802.11ax"; 75*6777b538SAndroid Build Coastguard Worker break; 76*6777b538SAndroid Build Coastguard Worker case WIFI_PHY_LAYER_PROTOCOL_UNKNOWN: 77*6777b538SAndroid Build Coastguard Worker // Unclassified mode or failure to identify. 78*6777b538SAndroid Build Coastguard Worker break; 79*6777b538SAndroid Build Coastguard Worker } 80*6777b538SAndroid Build Coastguard Worker } 81*6777b538SAndroid Build Coastguard Worker 82*6777b538SAndroid Build Coastguard Worker } // namespace net 83