#include "services/network/network_context.h"
#include <algorithm>
#include <memory>
#include <optional>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
#include "base/barrier_closure.h"
#include "base/base64.h"
#include "base/build_time.h"
#include "base/callback_list.h"
#include "base/check.h"
#include "base/command_line.h"
#include "base/containers/unique_ptr_adapters.h"
#include "base/dcheck_is_on.h"
#include "base/feature_list.h"
#include "base/functional/bind.h"
#include "base/functional/callback_helpers.h"
#include "base/logging.h"
#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
#include "base/metrics/histogram_functions.h"
#include "base/not_fatal_until.h"
#include "base/ranges/algorithm.h"
#include "base/sequence_checker.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/task/current_thread.h"
#include "base/task/sequenced_task_runner.h"
#include "base/task/single_thread_task_runner.h"
#include "base/task/task_traits.h"
#include "base/task/thread_pool.h"
#include "base/time/time.h"
#include "base/types/optional_util.h"
#include "build/build_config.h"
#include "build/chromecast_buildflags.h"
#include "build/chromeos_buildflags.h"
#include "components/cookie_config/cookie_store_util.h"
#include "components/domain_reliability/features.h"
#include "components/domain_reliability/monitor.h"
#include "components/network_session_configurator/browser/network_session_configurator.h"
#include "components/network_session_configurator/common/network_switches.h"
#include "components/os_crypt/async/common/encryptor.h"
#include "components/prefs/json_pref_store.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/pref_service_factory.h"
#include "components/url_matcher/url_matcher.h"
#include "components/url_matcher/url_util.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "net/base/features.h"
#include "net/base/isolation_info.h"
#include "net/base/load_flags.h"
#include "net/base/net_errors.h"
#include "net/base/network_anonymization_key.h"
#include "net/base/network_delegate.h"
#include "net/base/network_isolation_key.h"
#include "net/base/port_util.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/cert/caching_cert_verifier.h"
#include "net/cert/cert_verifier.h"
#include "net/cert/coalescing_cert_verifier.h"
#include "net/cookies/cookie_access_delegate.h"
#include "net/cookies/cookie_constants.h"
#include "net/cookies/cookie_monster.h"
#include "net/cookies/cookie_setting_override.h"
#include "net/dns/host_cache.h"
#include "net/dns/mapped_host_resolver.h"
#include "net/extras/sqlite/cookie_crypto_delegate.h"
#include "net/extras/sqlite/sqlite_persistent_cookie_store.h"
#include "net/first_party_sets/first_party_set_metadata.h"
#include "net/http/http_auth.h"
#include "net/http/http_auth_handler_factory.h"
#include "net/http/http_auth_preferences.h"
#include "net/http/http_auth_scheme.h"
#include "net/http/http_cache.h"
#include "net/http/http_network_session.h"
#include "net/http/http_request_headers.h"
#include "net/http/http_server_properties.h"
#include "net/http/http_transaction_factory.h"
#include "net/net_buildflags.h"
#include "net/proxy_resolution/configured_proxy_resolution_service.h"
#include "net/proxy_resolution/proxy_config.h"
#include "net/shared_dictionary/shared_dictionary_isolation_key.h"
#include "net/storage_access_api/status.h"
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "net/url_request/static_http_user_agent_settings.h"
#include "net/url_request/url_request.h"
#include "net/url_request/url_request_context.h"
#include "net/url_request/url_request_context_builder.h"
#include "services/network/brokered_client_socket_factory.h"
#include "services/network/cookie_manager.h"
#include "services/network/data_remover_util.h"
#include "services/network/disk_cache/mojo_backend_file_operations_factory.h"
#include "services/network/host_resolver.h"
#include "services/network/http_auth_cache_copier.h"
#include "services/network/http_server_properties_pref_delegate.h"
#include "services/network/ignore_errors_cert_verifier.h"
#include "services/network/ip_protection/ip_protection_config_cache_impl.h"
#include "services/network/ip_protection/ip_protection_config_getter_mojo_impl.h"
#include "services/network/ip_protection/ip_protection_proxy_delegate.h"
#include "services/network/ip_protection/ip_protection_token_cache_manager_impl.h"
#include "services/network/is_browser_initiated.h"
#include "services/network/net_log_exporter.h"
#include "services/network/network_service.h"
#include "services/network/network_service_network_delegate.h"
#include "services/network/network_service_proxy_delegate.h"
#include "services/network/oblivious_http_request_handler.h"
#include "services/network/prefetch_cache.h"
#include "services/network/prefetch_matching_url_loader_factory.h"
#include "services/network/prefetch_url_loader_client.h"
#include "services/network/proxy_config_service_mojo.h"
#include "services/network/proxy_lookup_request.h"
#include "services/network/proxy_resolving_socket_factory_mojo.h"
#include "services/network/public/cpp/cert_verifier/mojo_cert_verifier.h"
#include "services/network/public/cpp/content_security_policy/content_security_policy.h"
#include "services/network/public/cpp/features.h"
#include "services/network/public/cpp/network_switches.h"
#include "services/network/public/cpp/parsed_headers.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/simple_host_resolver.h"
#include "services/network/public/mojom/clear_data_filter.mojom.h"
#include "services/network/public/mojom/cookie_encryption_provider.mojom.h"
#include "services/network/public/mojom/network_context.mojom.h"
#include "services/network/public/mojom/reporting_service.mojom.h"
#include "services/network/public/mojom/trust_tokens.mojom-forward.h"
#include "services/network/public/mojom/url_loader_factory.mojom.h"
#include "services/network/resolve_host_request.h"
#include "services/network/resource_scheduler/resource_scheduler_client.h"
#include "services/network/restricted_cookie_manager.h"
#include "services/network/session_cleanup_cookie_store.h"
#include "services/network/shared_dictionary/shared_dictionary_constants.h"
#include "services/network/shared_dictionary/shared_dictionary_manager.h"
#include "services/network/shared_dictionary/shared_dictionary_storage.h"
#include "services/network/ssl_config_service_mojo.h"
#include "services/network/throttling/network_conditions.h"
#include "services/network/throttling/throttling_controller.h"
#include "services/network/throttling/throttling_network_transaction_factory.h"
#include "services/network/trust_tokens/expiry_inspecting_record_expiry_delegate.h"
#include "services/network/trust_tokens/in_memory_trust_token_persister.h"
#include "services/network/trust_tokens/pending_trust_token_store.h"
#include "services/network/trust_tokens/sqlite_trust_token_persister.h"
#include "services/network/trust_tokens/suitable_trust_token_origin.h"
#include "services/network/trust_tokens/trust_token_parameterization.h"
#include "services/network/trust_tokens/trust_token_query_answerer.h"
#include "services/network/trust_tokens/trust_token_store.h"
#include "services/network/url_loader.h"
#include "services/network/url_request_context_builder_mojo.h"
#include "services/network/web_transport.h"
#include "url/gurl.h"
#if BUILDFLAG(IS_CT_SUPPORTED)
#include "components/certificate_transparency/chrome_require_ct_delegate.h"
#include "services/network/sct_auditing/sct_auditing_cache.h"
#include "services/network/sct_auditing/sct_auditing_handler.h"
#endif
#if BUILDFLAG(IS_CHROMEOS)
#include "services/network/cert_verifier_with_trust_anchors.h"
#endif
#if BUILDFLAG(ENABLE_WEBSOCKETS)
#include "services/network/websocket_factory.h"
#endif
#if BUILDFLAG(ENABLE_REPORTING)
#include "net/base/http_user_agent_settings.h"
#include "net/extras/sqlite/sqlite_persistent_reporting_and_nel_store.h"
#include "net/network_error_logging/network_error_logging_service.h"
#include "net/reporting/reporting_browsing_data_remover.h"
#include "net/reporting/reporting_policy.h"
#include "net/reporting/reporting_service.h"
#endif
#if BUILDFLAG(ENABLE_MDNS)
#include "services/network/mdns_responder.h"
#endif
#if BUILDFLAG(IS_P2P_ENABLED)
#include "services/network/p2p/socket_manager.h"
#endif
#if BUILDFLAG(IS_ANDROID)
#include "base/android/application_status_listener.h"
#endif
#if BUILDFLAG(ENABLE_DEVICE_BOUND_SESSIONS)
#include "net/device_bound_sessions/session_service.h"
#endif
namespace network {
namespace {
net::CertVerifier* g_cert_verifier_for_testing = …;
class WrappedTestingCertVerifier : public net::CertVerifier { … };
class CookieOSCryptAsyncDelegate : public net::CookieCryptoDelegate { … };
CookieOSCryptAsyncDelegate::CookieOSCryptAsyncDelegate(
mojo::PendingRemote<network::mojom::CookieEncryptionProvider> provider)
: … { … }
bool CookieOSCryptAsyncDelegate::EncryptString(const std::string& plaintext,
std::string* ciphertext) { … }
bool CookieOSCryptAsyncDelegate::DecryptString(const std::string& ciphertext,
std::string* plaintext) { … }
void CookieOSCryptAsyncDelegate::InitCallback(
mojo::Remote<network::mojom::CookieEncryptionProvider> lifetime,
os_crypt_async::Encryptor encryptor) { … }
void CookieOSCryptAsyncDelegate::Init(base::OnceClosure callback) { … }
bool MatchesDomainFilter(mojom::ClearDataFilter_Type filter_type,
std::set<std::string> filter_domains,
const std::string& domain) { … }
base::RepeatingCallback<bool(const std::string& host_name)> MakeDomainFilter(
mojom::ClearDataFilter* filter) { … }
bool MatchesOriginFilter(mojom::ClearDataFilter_Type filter_type,
std::set<std::string> filter_domains,
std::set<url::Origin> filter_origins,
const url::Origin& origin) { … }
base::RepeatingCallback<bool(const url::Origin&)> BuildOriginFilter(
mojom::ClearDataFilterPtr filter) { … }
base::RepeatingCallback<bool(const GURL&)> BuildUrlFilter(
mojom::ClearDataFilterPtr filter) { … }
#if BUILDFLAG(IS_ANDROID)
class NetworkContextApplicationStatusListener
: public base::android::ApplicationStatusListener {
public:
explicit NetworkContextApplicationStatusListener(
disk_cache::ApplicationStatusListenerGetter& get_callback) {
get_callback =
base::BindRepeating(&NetworkContextApplicationStatusListener::
ReturnAppStatusListenerIfAlive,
weak_ptr_factory_.GetWeakPtr());
}
void SetCallback(const ApplicationStateChangeCallback& callback) override {
DCHECK(!callback_);
DCHECK(callback);
callback_ = callback;
}
void Notify(base::android::ApplicationState state) override {
if (callback_)
callback_.Run(state);
}
private:
static base::android::ApplicationStatusListener*
ReturnAppStatusListenerIfAlive(
base::WeakPtr<base::android::ApplicationStatusListener> listener) {
return listener.get();
}
ApplicationStateChangeCallback callback_;
base::WeakPtrFactory<base::android::ApplicationStatusListener>
weak_ptr_factory_{this};
};
#endif
struct TestVerifyCertState { … };
void TestVerifyCertCallback(
std::unique_ptr<TestVerifyCertState> request,
NetworkContext::VerifyCertificateForTestingCallback callback,
int result) { … }
std::string HashesToBase64String(const net::HashValueVector& hashes) { … }
#if BUILDFLAG(IS_CT_SUPPORTED)
class SCTAuditingDelegate : public net::SCTAuditingDelegate { … };
SCTAuditingDelegate::SCTAuditingDelegate(
const base::WeakPtr<NetworkContext>& context)
: … { … }
SCTAuditingDelegate::~SCTAuditingDelegate() = default;
void SCTAuditingDelegate::MaybeEnqueueReport(
const net::HostPortPair& host_port_pair,
const net::X509Certificate* validated_certificate_chain,
const net::SignedCertificateTimestampAndStatusList&
signed_certificate_timestamps) { … }
#endif
bool GetFullDataFilePath(
const mojom::NetworkContextFilePathsPtr& file_paths,
std::optional<base::FilePath> network::mojom::NetworkContextFilePaths::*
field_name,
base::FilePath& full_path) { … }
mojom::URLLoaderFactoryParamsPtr CreateURLLoaderFactoryParamsForPrefetch() { … }
}
constexpr uint32_t NetworkContext::kMaxOutstandingRequestsPerProcess;
NetworkContext::NetworkContextHttpAuthPreferences::
NetworkContextHttpAuthPreferences(NetworkService* network_service)
: … { … }
NetworkContext::NetworkContextHttpAuthPreferences::
~NetworkContextHttpAuthPreferences() = default;
#if BUILDFLAG(IS_LINUX)
bool NetworkContext::NetworkContextHttpAuthPreferences::AllowGssapiLibraryLoad()
const { … }
#endif
NetworkContext::PendingCertVerify::PendingCertVerify() = default;
NetworkContext::PendingCertVerify::~PendingCertVerify() = default;
NetworkContext::NetworkContext(
NetworkService* network_service,
mojo::PendingReceiver<mojom::NetworkContext> receiver,
mojom::NetworkContextParamsPtr params,
OnConnectionCloseCallback on_connection_close_callback)
: … { … }
NetworkContext::NetworkContext(
base::PassKey<NetworkContext> pass_key,
NetworkService* network_service,
mojo::PendingReceiver<mojom::NetworkContext> receiver,
mojom::NetworkContextParamsPtr params,
OnConnectionCloseCallback on_connection_close_callback,
OnURLRequestContextBuilderConfiguredCallback
on_url_request_context_builder_configured)
: … { … }
NetworkContext::NetworkContext(
NetworkService* network_service,
mojo::PendingReceiver<mojom::NetworkContext> receiver,
net::URLRequestContext* url_request_context,
const std::vector<std::string>& cors_exempt_header_list)
: … { … }
NetworkContext::~NetworkContext() { … }
void NetworkContext::OnCookieManagerSettingsChanged() { … }
std::unique_ptr<NetworkContext> NetworkContext::CreateForTesting(
NetworkService* network_service,
mojo::PendingReceiver<mojom::NetworkContext> receiver,
mojom::NetworkContextParamsPtr params,
OnURLRequestContextBuilderConfiguredCallback
on_url_request_context_builder_configured) { … }
void NetworkContext::SetCertVerifierForTesting(
net::CertVerifier* cert_verifier) { … }
void NetworkContext::CreateURLLoaderFactory(
mojo::PendingReceiver<mojom::URLLoaderFactory> receiver,
mojom::URLLoaderFactoryParamsPtr params,
scoped_refptr<ResourceSchedulerClient> resource_scheduler_client) { … }
void NetworkContext::CreateURLLoaderFactoryForCertNetFetcher(
mojo::PendingReceiver<mojom::URLLoaderFactory> factory_receiver) { … }
void NetworkContext::ActivateDohProbes() { … }
void NetworkContext::SetClient(
mojo::PendingRemote<mojom::NetworkContextClient> client) { … }
void NetworkContext::CreateURLLoaderFactory(
mojo::PendingReceiver<mojom::URLLoaderFactory> receiver,
mojom::URLLoaderFactoryParamsPtr params) { … }
void NetworkContext::ResetURLLoaderFactories() { … }
void NetworkContext::GetViaObliviousHttp(
mojom::ObliviousHttpRequestPtr request,
mojo::PendingRemote<mojom::ObliviousHttpClient> client) { … }
void NetworkContext::GetCookieManager(
mojo::PendingReceiver<mojom::CookieManager> receiver) { … }
void NetworkContext::GetRestrictedCookieManager(
mojo::PendingReceiver<mojom::RestrictedCookieManager> receiver,
mojom::RestrictedCookieManagerRole role,
const url::Origin& origin,
const net::IsolationInfo& isolation_info,
const net::CookieSettingOverrides& cookie_setting_overrides,
mojo::PendingRemote<mojom::CookieAccessObserver> cookie_observer) { … }
void NetworkContext::OnRCMDisconnect(
const network::RestrictedCookieManager* rcm) { … }
void NetworkContext::OnComputedFirstPartySetMetadata(
mojo::PendingReceiver<mojom::RestrictedCookieManager> receiver,
mojom::RestrictedCookieManagerRole role,
const url::Origin& origin,
const net::IsolationInfo& isolation_info,
const net::CookieSettingOverrides& cookie_setting_overrides,
mojo::PendingRemote<mojom::CookieAccessObserver> cookie_observer,
net::FirstPartySetMetadata first_party_set_metadata) { … }
void NetworkContext::GetTrustTokenQueryAnswerer(
mojo::PendingReceiver<mojom::TrustTokenQueryAnswerer> receiver,
const url::Origin& top_frame_origin) { … }
void NetworkContext::GetStoredTrustTokenCounts(
GetStoredTrustTokenCountsCallback callback) { … }
void NetworkContext::GetPrivateStateTokenRedemptionRecords(
GetPrivateStateTokenRedemptionRecordsCallback callback) { … }
void NetworkContext::DeleteStoredTrustTokens(
const url::Origin& issuer,
DeleteStoredTrustTokensCallback callback) { … }
void NetworkContext::SetBlockTrustTokens(bool block) { … }
void NetworkContext::OnProxyLookupComplete(
ProxyLookupRequest* proxy_lookup_request) { … }
void NetworkContext::DisableQuic() { … }
void NetworkContext::DestroyURLLoaderFactory(
PrefetchMatchingURLLoaderFactory* url_loader_factory) { … }
void NetworkContext::Remove(WebTransport* transport) { … }
void NetworkContext::LoaderCreated(uint32_t process_id) { … }
void NetworkContext::LoaderDestroyed(uint32_t process_id) { … }
bool NetworkContext::CanCreateLoader(uint32_t process_id) { … }
size_t NetworkContext::GetNumOutstandingResolveHostRequestsForTesting() const { … }
bool NetworkContext::SkipReportingPermissionCheck() const { … }
void NetworkContext::ClearTrustTokenData(mojom::ClearDataFilterPtr filter,
base::OnceClosure done) { … }
void NetworkContext::ClearTrustTokenSessionOnlyData(
ClearTrustTokenSessionOnlyDataCallback callback) { … }
void NetworkContext::ClearNetworkingHistoryBetween(
base::Time start_time,
base::Time end_time,
base::OnceClosure completion_callback) { … }
void NetworkContext::ClearHttpCache(base::Time start_time,
base::Time end_time,
mojom::ClearDataFilterPtr filter,
ClearHttpCacheCallback callback) { … }
void NetworkContext::ComputeHttpCacheSize(
base::Time start_time,
base::Time end_time,
ComputeHttpCacheSizeCallback callback) { … }
void NetworkContext::ClearCorsPreflightCache(
mojom::ClearDataFilterPtr filter,
ClearCorsPreflightCacheCallback callback) { … }
void NetworkContext::ClearHostCache(mojom::ClearDataFilterPtr filter,
ClearHostCacheCallback callback) { … }
void NetworkContext::ClearHttpAuthCache(base::Time start_time,
base::Time end_time,
mojom::ClearDataFilterPtr filter,
ClearHttpAuthCacheCallback callback) { … }
void NetworkContext::ClearReportingCacheReports(
mojom::ClearDataFilterPtr filter,
ClearReportingCacheReportsCallback callback) { … }
void NetworkContext::ClearReportingCacheClients(
mojom::ClearDataFilterPtr filter,
ClearReportingCacheClientsCallback callback) { … }
void NetworkContext::ClearNetworkErrorLogging(
mojom::ClearDataFilterPtr filter,
ClearNetworkErrorLoggingCallback callback) { … }
void NetworkContext::SetDocumentReportingEndpoints(
const base::UnguessableToken& reporting_source,
const url::Origin& origin,
const net::IsolationInfo& isolation_info,
const base::flat_map<std::string, std::string>& endpoints) { … }
void NetworkContext::SetEnterpriseReportingEndpoints(
const base::flat_map<std::string, GURL>& endpoints) { … }
void NetworkContext::SendReportsAndRemoveSource(
const base::UnguessableToken& reporting_source) { … }
void NetworkContext::QueueReport(
const std::string& type,
const std::string& group,
const GURL& url,
const std::optional<base::UnguessableToken>& reporting_source,
const net::NetworkAnonymizationKey& network_anonymization_key,
base::Value::Dict body) { … }
void NetworkContext::QueueEnterpriseReport(const std::string& type,
const std::string& group,
const GURL& url,
base::Value::Dict body) { … }
void NetworkContext::QueueReportInternal(
const std::string& type,
const std::string& group,
const GURL& url,
const std::optional<base::UnguessableToken>& reporting_source,
const net::NetworkAnonymizationKey& network_anonymization_key,
base::Value::Dict body,
net::ReportingTargetType target_type) { … }
void NetworkContext::QueueSignedExchangeReport(
mojom::SignedExchangeReportPtr report,
const net::NetworkAnonymizationKey& network_anonymization_key) { … }
#if BUILDFLAG(ENABLE_REPORTING)
void NetworkContext::AddReportingApiObserver(
mojo::PendingRemote<network::mojom::ReportingApiObserver> observer) { … }
void NetworkContext::OnReportAdded(const net::ReportingReport* service_report) { … }
void NetworkContext::OnEndpointsUpdatedForOrigin(
const std::vector<net::ReportingEndpoint>& endpoints) { … }
void NetworkContext::OnReportUpdated(
const net::ReportingReport* service_report) { … }
void NetworkContext::OnReportingObserverDisconnect(
mojo::RemoteSetElementId ) { … }
#endif
void NetworkContext::ClearDomainReliability(
mojom::ClearDataFilterPtr filter,
DomainReliabilityClearMode mode,
ClearDomainReliabilityCallback callback) { … }
void NetworkContext::CloseAllConnections(CloseAllConnectionsCallback callback) { … }
void NetworkContext::CloseIdleConnections(
CloseIdleConnectionsCallback callback) { … }
void NetworkContext::SetNetworkConditions(
const base::UnguessableToken& throttling_profile_id,
mojom::NetworkConditionsPtr conditions) { … }
void NetworkContext::SetAcceptLanguage(const std::string& new_accept_language) { … }
void NetworkContext::SetEnableReferrers(bool enable_referrers) { … }
#if BUILDFLAG(IS_CT_SUPPORTED)
void NetworkContext::SetCTPolicy(mojom::CTPolicyPtr ct_policy) { … }
int NetworkContext::CheckCTRequirementsForSignedExchange(
net::CertVerifyResult& cert_verify_result,
const net::HostPortPair& host_port_pair) { … }
void NetworkContext::MaybeEnqueueSCTReport(
const net::HostPortPair& host_port_pair,
const net::X509Certificate* validated_certificate_chain,
const net::SignedCertificateTimestampAndStatusList&
signed_certificate_timestamps) { … }
void NetworkContext::SetSCTAuditingMode(mojom::SCTAuditingMode mode) { … }
void NetworkContext::CanSendSCTAuditingReport(
base::OnceCallback<void(bool)> callback) { … }
void NetworkContext::OnNewSCTAuditingReportSent() { … }
#endif
void NetworkContext::CreateUDPSocket(
mojo::PendingReceiver<mojom::UDPSocket> receiver,
mojo::PendingRemote<mojom::UDPSocketListener> listener) { … }
void NetworkContext::CreateRestrictedUDPSocket(
const net::IPEndPoint& addr,
mojom::RestrictedUDPSocketMode mode,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
mojom::RestrictedUDPSocketParamsPtr params,
mojo::PendingReceiver<mojom::RestrictedUDPSocket> receiver,
mojo::PendingRemote<mojom::UDPSocketListener> listener,
CreateRestrictedUDPSocketCallback callback) { … }
void NetworkContext::CreateTCPServerSocket(
const net::IPEndPoint& local_addr,
mojom::TCPServerSocketOptionsPtr options,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
mojo::PendingReceiver<mojom::TCPServerSocket> receiver,
CreateTCPServerSocketCallback callback) { … }
void NetworkContext::CreateTCPConnectedSocket(
const std::optional<net::IPEndPoint>& local_addr,
const net::AddressList& remote_addr_list,
mojom::TCPConnectedSocketOptionsPtr tcp_connected_socket_options,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
mojo::PendingReceiver<mojom::TCPConnectedSocket> receiver,
mojo::PendingRemote<mojom::SocketObserver> observer,
CreateTCPConnectedSocketCallback callback) { … }
void NetworkContext::CreateTCPBoundSocket(
const net::IPEndPoint& local_addr,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
mojo::PendingReceiver<mojom::TCPBoundSocket> receiver,
CreateTCPBoundSocketCallback callback) { … }
void NetworkContext::CreateProxyResolvingSocketFactory(
mojo::PendingReceiver<mojom::ProxyResolvingSocketFactory> receiver) { … }
void NetworkContext::LookUpProxyForURL(
const GURL& url,
const net::NetworkAnonymizationKey& network_anonyization_key,
mojo::PendingRemote<mojom::ProxyLookupClient> proxy_lookup_client) { … }
void NetworkContext::ForceReloadProxyConfig(
ForceReloadProxyConfigCallback callback) { … }
void NetworkContext::ClearBadProxiesCache(
ClearBadProxiesCacheCallback callback) { … }
void NetworkContext::CreateWebSocket(
const GURL& url,
const std::vector<std::string>& requested_protocols,
const net::SiteForCookies& site_for_cookies,
net::StorageAccessApiStatus storage_access_api_status,
const net::IsolationInfo& isolation_info,
std::vector<mojom::HttpHeaderPtr> additional_headers,
int32_t process_id,
const url::Origin& origin,
uint32_t options,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation,
mojo::PendingRemote<mojom::WebSocketHandshakeClient> handshake_client,
mojo::PendingRemote<mojom::URLLoaderNetworkServiceObserver>
url_loader_network_observer,
mojo::PendingRemote<mojom::WebSocketAuthenticationHandler> auth_handler,
mojo::PendingRemote<mojom::TrustedHeaderClient> header_client,
const std::optional<base::UnguessableToken>& throttling_profile_id) { … }
void NetworkContext::CreateWebTransport(
const GURL& url,
const url::Origin& origin,
const net::NetworkAnonymizationKey& key,
std::vector<mojom::WebTransportCertificateFingerprintPtr> fingerprints,
mojo::PendingRemote<mojom::WebTransportHandshakeClient>
pending_handshake_client) { … }
void NetworkContext::CreateNetLogExporter(
mojo::PendingReceiver<mojom::NetLogExporter> receiver) { … }
void NetworkContext::ResolveHost(
mojom::HostResolverHostPtr host,
const net::NetworkAnonymizationKey& network_anonymization_key,
mojom::ResolveHostParametersPtr optional_parameters,
mojo::PendingRemote<mojom::ResolveHostClient> response_client) { … }
void NetworkContext::CreateHostResolver(
const std::optional<net::DnsConfigOverrides>& config_overrides,
mojo::PendingReceiver<mojom::HostResolver> receiver) { … }
void NetworkContext::VerifyCertForSignedExchange(
const scoped_refptr<net::X509Certificate>& certificate,
const GURL& url,
const std::string& ocsp_result,
const std::string& sct_list,
VerifyCertForSignedExchangeCallback callback) { … }
void NetworkContext::NotifyExternalCacheHit(const GURL& url,
const std::string& http_method,
const net::NetworkIsolationKey& key,
bool include_credentials) { … }
void NetworkContext::SetCorsOriginAccessListsForOrigin(
const url::Origin& source_origin,
std::vector<mojom::CorsOriginPatternPtr> allow_patterns,
std::vector<mojom::CorsOriginPatternPtr> block_patterns,
SetCorsOriginAccessListsForOriginCallback callback) { … }
void NetworkContext::AddHSTS(const std::string& host,
base::Time expiry,
bool include_subdomains,
AddHSTSCallback callback) { … }
void NetworkContext::IsHSTSActiveForHost(const std::string& host,
IsHSTSActiveForHostCallback callback) { … }
void NetworkContext::GetHSTSState(const std::string& domain,
GetHSTSStateCallback callback) { … }
void NetworkContext::DeleteDynamicDataForHost(
const std::string& host,
DeleteDynamicDataForHostCallback callback) { … }
void NetworkContext::EnableStaticKeyPinningForTesting(
EnableStaticKeyPinningForTestingCallback callback) { … }
void NetworkContext::VerifyCertificateForTesting(
const scoped_refptr<net::X509Certificate>& certificate,
const std::string& hostname,
const std::string& ocsp_response,
const std::string& sct_list,
VerifyCertificateForTestingCallback callback) { … }
void NetworkContext::PreconnectSockets(
uint32_t num_streams,
const GURL& original_url,
mojom::CredentialsMode credentials_mode,
const net::NetworkAnonymizationKey& network_anonymization_key) { … }
#if BUILDFLAG(IS_P2P_ENABLED)
void NetworkContext::CreateP2PSocketManager(
const net::NetworkAnonymizationKey& network_anonymization_key,
mojo::PendingRemote<mojom::P2PTrustedSocketManagerClient> client,
mojo::PendingReceiver<mojom::P2PTrustedSocketManager>
trusted_socket_manager,
mojo::PendingReceiver<mojom::P2PSocketManager> socket_manager_receiver) { … }
#endif
void NetworkContext::CreateMdnsResponder(
mojo::PendingReceiver<mojom::MdnsResponder> responder_receiver) { … }
void NetworkContext::AddDomainReliabilityContextForTesting(
const url::Origin& origin,
const GURL& upload_url,
AddDomainReliabilityContextForTestingCallback callback) { … }
void NetworkContext::ForceDomainReliabilityUploadsForTesting(
ForceDomainReliabilityUploadsForTestingCallback callback) { … }
void NetworkContext::SetSplitAuthCacheByNetworkAnonymizationKey(
bool split_auth_cache_by_network_anonymization_key) { … }
void NetworkContext::SaveHttpAuthCacheProxyEntries(
SaveHttpAuthCacheProxyEntriesCallback callback) { … }
void NetworkContext::LoadHttpAuthCacheProxyEntries(
const base::UnguessableToken& cache_key,
LoadHttpAuthCacheProxyEntriesCallback callback) { … }
void NetworkContext::AddAuthCacheEntry(
const net::AuthChallengeInfo& challenge,
const net::NetworkAnonymizationKey& network_anonymization_key,
const net::AuthCredentials& credentials,
AddAuthCacheEntryCallback callback) { … }
void NetworkContext::SetCorsNonWildcardRequestHeadersSupport(bool value) { … }
void NetworkContext::LookupServerBasicAuthCredentials(
const GURL& url,
const net::NetworkAnonymizationKey& network_anonymization_key,
LookupServerBasicAuthCredentialsCallback callback) { … }
#if BUILDFLAG(IS_CHROMEOS_ASH)
void NetworkContext::LookupProxyAuthCredentials(
const net::ProxyServer& proxy_server,
const std::string& auth_scheme,
const std::string& realm,
LookupProxyAuthCredentialsCallback callback) {
net::HttpAuth::Scheme net_scheme =
net::HttpAuth::StringToScheme(base::ToLowerASCII(auth_scheme));
if (net_scheme == net::HttpAuth::Scheme::AUTH_SCHEME_MAX) {
std::move(callback).Run(std::nullopt);
return;
}
net::HttpAuthCache* http_auth_cache =
url_request_context_->http_transaction_factory()
->GetSession()
->http_auth_cache();
const char* scheme =
proxy_server.is_secure_http_like() ? "https://" : "http://";
url::SchemeHostPort scheme_host_port(
GURL(scheme + proxy_server.host_port_pair().ToString()));
if (!scheme_host_port.IsValid()) {
std::move(callback).Run(std::nullopt);
return;
}
net::HttpAuthCache::Entry* entry = http_auth_cache->Lookup(
scheme_host_port, net::HttpAuth::AUTH_PROXY, realm, net_scheme,
net::NetworkAnonymizationKey());
if (entry)
std::move(callback).Run(entry->credentials());
else
std::move(callback).Run(std::nullopt);
}
#endif
const net::HttpAuthPreferences* NetworkContext::GetHttpAuthPreferences() const { … }
size_t NetworkContext::NumOpenWebTransports() const { … }
bool NetworkContext::AllURLLoaderFactoriesAreBoundToNetworkForTesting(
net::handles::NetworkHandle target_network) const { … }
void NetworkContext::OnHttpAuthDynamicParamsChanged(
const mojom::HttpAuthDynamicParams*
http_auth_dynamic_network_service_params) { … }
URLRequestContextOwner NetworkContext::MakeURLRequestContext(
mojo::PendingRemote<mojom::URLLoaderFactory>
url_loader_factory_for_cert_net_fetcher,
scoped_refptr<SessionCleanupCookieStore> session_cleanup_cookie_store,
OnURLRequestContextBuilderConfiguredCallback
on_url_request_context_builder_configured,
net::handles::NetworkHandle bound_network) { … }
scoped_refptr<SessionCleanupCookieStore>
NetworkContext::MakeSessionCleanupCookieStore() const { … }
void NetworkContext::OnHttpCacheCleared(ClearHttpCacheCallback callback,
HttpCacheDataRemover* remover) { … }
void NetworkContext::OnHostResolverShutdown(HostResolver* resolver) { … }
void NetworkContext::OnHttpCacheSizeComputed(
ComputeHttpCacheSizeCallback callback,
HttpCacheDataCounter* counter,
bool is_upper_limit,
int64_t result_or_error) { … }
void NetworkContext::OnConnectionError() { … }
GURL NetworkContext::GetHSTSRedirect(const GURL& original_url) { … }
#if BUILDFLAG(IS_P2P_ENABLED)
void NetworkContext::DestroySocketManager(P2PSocketManager* socket_manager) { … }
#endif
void NetworkContext::CanUploadDomainReliability(
const url::Origin& origin,
base::OnceCallback<void(bool)> callback) { … }
void NetworkContext::OnVerifyCertForSignedExchangeComplete(
uint64_t cert_verify_id,
int result) { … }
#if BUILDFLAG(IS_CHROMEOS)
void NetworkContext::TrustAnchorUsed() {
client_->OnTrustAnchorUsed();
}
#endif
#if BUILDFLAG(IS_DIRECTORY_TRANSFER_REQUIRED)
void NetworkContext::EnsureMounted(network::TransferableDirectory* directory) {
if (directory->NeedsMount()) {
dismount_closures_.push_back(directory->Mount());
}
}
#endif
void NetworkContext::InitializeCorsParams() { … }
void NetworkContext::FinishConstructingTrustTokenStore(
std::unique_ptr<SQLiteTrustTokenPersister> persister) { … }
bool NetworkContext::IsAllowedToUseAllHttpAuthSchemes(
const url::SchemeHostPort& scheme_host_port) { … }
void NetworkContext::CreateTrustedUrlLoaderFactoryForNetworkService(
mojo::PendingReceiver<mojom::URLLoaderFactory>
url_loader_factory_pending_receiver) { … }
void NetworkContext::SetSharedDictionaryCacheMaxSize(uint64_t cache_max_size) { … }
void NetworkContext::ClearSharedDictionaryCache(
base::Time start_time,
base::Time end_time,
mojom::ClearDataFilterPtr filter,
ClearSharedDictionaryCacheCallback callback) { … }
void NetworkContext::ClearSharedDictionaryCacheForIsolationKey(
const net::SharedDictionaryIsolationKey& isolation_key,
ClearSharedDictionaryCacheForIsolationKeyCallback callback) { … }
void NetworkContext::GetSharedDictionaryUsageInfo(
GetSharedDictionaryUsageInfoCallback callback) { … }
void NetworkContext::GetSharedDictionaryInfo(
const net::SharedDictionaryIsolationKey& isolation_key,
GetSharedDictionaryInfoCallback callback) { … }
void NetworkContext::GetSharedDictionaryOriginsBetween(
base::Time start_time,
base::Time end_time,
GetSharedDictionaryOriginsBetweenCallback callback) { … }
void NetworkContext::PreloadSharedDictionaryInfoForDocument(
const std::vector<GURL>& urls,
mojo::PendingReceiver<mojom::PreloadedSharedDictionaryInfoHandle>
preload_handle) { … }
void NetworkContext::HasPreloadedSharedDictionaryInfoForTesting(
HasPreloadedSharedDictionaryInfoForTestingCallback callback) { … }
void NetworkContext::ResourceSchedulerClientVisibilityChanged(
const base::UnguessableToken& client_token,
bool visible) { … }
void NetworkContext::FlushCachedClientCertIfNeeded(
const net::HostPortPair& host,
const scoped_refptr<net::X509Certificate>& certificate) { … }
void NetworkContext::FlushMatchingCachedClientCert(
const scoped_refptr<net::X509Certificate>& certificate) { … }
void NetworkContext::SetCookieDeprecationLabel(
const std::optional<std::string>& label) { … }
void NetworkContext::RevokeNetworkForNonces(
const std::vector<base::UnguessableToken>& nonces,
RevokeNetworkForNoncesCallback callback) { … }
void NetworkContext::ClearNonces(
const std::vector<base::UnguessableToken>& nonces) { … }
void NetworkContext::ExemptUrlFromNetworkRevocationForNonce(
const GURL& exempted_url,
const base::UnguessableToken& nonce,
ExemptUrlFromNetworkRevocationForNonceCallback callback) { … }
void NetworkContext::Prefetch(
int32_t request_id,
uint32_t options,
const ResourceRequest& request,
const net::MutableNetworkTrafficAnnotationTag& traffic_annotation) { … }
void NetworkContext::GetBoundNetworkForTesting(
GetBoundNetworkForTestingCallback callback) { … }
bool NetworkContext::IsNetworkForNonceAndUrlAllowed(
const base::UnguessableToken& nonce,
const GURL& url) const { … }
void NetworkContext::InitializePrefetchURLLoaderFactory() { … }
}