Index: chrome/browser/net/nqe/ui_network_quality_estimator_service.h |
diff --git a/chrome/browser/net/nqe/ui_network_quality_estimator_service.h b/chrome/browser/net/nqe/ui_network_quality_estimator_service.h |
index cf205e5ed5f08394cecdc4fee8feb037336c7228..af77188b0b2f105890a74f46b6bd06f955d14efa 100644 |
--- a/chrome/browser/net/nqe/ui_network_quality_estimator_service.h |
+++ b/chrome/browser/net/nqe/ui_network_quality_estimator_service.h |
@@ -47,6 +47,20 @@ class UINetworkQualityEstimatorService |
net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) |
override; |
+ // Must be called on the UI thread. |observer| will be notified on the UI |
+ // thread. |observer| would be notified of the changes in the HTTP RTT, |
+ // transport RTT or throughput. |observer| would be notified of the current |
+ // values in the next message pump. |
+ void AddRTTAndThroughputEstimatesObserver( |
+ net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) |
+ override; |
+ |
+ // Removes |observer| from the list of RTT and throughput estimate observers. |
+ // Must be called on the UI thread. |
+ void RemoveRTTAndThroughputEstimatesObserver( |
+ net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) |
+ override; |
+ |
// Registers the profile-specific network quality estimator prefs. |
static void RegisterProfilePrefs(PrefRegistrySimple* registry); |
@@ -72,6 +86,12 @@ class UINetworkQualityEstimatorService |
net::NetworkQualityEstimator::EffectiveConnectionTypeObserver* observer) |
const; |
+ // Notifies |observer| of the current effective connection type if |observer| |
+ // is still registered as an observer. |
+ void NotifyRTTAndThroughputObserverIfPresent( |
+ net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver* observer) |
+ const; |
+ |
// KeyedService implementation: |
void Shutdown() override; |
@@ -81,9 +101,20 @@ class UINetworkQualityEstimatorService |
// reported by NetworkchangeNotifier::GetConnectionType. |
void EffectiveConnectionTypeChanged(net::EffectiveConnectionType type); |
+ // Called when the estimated HTTP RTT, estimated transport RTT or estimated |
+ // downstream throughput is computed. |
+ void RTTOrThroughputComputed(base::TimeDelta http_rtt, |
+ base::TimeDelta transport_rtt, |
+ int32_t downstream_throughput_kbps); |
+ |
// The current EffectiveConnectionType. |
net::EffectiveConnectionType type_; |
+ // Current network quality metrics. |
+ base::TimeDelta http_rtt_; |
+ base::TimeDelta transport_rtt_; |
+ int32_t downstream_throughput_kbps_; |
+ |
// IO thread based observer that is owned by this service. Created on the UI |
// thread, but used and deleted on the IO thread. |
std::unique_ptr<IONetworkQualityObserver> io_observer_; |
@@ -93,6 +124,11 @@ class UINetworkQualityEstimatorService |
net::NetworkQualityEstimator::EffectiveConnectionTypeObserver> |
effective_connection_type_observer_list_; |
+ // Observer list for changes in RTT or throughput values. |
+ base::ObserverList< |
+ net::NetworkQualityEstimator::RTTAndThroughputEstimatesObserver> |
+ rtt_throughput_observer_list_; |
+ |
// Prefs manager that is owned by this service. Created on the UI thread, but |
// used and deleted on the IO thread. |
std::unique_ptr<net::NetworkQualitiesPrefsManager> prefs_manager_; |