#include "net/url_request/url_request_context_builder.h"
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "base/check_op.h"
#include "base/compiler_specific.h"
#include "base/notreached.h"
#include "base/strings/string_util.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/task/thread_pool.h"
#include "base/types/pass_key.h"
#include "build/build_config.h"
#include "net/base/cache_type.h"
#include "net/base/net_errors.h"
#include "net/base/network_delegate_impl.h"
#include "net/cert/cert_verifier.h"
#include "net/cert/ct_log_verifier.h"
#include "net/cert/ct_verifier.h"
#include "net/cert/multi_log_ct_verifier.h"
#include "net/cert/sct_auditing_delegate.h"
#include "net/cookies/cookie_monster.h"
#include "net/dns/context_host_resolver.h"
#include "net/dns/host_resolver.h"
#include "net/dns/host_resolver_manager.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_cache.h"
#include "net/http/http_network_layer.h"
#include "net/http/http_network_session.h"
#include "net/http/http_server_properties.h"
#include "net/http/http_server_properties_manager.h"
#include "net/http/transport_security_persister.h"
#include "net/http/transport_security_state.h"
#include "net/log/net_log.h"
#include "net/net_buildflags.h"
#include "net/nqe/network_quality_estimator.h"
#include "net/proxy_resolution/configured_proxy_resolution_service.h"
#include "net/quic/quic_context.h"
#include "net/quic/quic_session_pool.h"
#include "net/shared_dictionary/shared_dictionary_network_transaction_factory.h"
#include "net/socket/network_binding_client_socket_factory.h"
#include "net/ssl/ssl_config_service_defaults.h"
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_job_factory.h"
#include "url/url_constants.h"
#if BUILDFLAG(ENABLE_REPORTING)
#include "net/network_error_logging/network_error_logging_service.h"
#include "net/network_error_logging/persistent_reporting_and_nel_store.h"
#include "net/reporting/reporting_policy.h"
#include "net/reporting/reporting_service.h"
#endif
#if BUILDFLAG(IS_ANDROID)
#include "base/android/build_info.h"
#endif
#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS)
#include "net/device_bound_sessions/session_service.h"
#endif
namespace net {
URLRequestContextBuilder::HttpCacheParams::HttpCacheParams() = default;
URLRequestContextBuilder::HttpCacheParams::~HttpCacheParams() = default;
URLRequestContextBuilder::URLRequestContextBuilder() = default;
URLRequestContextBuilder::~URLRequestContextBuilder() = default;
void URLRequestContextBuilder::SetHttpNetworkSessionComponents(
const URLRequestContext* request_context,
HttpNetworkSessionContext* session_context,
bool suppress_setting_socket_performance_watcher_factory,
ClientSocketFactory* client_socket_factory) { … }
void URLRequestContextBuilder::set_accept_language(
const std::string& accept_language) { … }
void URLRequestContextBuilder::set_user_agent(const std::string& user_agent) { … }
void URLRequestContextBuilder::set_http_user_agent_settings(
std::unique_ptr<HttpUserAgentSettings> http_user_agent_settings) { … }
void URLRequestContextBuilder::EnableHttpCache(const HttpCacheParams& params) { … }
void URLRequestContextBuilder::DisableHttpCache() { … }
void URLRequestContextBuilder::SetSpdyAndQuicEnabled(bool spdy_enabled,
bool quic_enabled) { … }
void URLRequestContextBuilder::set_sct_auditing_delegate(
std::unique_ptr<SCTAuditingDelegate> sct_auditing_delegate) { … }
void URLRequestContextBuilder::set_quic_context(
std::unique_ptr<QuicContext> quic_context) { … }
void URLRequestContextBuilder::SetCertVerifier(
std::unique_ptr<CertVerifier> cert_verifier) { … }
#if BUILDFLAG(ENABLE_REPORTING)
void URLRequestContextBuilder::set_reporting_policy(
std::unique_ptr<ReportingPolicy> reporting_policy) { … }
void URLRequestContextBuilder::set_reporting_service(
std::unique_ptr<ReportingService> reporting_service) { … }
void URLRequestContextBuilder::set_persistent_reporting_and_nel_store(
std::unique_ptr<PersistentReportingAndNelStore>
persistent_reporting_and_nel_store) { … }
void URLRequestContextBuilder::set_enterprise_reporting_endpoints(
const base::flat_map<std::string, GURL>& enterprise_reporting_endpoints) { … }
#endif
void URLRequestContextBuilder::SetCookieStore(
std::unique_ptr<CookieStore> cookie_store) { … }
void URLRequestContextBuilder::SetProtocolHandler(
const std::string& scheme,
std::unique_ptr<URLRequestJobFactory::ProtocolHandler> protocol_handler) { … }
void URLRequestContextBuilder::set_host_resolver(
std::unique_ptr<HostResolver> host_resolver) { … }
void URLRequestContextBuilder::set_host_mapping_rules(
std::string host_mapping_rules) { … }
void URLRequestContextBuilder::set_host_resolver_manager(
HostResolverManager* manager) { … }
void URLRequestContextBuilder::set_host_resolver_factory(
HostResolver::Factory* factory) { … }
void URLRequestContextBuilder::set_proxy_delegate(
std::unique_ptr<ProxyDelegate> proxy_delegate) { … }
void URLRequestContextBuilder::SetHttpAuthHandlerFactory(
std::unique_ptr<HttpAuthHandlerFactory> factory) { … }
void URLRequestContextBuilder::SetHttpServerProperties(
std::unique_ptr<HttpServerProperties> http_server_properties) { … }
void URLRequestContextBuilder::SetCreateHttpTransactionFactoryCallback(
CreateHttpTransactionFactoryCallback
create_http_network_transaction_factory) { … }
#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS)
void URLRequestContextBuilder::set_device_bound_session_service(
std::unique_ptr<device_bound_sessions::SessionService>
device_bound_session_service) {
device_bound_session_service_ = std::move(device_bound_session_service);
}
#endif
void URLRequestContextBuilder::BindToNetwork(
handles::NetworkHandle network,
std::optional<HostResolver::ManagerOptions> options) { … }
std::unique_ptr<URLRequestContext> URLRequestContextBuilder::Build() { … }
std::unique_ptr<ProxyResolutionService>
URLRequestContextBuilder::CreateProxyResolutionService(
std::unique_ptr<ProxyConfigService> proxy_config_service,
URLRequestContext* url_request_context,
HostResolver* host_resolver,
NetworkDelegate* network_delegate,
NetLog* net_log,
bool pac_quick_check_enabled) { … }
}