diff --git a/src/components/cronet/cronet_context.cc b/src/components/cronet/cronet_context.cc index f16e783656..66c3c90470 100644 --- a/src/components/cronet/cronet_context.cc +++ b/src/components/cronet/cronet_context.cc @@ -244,6 +244,10 @@ CronetContext::NetworkTasks::~NetworkTasks() { if (net::NetworkChangeNotifier::AreNetworkHandlesSupported()) net::NetworkChangeNotifier::RemoveNetworkObserver(this); + + if (default_cert_net_fetcher_) { + default_cert_net_fetcher_->Shutdown(); + } } void CronetContext::InitRequestContextOnInitThread() { @@ -420,6 +424,9 @@ CronetContext::NetworkTasks::BuildDefaultURLRequestContext( g_net_log.Get().net_log(), &context_builder); } + default_cert_net_fetcher_ = base::MakeRefCounted(); + context_builder.SetCertVerifier(net::CertVerifier::CreateDefault(default_cert_net_fetcher_)); + auto context = context_builder.Build(); // Set up host cache persistence if it's enabled. Happens after building the @@ -431,6 +438,8 @@ CronetContext::NetworkTasks::BuildDefaultURLRequestContext( g_net_log.Get().net_log()); } + default_cert_net_fetcher_->SetURLRequestContext(context.get()); + SetSharedURLRequestContextConfig(context.get()); return context; } diff --git a/src/components/cronet/cronet_context.h b/src/components/cronet/cronet_context.h index 8eaea0487f..8f2bc78a83 100644 --- a/src/components/cronet/cronet_context.h +++ b/src/components/cronet/cronet_context.h @@ -21,6 +21,7 @@ #include "components/prefs/json_pref_store.h" #include "net/base/network_change_notifier.h" #include "net/base/network_handle.h" +#include "net/cert_net/cert_net_fetcher_url_request.h" #include "net/nqe/effective_connection_type.h" #include "net/nqe/effective_connection_type_observer.h" #include "net/nqe/network_quality_estimator.h" @@ -330,6 +331,9 @@ class CronetContext { base::flat_map> contexts_; + + scoped_refptr default_cert_net_fetcher_; + // Shorthand for the default context (needed by // components/cronet/android/test/cronet_test_util.cc). raw_ptr default_context_;