xref: /aosp_15_r20/external/cronet/net/quic/network_connection.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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 Worker NetworkConnection::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 Worker NetworkConnection::~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 Worker void 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 Worker void 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