Index: net/nqe/network_quality_estimator.cc |
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc |
index e52cf68ce97795503dfaa9d24ba8f9f993e3f5c3..f495e3f4c0a7e08aab796a1eb8bdb9188ecc438e 100644 |
--- a/net/nqe/network_quality_estimator.cc |
+++ b/net/nqe/network_quality_estimator.cc |
@@ -293,6 +293,7 @@ NetworkQualityEstimator::NetworkQualityEstimator( |
NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE, |
NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE, |
NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM}), |
+ suppress_notifications_for_testing_(false), |
weak_ptr_factory_(this) { |
// None of the algorithms can have an empty name. |
DCHECK(algorithm_name_to_enum_.end() == |
@@ -1587,6 +1588,10 @@ void NetworkQualityEstimator::NotifyObserversOfRTT( |
// Maybe recompute the effective connection type since a new RTT observation |
// is available. |
MaybeComputeEffectiveConnectionType(); |
+ |
+ if (suppress_notifications_for_testing_) |
+ return; |
+ |
for (auto& observer : rtt_observer_list_) { |
observer.OnRTTObservation(observation.value.InMilliseconds(), |
observation.timestamp, observation.source); |
@@ -1605,6 +1610,10 @@ void NetworkQualityEstimator::NotifyObserversOfThroughput( |
// Maybe recompute the effective connection type since a new throughput |
// observation is available. |
MaybeComputeEffectiveConnectionType(); |
+ |
+ if (suppress_notifications_for_testing_) |
+ return; |
+ |
for (auto& observer : throughput_observer_list_) { |
bengr
2017/05/12 19:09:54
I'd prefer that you didn't add test support into n
tbansal1
2017/05/12 22:18:17
Done.
|
observer.OnThroughputObservation(observation.value, observation.timestamp, |
observation.source); |
@@ -1668,10 +1677,6 @@ void NetworkQualityEstimator:: |
DCHECK(thread_checker_.CalledOnValidThread()); |
DCHECK_NE(EFFECTIVE_CONNECTION_TYPE_LAST, effective_connection_type_); |
- // TODO(tbansal): Add hysteresis in the notification. |
- for (auto& observer : effective_connection_type_observer_list_) |
- observer.OnEffectiveConnectionTypeChanged(effective_connection_type_); |
- |
// Add the estimates of the current network to the cache store. |
if (effective_connection_type_ != EFFECTIVE_CONNECTION_TYPE_UNKNOWN) { |
network_quality_store_->Add(current_network_id_, |
@@ -1679,11 +1684,21 @@ void NetworkQualityEstimator:: |
tick_clock_->NowTicks(), network_quality_, |
effective_connection_type_)); |
} |
+ |
+ if (suppress_notifications_for_testing_) |
+ return; |
+ |
+ // TODO(tbansal): Add hysteresis in the notification. |
bengr
2017/05/12 19:09:55
What kind of hysteresis? Consider making the hyste
tbansal1
2017/05/12 22:18:17
Removed this. We can consider adding hysteresis in
|
+ for (auto& observer : effective_connection_type_observer_list_) |
+ observer.OnEffectiveConnectionTypeChanged(effective_connection_type_); |
} |
void NetworkQualityEstimator::NotifyObserversOfRTTOrThroughputComputed() const { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (suppress_notifications_for_testing_) |
bengr
2017/05/12 19:09:55
Yeah, this is gross. Virtualize.
tbansal1
2017/05/12 22:18:17
Done.
|
+ return; |
+ |
// TODO(tbansal): Add hysteresis in the notification. |
for (auto& observer : rtt_and_throughput_estimates_observer_list_) { |
observer.OnRTTOrThroughputEstimatesComputed( |
@@ -1696,6 +1711,8 @@ void NetworkQualityEstimator::NotifyEffectiveConnectionTypeObserverIfPresent( |
EffectiveConnectionTypeObserver* observer) const { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (suppress_notifications_for_testing_) |
+ return; |
if (!effective_connection_type_observer_list_.HasObserver(observer)) |
return; |
if (effective_connection_type_ == EFFECTIVE_CONNECTION_TYPE_UNKNOWN) |
@@ -1707,6 +1724,8 @@ void NetworkQualityEstimator::NotifyRTTAndThroughputEstimatesObserverIfPresent( |
RTTAndThroughputEstimatesObserver* observer) const { |
DCHECK(thread_checker_.CalledOnValidThread()); |
+ if (suppress_notifications_for_testing_) |
+ return; |
if (!rtt_and_throughput_estimates_observer_list_.HasObserver(observer)) |
return; |
observer->OnRTTOrThroughputEstimatesComputed( |
@@ -1820,6 +1839,11 @@ const char* NetworkQualityEstimator::GetNameForStatistic(int i) const { |
return ""; |
} |
+void NetworkQualityEstimator::SuppressNotificationsForTesting() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ suppress_notifications_for_testing_ = true; |
+} |
+ |
base::Optional<base::TimeDelta> |
NetworkQualityEstimator::NetworkQualityProvider::GetHttpRTT() const { |
return base::Optional<base::TimeDelta>(); |