Chromium Code Reviews| Index: components/cronet/android/cronet_url_request_context_adapter.cc |
| diff --git a/components/cronet/android/cronet_url_request_context_adapter.cc b/components/cronet/android/cronet_url_request_context_adapter.cc |
| index 2a252b4386e3e74e1777460d265cf7e4390ad4e0..be7c532e38dfb0c0d925251cd7df8d07c8b8e002 100644 |
| --- a/components/cronet/android/cronet_url_request_context_adapter.cc |
| +++ b/components/cronet/android/cronet_url_request_context_adapter.cc |
| @@ -674,18 +674,43 @@ void CronetURLRequestContextAdapter::InitializeOnNetworkThread( |
| if (config->enable_network_quality_estimator) { |
| DCHECK(!network_quality_estimator_); |
| - std::map<std::string, std::string> variation_params; |
| + |
| + // NetworkQualityEstimator experiment dictionary name. |
| + const char kNetworkQualityEstimatorFieldTrialName[] = |
|
mgersh
2017/05/02 18:06:49
Instead of duplicating this here, you could make i
tbansal1
2017/06/28 14:19:54
Obsolete.
|
| + "NetworkQualityEstimator"; |
| + |
| + // Network quality estimator configuration params. |
| + std::map<std::string, std::string> network_quality_estimator_options; |
| + const base::DictionaryValue* nqe_args = nullptr; |
| + |
| + if (effective_experimental_options_ && |
| + effective_experimental_options_->GetDictionary( |
| + kNetworkQualityEstimatorFieldTrialName, &nqe_args)) { |
|
xunjieli
2017/05/02 17:56:34
Can we move the parsing of NQE options to url_requ
tbansal1
2017/06/28 14:19:54
Done.
|
| + for (base::DictionaryValue::Iterator it(*nqe_args); !it.IsAtEnd(); |
| + it.Advance()) { |
| + std::string value_string; |
| + bool value_string_available; |
| + value_string_available = it.value().GetAsString(&value_string); |
| + DCHECK(value_string_available); |
| + network_quality_estimator_options.emplace(it.key(), value_string); |
| + } |
| + } |
| + |
| // Configure network quality estimator: Specify the algorithm that should |
| - // be used for computing the effective connection type. The algorithm |
| - // is specified using the key-value pairs defined in |
| - // //net/nqe/network_quality_estimator.cc. |
| - // TODO(tbansal): Investigate a more robust way of configuring the network |
| - // quality estimator. |
| - variation_params["effective_connection_type_algorithm"] = |
| - "TransportRTTOrDownstreamThroughput"; |
| + // be used for computing the effective connection type if it has not been |
| + // specified by the embedder. The algorithm is specified using the |
| + // key-value pairs defined in //net/nqe/network_quality_estimator.cc. |
| + if (network_quality_estimator_options.find( |
| + "effective_connection_type_algorithm") == |
| + network_quality_estimator_options.end()) { |
| + network_quality_estimator_options.emplace( |
| + "effective_connection_type_algorithm", |
| + "TransportRTTOrDownstreamThroughput"); |
| + } |
| network_quality_estimator_ = base::MakeUnique<net::NetworkQualityEstimator>( |
| - std::unique_ptr<net::ExternalEstimateProvider>(), variation_params, |
| - false, false, g_net_log.Get().net_log()); |
| + std::unique_ptr<net::ExternalEstimateProvider>(), |
| + network_quality_estimator_options, false, false, |
| + g_net_log.Get().net_log()); |
| // Set the socket performance watcher factory so that network quality |
| // estimator is notified of socket performance metrics from TCP and QUIC. |
| context_builder.set_socket_performance_watcher_factory( |