| 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..93820d83575a570af1948d56a881157fd6b16225 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 persistent prefs in NQE.
|
| +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();
|
|
|