| Index: net/nqe/network_quality_estimator.cc
|
| diff --git a/net/nqe/network_quality_estimator.cc b/net/nqe/network_quality_estimator.cc
|
| index 256722a179b707ab1a3c37adc65e94bbe6b36e32..6e681593920ddf01b04f4db0a22b9dd0e123264a 100644
|
| --- a/net/nqe/network_quality_estimator.cc
|
| +++ b/net/nqe/network_quality_estimator.cc
|
| @@ -31,6 +31,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
|
|
|
| @@ -230,6 +231,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_signal_strength_since_connection_change_(INT32_MAX),
|
| + max_signal_strength_since_connection_change_(INT32_MIN),
|
| weak_ptr_factory_(this) {
|
| static_assert(kDefaultHalfLifeSeconds > 0,
|
| "Default half life duration must be > 0");
|
| @@ -479,6 +482,7 @@ void NetworkQualityEstimator::NotifyHeadersReceived(const URLRequest& request) {
|
| weak_ptr_factory_.GetWeakPtr(), measuring_delay),
|
| measuring_delay);
|
| }
|
| + UpdateSignalStrength();
|
| }
|
|
|
| LoadTimingInfo load_timing_info;
|
| @@ -669,6 +673,18 @@ 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.CellularSignalStrengthAvailable",
|
| + min_signal_strength_since_connection_change_ != INT32_MAX &&
|
| + max_signal_strength_since_connection_change_ != INT32_MIN);
|
| + }
|
| +#endif // OS_ANDROID
|
| + min_signal_strength_since_connection_change_ = INT32_MAX;
|
| + max_signal_strength_since_connection_change_ = INT32_MIN;
|
| +
|
| current_network_id_ = GetCurrentNetworkID();
|
|
|
| // Query the external estimate provider on certain connection types. Once the
|
| @@ -691,6 +707,21 @@ 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 signal_strength_dbm;
|
| + if (!android::cellular_signal_strength::GetSignalStrengthDbm(
|
| + &signal_strength_dbm)) {
|
| + return;
|
| + }
|
| + min_signal_strength_since_connection_change_ = std::min(
|
| + min_signal_strength_since_connection_change_, signal_strength_dbm);
|
| + max_signal_strength_since_connection_change_ = std::max(
|
| + max_signal_strength_since_connection_change_, signal_strength_dbm);
|
| +#endif // OS_ANDROID
|
| }
|
|
|
| void NetworkQualityEstimator::RecordMetricsOnConnectionTypeChanged() const {
|
|
|