Index: net/base/network_change_notifier.h |
diff --git a/net/base/network_change_notifier.h b/net/base/network_change_notifier.h |
index 285c52b8e6e2fcb52b76d28342749029adc464ff..73842d4bd5f66a5475625595d3a4c84d8c8634d8 100644 |
--- a/net/base/network_change_notifier.h |
+++ b/net/base/network_change_notifier.h |
@@ -174,6 +174,25 @@ class NET_EXPORT NetworkChangeNotifier { |
DISALLOW_COPY_AND_ASSIGN(NetworkChangeObserver); |
}; |
+ class NET_EXPORT MaxBandwidthObserver { |
+ public: |
+ // Will be called when a change occurs to the network's maximum bandwidth as |
+ // defined in http://w3c.github.io/netinfo/. Generally this will only be |
+ // called on bandwidth changing network connection/disconnection events. |
+ // Some platforms may call it more frequently, such as when WiFi signal |
+ // strength changes. |
+ // TODO(jkarlin): This is currently only implemented for Android. Implement |
+ // on every platform. |
+ virtual void OnMaxBandwidthChanged(double max_bandwidth_mbps) = 0; |
+ |
+ protected: |
+ MaxBandwidthObserver() {} |
+ virtual ~MaxBandwidthObserver() {} |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(MaxBandwidthObserver); |
+ }; |
+ |
virtual ~NetworkChangeNotifier(); |
// See the description of NetworkChangeNotifier::GetConnectionType(). |
@@ -252,6 +271,7 @@ class NET_EXPORT NetworkChangeNotifier { |
static void AddConnectionTypeObserver(ConnectionTypeObserver* observer); |
static void AddDNSObserver(DNSObserver* observer); |
static void AddNetworkChangeObserver(NetworkChangeObserver* observer); |
+ static void AddMaxBandwidthObserver(MaxBandwidthObserver* observer); |
// Unregisters |observer| from receiving notifications. This must be called |
// on the same thread on which AddObserver() was called. Like AddObserver(), |
@@ -264,6 +284,7 @@ class NET_EXPORT NetworkChangeNotifier { |
static void RemoveConnectionTypeObserver(ConnectionTypeObserver* observer); |
static void RemoveDNSObserver(DNSObserver* observer); |
static void RemoveNetworkChangeObserver(NetworkChangeObserver* observer); |
+ static void RemoveMaxBandwidthObserver(MaxBandwidthObserver* observer); |
// Allow unit tests to trigger notifications. |
static void NotifyObserversOfIPAddressChangeForTests(); |
@@ -366,6 +387,7 @@ class NET_EXPORT NetworkChangeNotifier { |
static void NotifyObserversOfConnectionTypeChange(); |
static void NotifyObserversOfDNSChange(); |
static void NotifyObserversOfNetworkChange(ConnectionType type); |
+ static void NotifyObserversOfMaxBandwidthChange(double max_bandwidth_mbps); |
// Stores |config| in NetworkState and notifies observers. |
static void SetDnsConfig(const DnsConfig& config); |
@@ -383,15 +405,18 @@ class NET_EXPORT NetworkChangeNotifier { |
void NotifyObserversOfConnectionTypeChangeImpl(ConnectionType type); |
void NotifyObserversOfDNSChangeImpl(); |
void NotifyObserversOfNetworkChangeImpl(ConnectionType type); |
+ void NotifyObserversOfMaxBandwidthChangeImpl(double max_bandwidth_mbps); |
- const scoped_refptr<ObserverListThreadSafe<IPAddressObserver> > |
+ const scoped_refptr<ObserverListThreadSafe<IPAddressObserver>> |
ip_address_observer_list_; |
- const scoped_refptr<ObserverListThreadSafe<ConnectionTypeObserver> > |
+ const scoped_refptr<ObserverListThreadSafe<ConnectionTypeObserver>> |
connection_type_observer_list_; |
- const scoped_refptr<ObserverListThreadSafe<DNSObserver> > |
+ const scoped_refptr<ObserverListThreadSafe<DNSObserver>> |
resolver_state_observer_list_; |
- const scoped_refptr<ObserverListThreadSafe<NetworkChangeObserver> > |
+ const scoped_refptr<ObserverListThreadSafe<NetworkChangeObserver>> |
network_change_observer_list_; |
+ const scoped_refptr<ObserverListThreadSafe<MaxBandwidthObserver>> |
+ max_bandwidth_observer_list_; |
// The current network state. Hosts DnsConfig, exposed via GetDnsConfig. |
scoped_ptr<NetworkState> network_state_; |