Chromium Code Reviews| Index: components/cronet/url_request_context_config.cc |
| diff --git a/components/cronet/url_request_context_config.cc b/components/cronet/url_request_context_config.cc |
| index 432fb1eb64696798cbed62509c14f32e103b6be8..61609676cc2a97672ccec9dc9b0e93332051a39d 100644 |
| --- a/components/cronet/url_request_context_config.cc |
| +++ b/components/cronet/url_request_context_config.cc |
| @@ -23,6 +23,7 @@ |
| #include "net/dns/host_resolver.h" |
| #include "net/dns/mapped_host_resolver.h" |
| #include "net/http/http_server_properties.h" |
| +#include "net/nqe/network_quality_estimator_params.h" |
| #include "net/quic/chromium/quic_utils_chromium.h" |
| #include "net/quic/core/quic_packets.h" |
| #include "net/socket/ssl_client_socket.h" |
| @@ -85,6 +86,12 @@ const char kStaleDnsPersistTimer[] = "persist_delay_ms"; |
| const char kHostResolverRulesFieldTrialName[] = "HostResolverRules"; |
| const char kHostResolverRules[] = "host_resolver_rules"; |
| +// NetworkQualityEstimator (NQE) experiment dictionary name. |
| +const char kNetworkQualityEstimatorFieldTrialName[] = "NetworkQualityEstimator"; |
| +// Name of the boolean to enable reading of the persistemnt prefs in NQE. |
|
mgersh
2017/06/29 19:02:32
nit: typo in "persistent"
tbansal1
2017/06/29 22:45:05
Done.
|
| +const char kNQEPersistentCacheReadingEnabled[] = |
| + "persistent_cache_reading_enabled"; |
| + |
| // Disable IPv6 when on WiFi. This is a workaround for a known issue on certain |
| // Android phones, and should not be necessary when not on one of those devices. |
| // See https://crbug.com/696569 for details. |
| @@ -136,12 +143,13 @@ URLRequestContextConfig::URLRequestContextConfig( |
| load_disable_cache(load_disable_cache), |
| storage_path(storage_path), |
| user_agent(user_agent), |
| - experimental_options(experimental_options), |
| mock_cert_verifier(std::move(mock_cert_verifier)), |
| enable_network_quality_estimator(enable_network_quality_estimator), |
| bypass_public_key_pinning_for_local_trust_anchors( |
| bypass_public_key_pinning_for_local_trust_anchors), |
| - cert_verifier_data(cert_verifier_data) {} |
| + cert_verifier_data(cert_verifier_data), |
| + nqe_persistent_caching_enabled(false), |
| + experimental_options(experimental_options) {} |
| URLRequestContextConfig::~URLRequestContextConfig() {} |
| @@ -337,6 +345,38 @@ void URLRequestContextConfig::ParseAndSetExperimentalOptions( |
| file_task_runner); |
| } |
| } |
| + } else if (it.key() == kNetworkQualityEstimatorFieldTrialName) { |
| + const base::DictionaryValue* nqe_args = nullptr; |
| + if (!it.value().GetAsDictionary(&nqe_args)) { |
| + LOG(ERROR) << "\"" << it.key() << "\" config params \"" << it.value() |
| + << "\" is not a dictionary value"; |
| + effective_experimental_options->Remove(it.key(), nullptr); |
| + continue; |
| + } |
| + |
| + bool persistent_caching_enabled; |
| + if (nqe_args->GetBoolean(kNQEPersistentCacheReadingEnabled, |
| + &persistent_caching_enabled)) { |
| + nqe_persistent_caching_enabled = persistent_caching_enabled; |
| + } |
| + |
| + std::string nqe_option; |
| + if (nqe_args->GetString(net::kForceEffectiveConnectionType, |
| + &nqe_option)) { |
| + net::EffectiveConnectionType forced_effective_connection_type = |
| + net::EFFECTIVE_CONNECTION_TYPE_UNKNOWN; |
| + bool effective_connection_type_available = |
| + net::GetEffectiveConnectionTypeForName( |
| + nqe_option, &forced_effective_connection_type); |
| + if (!effective_connection_type_available) { |
| + LOG(ERROR) << "\"" << nqe_option |
| + << "\" is not a valid effective connection type value"; |
| + } else { |
| + nqe_forced_effective_connection_type = |
| + forced_effective_connection_type; |
| + } |
| + } |
| + |
| } else { |
| LOG(WARNING) << "Unrecognized Cronet experimental option \"" << it.key() |
| << "\" with params \"" << it.value(); |