| Index: net/nqe/network_quality_estimator.cc
|
| diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
|
| index 6b6c7f3eab08c366b7309759683e2341d2a8ed42..6a3925f1b61022e4d6ea9a9a2a495b4e88bbd454 100644
|
| --- a/net/nqe/network_quality_estimator.cc
|
| +++ b/net/nqe/network_quality_estimator.cc
|
| @@ -29,6 +29,7 @@
|
| #include "url/gurl.h"
|
|
|
| #if defined(OS_ANDROID)
|
| +#include "net/android/cellular_signal_strength.h"
|
| #include "net/android/network_library.h"
|
| #endif // OS_ANDROID
|
|
|
| @@ -207,6 +208,8 @@ NetworkQualityEstimator::NetworkQualityEstimator(
|
| rtt_observations_(weight_multiplier_per_second_),
|
| external_estimate_provider_(std::move(external_estimates_provider)),
|
| effective_connection_type_(EFFECTIVE_CONNECTION_TYPE_UNKNOWN),
|
| + min_rssi_since_connection_change_(INT32_MAX),
|
| + max_rssi_since_connection_change_(INT32_MIN),
|
| weak_ptr_factory_(this) {
|
| static_assert(kDefaultHalfLifeSeconds > 0,
|
| "Default half life duration must be > 0");
|
| @@ -446,6 +449,7 @@ void NetworkQualityEstimator::NotifyHeadersReceived(const URLRequest& request) {
|
| weak_ptr_factory_.GetWeakPtr(), measuring_delay),
|
| measuring_delay);
|
| }
|
| + UpdateSignalStrength();
|
| }
|
|
|
| LoadTimingInfo load_timing_info;
|
| @@ -621,6 +625,17 @@ void NetworkQualityEstimator::OnConnectionTypeChanged(
|
| peak_network_quality_ = nqe::internal::NetworkQuality();
|
| downstream_throughput_kbps_observations_.Clear();
|
| rtt_observations_.Clear();
|
| +
|
| +#if defined(OS_ANDROID)
|
| + if (NetworkChangeNotifier::IsConnectionCellular(current_network_id_.type)) {
|
| + UMA_HISTOGRAM_BOOLEAN("NQE.CellularRSSIAvailable",
|
| + min_rssi_since_connection_change_ != INT32_MAX &&
|
| + max_rssi_since_connection_change_ != INT32_MIN);
|
| + }
|
| +#endif // OS_ANDROID
|
| + min_rssi_since_connection_change_ = INT32_MAX;
|
| + max_rssi_since_connection_change_ = INT32_MIN;
|
| +
|
| current_network_id_ = GetCurrentNetworkID();
|
|
|
| // Query the external estimate provider on certain connection types. Once the
|
| @@ -643,6 +658,19 @@ void NetworkQualityEstimator::OnConnectionTypeChanged(
|
| estimated_quality_at_last_main_frame_ = nqe::internal::NetworkQuality();
|
| throughput_analyzer_->OnConnectionTypeChanged();
|
| MaybeRecomputeEffectiveConnectionType();
|
| + UpdateSignalStrength();
|
| +}
|
| +
|
| +void NetworkQualityEstimator::UpdateSignalStrength() {
|
| +#if defined(OS_ANDROID)
|
| + int32_t rssi;
|
| + if (!android::cellular_signal_strength::GetRssiDbm(&rssi))
|
| + return;
|
| + min_rssi_since_connection_change_ =
|
| + std::min(min_rssi_since_connection_change_, rssi);
|
| + max_rssi_since_connection_change_ =
|
| + std::max(max_rssi_since_connection_change_, rssi);
|
| +#endif // OS_ANDROID
|
| }
|
|
|
| void NetworkQualityEstimator::RecordMetricsOnConnectionTypeChanged() const {
|
|
|