Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(462)

Unified Diff: net/nqe/network_quality_estimator.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/nqe/network_quality_estimator.h ('k') | net/nqe/network_quality_estimator_test_util.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/nqe/network_quality_estimator.cc
diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
index 6fcc6ee171a5a6ee3846f4c287ecc56b4867d2e9..34ab21f7296d333c1ea0e7e080dd6c5fb54ca590 100644
--- a/net/nqe/network_quality_estimator.cc
+++ b/net/nqe/network_quality_estimator.cc
@@ -252,9 +252,6 @@ NetworkQualityEstimator::NetworkQualityEstimator(
base::TimeDelta::FromSeconds(10)),
rtt_observations_size_at_last_ect_computation_(0),
throughput_observations_size_at_last_ect_computation_(0),
- http_rtt_(nqe::internal::InvalidRTT()),
- transport_rtt_(nqe::internal::InvalidRTT()),
- downstream_throughput_kbps_(nqe::internal::kInvalidThroughput),
effective_connection_type_(EFFECTIVE_CONNECTION_TYPE_UNKNOWN),
min_signal_strength_since_connection_change_(INT32_MAX),
max_signal_strength_since_connection_change_(INT32_MIN),
@@ -327,7 +324,7 @@ void NetworkQualityEstimator::AddDefaultEstimates() {
RttObservation rtt_observation(
default_observations_[current_network_id_.type].http_rtt(),
tick_clock_->NowTicks(),
- NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_FROM_PLATFORM);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM);
rtt_observations_.AddObservation(rtt_observation);
NotifyObserversOfRTT(rtt_observation);
}
@@ -338,7 +335,7 @@ void NetworkQualityEstimator::AddDefaultEstimates() {
default_observations_[current_network_id_.type]
.downstream_throughput_kbps(),
tick_clock_->NowTicks(),
- NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_FROM_PLATFORM);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM);
downstream_throughput_kbps_observations_.AddObservation(
throughput_observation);
NotifyObserversOfThroughput(throughput_observation);
@@ -382,25 +379,10 @@ void NetworkQualityEstimator::NotifyHeadersReceived(const URLRequest& request) {
// request.
if (request.load_flags() & LOAD_MAIN_FRAME_DEPRECATED) {
last_main_frame_request_ = now;
- base::TimeDelta estimated_http_rtt;
- if (!GetHttpRTT(&estimated_http_rtt))
- estimated_http_rtt = nqe::internal::InvalidRTT();
-
- base::TimeDelta estimated_transport_rtt;
- if (!GetTransportRTT(&estimated_transport_rtt))
- estimated_transport_rtt = nqe::internal::InvalidRTT();
-
- int32_t downstream_throughput_kbps;
- if (!GetDownlinkThroughputKbps(&downstream_throughput_kbps))
- downstream_throughput_kbps = nqe::internal::kInvalidThroughput;
-
- estimated_quality_at_last_main_frame_ = nqe::internal::NetworkQuality(
- estimated_http_rtt, estimated_transport_rtt,
- downstream_throughput_kbps);
ComputeEffectiveConnectionType();
- effective_connection_type_at_last_main_frame_ =
- GetEffectiveConnectionType();
+ effective_connection_type_at_last_main_frame_ = effective_connection_type_;
+ estimated_quality_at_last_main_frame_ = network_quality_;
RecordMetricsOnMainFrameRequest();
MaybeQueryExternalEstimateProvider();
@@ -444,8 +426,8 @@ void NetworkQualityEstimator::NotifyHeadersReceived(const URLRequest& request) {
peak_network_quality_.downstream_throughput_kbps());
}
- RttObservation http_rtt_observation(
- observed_http_rtt, now, NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST);
+ RttObservation http_rtt_observation(observed_http_rtt, now,
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP);
rtt_observations_.AddObservation(http_rtt_observation);
NotifyObserversOfRTT(http_rtt_observation);
}
@@ -477,9 +459,12 @@ void NetworkQualityEstimator::RecordAccuracyAfterMainFrame(
return;
base::TimeDelta recent_http_rtt;
+ if (!GetRecentHttpRTT(last_main_frame_request_, &recent_http_rtt))
+ recent_http_rtt = nqe::internal::InvalidRTT();
+
if (estimated_quality_at_last_main_frame_.http_rtt() !=
nqe::internal::InvalidRTT() &&
- GetRecentHttpRTT(last_main_frame_request_, &recent_http_rtt)) {
+ recent_http_rtt != nqe::internal::InvalidRTT()) {
const int estimated_observed_diff_milliseconds =
estimated_quality_at_last_main_frame_.http_rtt().InMilliseconds() -
recent_http_rtt.InMilliseconds();
@@ -709,11 +694,10 @@ void NetworkQualityEstimator::ReportEffectiveConnectionTypeForTesting(
for (auto& observer : effective_connection_type_observer_list_)
observer.OnEffectiveConnectionTypeChanged(effective_connection_type);
- network_quality_store_->Add(
- current_network_id_,
- nqe::internal::CachedNetworkQuality(tick_clock_->NowTicks(),
- estimated_quality_at_last_main_frame_,
- effective_connection_type));
+ network_quality_store_->Add(current_network_id_,
+ nqe::internal::CachedNetworkQuality(
+ tick_clock_->NowTicks(), network_quality_,
+ effective_connection_type));
}
bool NetworkQualityEstimator::RequestProvidesRTTObservation(
@@ -742,10 +726,9 @@ void NetworkQualityEstimator::OnConnectionTypeChanged(
// Write the estimates of the previous network to the cache.
network_quality_store_->Add(
- current_network_id_,
- nqe::internal::CachedNetworkQuality(
- last_effective_connection_type_computation_,
- estimated_quality_at_last_main_frame_, effective_connection_type_));
+ current_network_id_, nqe::internal::CachedNetworkQuality(
+ last_effective_connection_type_computation_,
+ network_quality_, effective_connection_type_));
// Clear the local state.
last_connection_change_ = tick_clock_->NowTicks();
@@ -763,10 +746,7 @@ void NetworkQualityEstimator::OnConnectionTypeChanged(
#endif // OS_ANDROID
min_signal_strength_since_connection_change_ = INT32_MAX;
max_signal_strength_since_connection_change_ = INT32_MIN;
- estimated_quality_at_last_main_frame_ = nqe::internal::NetworkQuality();
- http_rtt_ = nqe::internal::InvalidRTT();
- transport_rtt_ = nqe::internal::InvalidRTT();
- downstream_throughput_kbps_ = nqe::internal::kInvalidThroughput;
+ network_quality_ = nqe::internal::NetworkQuality();
effective_connection_type_ = EFFECTIVE_CONNECTION_TYPE_UNKNOWN;
effective_connection_type_at_last_main_frame_ =
EFFECTIVE_CONNECTION_TYPE_UNKNOWN;
@@ -833,7 +813,7 @@ void NetworkQualityEstimator::RecordMetricsOnConnectionTypeChanged() const {
}
base::TimeDelta rtt;
- if (GetHttpRTT(&rtt)) {
+ if (GetRecentHttpRTT(base::TimeTicks(), &rtt)) {
// Add the 50th percentile value.
base::HistogramBase* rtt_percentile =
GetHistogram("RTT.Percentile50.", current_network_id_.type, 10 * 1000);
@@ -857,7 +837,7 @@ void NetworkQualityEstimator::RecordMetricsOnConnectionTypeChanged() const {
}
}
- if (GetTransportRTT(&rtt)) {
+ if (GetRecentTransportRTT(base::TimeTicks(), &rtt)) {
// Add the 50th percentile value.
base::HistogramBase* transport_rtt_percentile = GetHistogram(
"TransportRTT.Percentile50.", current_network_id_.type, 10 * 1000);
@@ -867,14 +847,14 @@ void NetworkQualityEstimator::RecordMetricsOnConnectionTypeChanged() const {
static const int kPercentiles[] = {0, 10, 90, 100};
std::vector<NetworkQualityObservationSource> disallowed_observation_sources;
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP);
// Disallow external estimate provider since it provides RTT at HTTP layer.
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_EXTERNAL_ESTIMATE);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE);
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_CACHED_ESTIMATE);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE);
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_FROM_PLATFORM);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM);
for (size_t i = 0; i < arraysize(kPercentiles); ++i) {
rtt = GetRTTEstimateInternal(disallowed_observation_sources,
base::TimeTicks(), kPercentiles[i]);
@@ -900,39 +880,53 @@ void NetworkQualityEstimator::RecordNetworkIDAvailability() const {
void NetworkQualityEstimator::RecordMetricsOnMainFrameRequest() const {
DCHECK(thread_checker_.CalledOnValidThread());
- base::TimeDelta http_rtt;
- if (GetHttpRTT(&http_rtt)) {
+ if (estimated_quality_at_last_main_frame_.http_rtt() !=
+ nqe::internal::InvalidRTT()) {
// Add the 50th percentile value.
- UMA_HISTOGRAM_TIMES("NQE.MainFrame.RTT.Percentile50", http_rtt);
+ UMA_HISTOGRAM_TIMES("NQE.MainFrame.RTT.Percentile50",
+ estimated_quality_at_last_main_frame_.http_rtt());
base::HistogramBase* rtt_percentile = GetHistogram(
"MainFrame.RTT.Percentile50.", current_network_id_.type, 10 * 1000);
- rtt_percentile->Add(http_rtt.InMilliseconds());
+ rtt_percentile->Add(
+ estimated_quality_at_last_main_frame_.http_rtt().InMilliseconds());
}
+ UMA_HISTOGRAM_BOOLEAN("NQE.EstimateAvailable.MainFrame.RTT",
+ estimated_quality_at_last_main_frame_.http_rtt() !=
+ nqe::internal::InvalidRTT());
- base::TimeDelta transport_rtt;
- if (GetTransportRTT(&transport_rtt)) {
+ if (estimated_quality_at_last_main_frame_.transport_rtt() !=
+ nqe::internal::InvalidRTT()) {
// Add the 50th percentile value.
UMA_HISTOGRAM_TIMES("NQE.MainFrame.TransportRTT.Percentile50",
- transport_rtt);
+ estimated_quality_at_last_main_frame_.transport_rtt());
base::HistogramBase* transport_rtt_percentile =
GetHistogram("MainFrame.TransportRTT.Percentile50.",
current_network_id_.type, 10 * 1000);
- transport_rtt_percentile->Add(transport_rtt.InMilliseconds());
+ transport_rtt_percentile->Add(
+ estimated_quality_at_last_main_frame_.transport_rtt().InMilliseconds());
}
+ UMA_HISTOGRAM_BOOLEAN("NQE.EstimateAvailable.MainFrame.TransportRTT",
+ estimated_quality_at_last_main_frame_.transport_rtt() !=
+ nqe::internal::InvalidRTT());
- int32_t kbps;
- if (GetDownlinkThroughputKbps(&kbps)) {
+ if (estimated_quality_at_last_main_frame_.downstream_throughput_kbps() !=
+ nqe::internal::kInvalidThroughput) {
// Add the 50th percentile value.
- UMA_HISTOGRAM_COUNTS_1M("NQE.MainFrame.Kbps.Percentile50", kbps);
+ UMA_HISTOGRAM_COUNTS_1M(
+ "NQE.MainFrame.Kbps.Percentile50",
+ estimated_quality_at_last_main_frame_.downstream_throughput_kbps());
base::HistogramBase* throughput_percentile = GetHistogram(
"MainFrame.Kbps.Percentile50.", current_network_id_.type, 1000 * 1000);
- throughput_percentile->Add(kbps);
+ throughput_percentile->Add(
+ estimated_quality_at_last_main_frame_.downstream_throughput_kbps());
}
+ UMA_HISTOGRAM_BOOLEAN(
+ "NQE.EstimateAvailable.MainFrame.Kbps",
+ estimated_quality_at_last_main_frame_.downstream_throughput_kbps() !=
+ nqe::internal::kInvalidThroughput);
- const EffectiveConnectionType effective_connection_type =
- GetEffectiveConnectionType();
UMA_HISTOGRAM_ENUMERATION("NQE.MainFrame.EffectiveConnectionType",
- effective_connection_type,
+ effective_connection_type_at_last_main_frame_,
EFFECTIVE_CONNECTION_TYPE_LAST);
base::HistogramBase* effective_connection_type_histogram =
base::Histogram::FactoryGet(
@@ -942,7 +936,8 @@ void NetworkQualityEstimator::RecordMetricsOnMainFrameRequest() const {
EFFECTIVE_CONNECTION_TYPE_LAST /* Number of buckets */,
base::HistogramBase::kUmaTargetedHistogramFlag);
- effective_connection_type_histogram->Add(effective_connection_type);
+ effective_connection_type_histogram->Add(
+ effective_connection_type_at_last_main_frame_);
}
void NetworkQualityEstimator::ComputeEffectiveConnectionType() {
@@ -953,10 +948,18 @@ void NetworkQualityEstimator::ComputeEffectiveConnectionType() {
const EffectiveConnectionType past_type = effective_connection_type_;
last_effective_connection_type_computation_ = now;
+ base::TimeDelta http_rtt = nqe::internal::InvalidRTT();
+ base::TimeDelta transport_rtt = nqe::internal::InvalidRTT();
+ int32_t downstream_throughput_kbps = nqe::internal::kInvalidThroughput;
+
effective_connection_type_ =
GetRecentEffectiveConnectionTypeAndNetworkQuality(
- base::TimeTicks(), &http_rtt_, &transport_rtt_,
- &downstream_throughput_kbps_);
+ base::TimeTicks(), &http_rtt, &transport_rtt,
+ &downstream_throughput_kbps);
+
+ network_quality_ = nqe::internal::NetworkQuality(http_rtt, transport_rtt,
+ downstream_throughput_kbps);
+
NotifyObserversOfRTTOrThroughputComputed();
if (past_type != effective_connection_type_)
@@ -978,9 +981,9 @@ NetworkQualityEstimator::GetRecentEffectiveConnectionType(
const base::TimeTicks& start_time) const {
DCHECK(thread_checker_.CalledOnValidThread());
- base::TimeDelta http_rtt;
- base::TimeDelta transport_rtt;
- int32_t downstream_throughput_kbps;
+ base::TimeDelta http_rtt = nqe::internal::InvalidRTT();
+ base::TimeDelta transport_rtt = nqe::internal::InvalidRTT();
+ int32_t downstream_throughput_kbps = nqe::internal::kInvalidThroughput;
return GetRecentEffectiveConnectionTypeAndNetworkQuality(
start_time, &http_rtt, &transport_rtt, &downstream_throughput_kbps);
@@ -1161,21 +1164,6 @@ void NetworkQualityEstimator::RemoveRTTAndThroughputEstimatesObserver(
rtt_and_throughput_estimates_observer_list_.RemoveObserver(observer);
}
-bool NetworkQualityEstimator::GetHttpRTT(base::TimeDelta* rtt) const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return GetRecentHttpRTT(base::TimeTicks(), rtt);
-}
-
-bool NetworkQualityEstimator::GetTransportRTT(base::TimeDelta* rtt) const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return GetRecentTransportRTT(base::TimeTicks(), rtt);
-}
-
-bool NetworkQualityEstimator::GetDownlinkThroughputKbps(int32_t* kbps) const {
- DCHECK(thread_checker_.CalledOnValidThread());
- return GetRecentDownlinkThroughputKbps(base::TimeTicks(), kbps);
-}
-
bool NetworkQualityEstimator::GetRecentHttpRTT(
const base::TimeTicks& start_time,
base::TimeDelta* rtt) const {
@@ -1195,14 +1183,14 @@ bool NetworkQualityEstimator::GetRecentTransportRTT(
DCHECK(thread_checker_.CalledOnValidThread());
std::vector<NetworkQualityObservationSource> disallowed_observation_sources;
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP);
// Disallow external estimate provider since it provides RTT at HTTP layer.
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_EXTERNAL_ESTIMATE);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE);
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_CACHED_ESTIMATE);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE);
disallowed_observation_sources.push_back(
- NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_FROM_PLATFORM);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_DEFAULT_HTTP_FROM_PLATFORM);
*rtt = GetRTTEstimateInternal(disallowed_observation_sources, start_time, 50);
return (*rtt != nqe::internal::InvalidRTT());
@@ -1313,10 +1301,7 @@ bool NetworkQualityEstimator::ReadCachedNetworkQualityEstimate() {
if (effective_connection_type_ == EFFECTIVE_CONNECTION_TYPE_UNKNOWN) {
// Read the effective connection type from the cached estimate.
last_effective_connection_type_computation_ = now;
- http_rtt_ = cached_network_quality.network_quality().http_rtt();
- transport_rtt_ = cached_network_quality.network_quality().transport_rtt();
- downstream_throughput_kbps_ =
- cached_network_quality.network_quality().downstream_throughput_kbps();
+ network_quality_ = cached_network_quality.network_quality();
effective_connection_type_ =
cached_network_quality.effective_connection_type();
@@ -1328,7 +1313,7 @@ bool NetworkQualityEstimator::ReadCachedNetworkQualityEstimate() {
nqe::internal::kInvalidThroughput) {
ThroughputObservation througphput_observation(
cached_network_quality.network_quality().downstream_throughput_kbps(),
- now, NETWORK_QUALITY_OBSERVATION_SOURCE_CACHED_ESTIMATE);
+ now, NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE);
downstream_throughput_kbps_observations_.AddObservation(
througphput_observation);
NotifyObserversOfThroughput(througphput_observation);
@@ -1338,7 +1323,7 @@ bool NetworkQualityEstimator::ReadCachedNetworkQualityEstimate() {
nqe::internal::InvalidRTT()) {
RttObservation rtt_observation(
cached_network_quality.network_quality().http_rtt(), now,
- NETWORK_QUALITY_OBSERVATION_SOURCE_CACHED_ESTIMATE);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_CACHED_ESTIMATE);
rtt_observations_.AddObservation(rtt_observation);
NotifyObserversOfRTT(rtt_observation);
}
@@ -1361,9 +1346,9 @@ void NetworkQualityEstimator::OnUpdatedEstimateAvailable(
RecordExternalEstimateProviderMetrics(
EXTERNAL_ESTIMATE_PROVIDER_STATUS_RTT_AVAILABLE);
UMA_HISTOGRAM_TIMES("NQE.ExternalEstimateProvider.RTT", rtt);
- rtt_observations_.AddObservation(
- RttObservation(rtt, tick_clock_->NowTicks(),
- NETWORK_QUALITY_OBSERVATION_SOURCE_EXTERNAL_ESTIMATE));
+ rtt_observations_.AddObservation(RttObservation(
+ rtt, tick_clock_->NowTicks(),
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE));
external_estimate_provider_quality_.set_http_rtt(rtt);
}
@@ -1375,7 +1360,7 @@ void NetworkQualityEstimator::OnUpdatedEstimateAvailable(
downstream_throughput_kbps_observations_.AddObservation(
ThroughputObservation(
downstream_throughput_kbps, tick_clock_->NowTicks(),
- NETWORK_QUALITY_OBSERVATION_SOURCE_EXTERNAL_ESTIMATE));
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP_EXTERNAL_ESTIMATE));
external_estimate_provider_quality_.set_downstream_throughput_kbps(
downstream_throughput_kbps);
}
@@ -1449,7 +1434,7 @@ void NetworkQualityEstimator::OnNewThroughputObservationAvailable(
}
ThroughputObservation throughput_observation(
downstream_kbps, tick_clock_->NowTicks(),
- NETWORK_QUALITY_OBSERVATION_SOURCE_URL_REQUEST);
+ NETWORK_QUALITY_OBSERVATION_SOURCE_HTTP);
downstream_throughput_kbps_observations_.AddObservation(
throughput_observation);
NotifyObserversOfThroughput(throughput_observation);
@@ -1494,11 +1479,10 @@ void NetworkQualityEstimator::
// 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_,
- nqe::internal::CachedNetworkQuality(
- tick_clock_->NowTicks(), estimated_quality_at_last_main_frame_,
- effective_connection_type_));
+ network_quality_store_->Add(current_network_id_,
+ nqe::internal::CachedNetworkQuality(
+ tick_clock_->NowTicks(), network_quality_,
+ effective_connection_type_));
}
}
@@ -1507,8 +1491,9 @@ void NetworkQualityEstimator::NotifyObserversOfRTTOrThroughputComputed() const {
// TODO(tbansal): Add hysteresis in the notification.
for (auto& observer : rtt_and_throughput_estimates_observer_list_) {
- observer.OnRTTOrThroughputEstimatesComputed(http_rtt_, transport_rtt_,
- downstream_throughput_kbps_);
+ observer.OnRTTOrThroughputEstimatesComputed(
+ network_quality_.http_rtt(), network_quality_.transport_rtt(),
+ network_quality_.downstream_throughput_kbps());
}
}
« no previous file with comments | « net/nqe/network_quality_estimator.h ('k') | net/nqe/network_quality_estimator_test_util.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698