Rebecca Chang Swee Fun 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
..
cors 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
disk_cache 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
first_party_sets 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
origin_policy 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
p2p 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
public 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
resource_scheduler 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
sct_auditing 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
test 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
throttling 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
trust_tokens 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
web_bundle 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
BUILD.gn 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
DEPS 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
DIR_METADATA 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
OWNERS 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
README.md 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cert_verifier_with_trust_anchors.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cert_verifier_with_trust_anchors.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cert_verifier_with_trust_anchors_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
chunked_data_pipe_upload_data_stream.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
chunked_data_pipe_upload_data_stream.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
chunked_data_pipe_upload_data_stream_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
conditional_cache_deletion_helper.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
conditional_cache_deletion_helper.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
content_security_policy_fuzzer.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_access_delegate_impl.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_access_delegate_impl.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_manager.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_manager.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_manager_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_settings.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_settings.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cookie_settings_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
crl_set_distributor.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
crl_set_distributor.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
cross_origin_read_blocking_explainer.md 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ct_log_list_distributor.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ct_log_list_distributor.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ct_log_list_distributor_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
data_pipe_element_reader.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
data_pipe_element_reader.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
data_pipe_element_reader_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
dhcp_pac_file_fetcher_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
dhcp_pac_file_fetcher_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
dhcp_pac_file_fetcher_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
dns_config_change_manager.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
dns_config_change_manager.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
dns_config_change_manager_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
expect_ct_reporter.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
expect_ct_reporter.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
expect_ct_reporter_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
host_resolver.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
host_resolver.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
host_resolver_mdns_listener.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
host_resolver_mdns_listener.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
host_resolver_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_auth_cache_copier.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_auth_cache_copier.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_cache_data_counter.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_cache_data_counter.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_cache_data_counter_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_cache_data_remover.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_cache_data_remover.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_cache_data_remover_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_server_properties_pref_delegate.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
http_server_properties_pref_delegate.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ignore_errors_cert_verifier.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ignore_errors_cert_verifier.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ignore_errors_cert_verifier_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
is_browser_initiated.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
keepalive_statistics_recorder.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
keepalive_statistics_recorder.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
keepalive_statistics_recorder_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mdns_responder.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mdns_responder.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mdns_responder_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mock_mojo_dhcp_wpad_url_client.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mock_mojo_dhcp_wpad_url_client.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mojo_host_resolver_impl.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mojo_host_resolver_impl.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mojo_host_resolver_impl_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mojo_socket_test_util.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
mojo_socket_test_util.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
net_log_exporter.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
net_log_exporter.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
net_log_proxy_sink.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
net_log_proxy_sink.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
net_log_proxy_sink_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_change_manager.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_change_manager.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_change_manager_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_context.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_context.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_context_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_qualities_pref_delegate.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_qualities_pref_delegate.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_qualities_pref_delegate_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_quality_estimator_manager.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_quality_estimator_manager.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_quality_estimator_manager_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_sandbox_hook_linux.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_sandbox_hook_linux.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service_network_delegate.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service_network_delegate.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service_proxy_delegate.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service_proxy_delegate.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service_proxy_delegate_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
network_service_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
pending_callback_chain.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
pending_callback_chain.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
pending_callback_chain_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
private_network_access_check.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
private_network_access_check.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
private_network_access_check_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_auto_config_library.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_auto_config_library.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_auto_config_library_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_config_service_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_config_service_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_config_service_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_lookup_request.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_lookup_request.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolver_factory_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolver_factory_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolver_factory_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_client_socket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_client_socket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_client_socket_factory.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_client_socket_factory.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_client_socket_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_socket_factory_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_socket_factory_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_socket_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_socket_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_resolving_socket_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_service_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_service_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
proxy_service_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
radio_monitor_android.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
radio_monitor_android.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
resolve_host_request.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
resolve_host_request.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
restricted_cookie_manager.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
restricted_cookie_manager.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
restricted_cookie_manager_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
sec_header_helpers.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
sec_header_helpers.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
sec_header_helpers_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
session_cleanup_cookie_store.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
session_cleanup_cookie_store.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
session_cleanup_cookie_store_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
socket_data_pump.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
socket_data_pump.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
socket_data_pump_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
socket_factory.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
socket_factory.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ssl_config_service_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ssl_config_service_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ssl_config_service_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ssl_config_type_converter.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
ssl_config_type_converter.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_bound_socket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_bound_socket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_bound_socket_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_connected_socket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_connected_socket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_server_socket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_server_socket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tcp_socket_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
test_chunked_data_pipe_getter.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
test_chunked_data_pipe_getter.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
test_mojo_proxy_resolver_factory.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
test_mojo_proxy_resolver_factory.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tls_client_socket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tls_client_socket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tls_client_socket_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tls_socket_factory.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
tls_socket_factory.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
transitional_url_loader_factory_owner.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
transitional_url_loader_factory_owner.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
transitional_url_loader_factory_owner_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
udp_socket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
udp_socket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
udp_socket_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
upload_progress_tracker.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
upload_progress_tracker.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
upload_progress_tracker_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader.md 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader_context.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader_factory.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader_factory.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_loader_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_request_context_builder_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_request_context_builder_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_request_context_builder_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_request_context_owner.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
url_request_context_owner.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
web_transport.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
web_transport.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
web_transport_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_factory.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_factory.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_interceptor.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_interceptor.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_interceptor_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_throttler.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_throttler.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
websocket_throttler_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
windows_system_proxy_resolver_mojo.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
windows_system_proxy_resolver_mojo.h 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago
windows_system_proxy_resolver_mojo_unittest.cc 213e2ca447 Publish chromium based on 102.0.5005.115 1 year ago

README.md

Network Service

[TOC]

This is a service for networking. It’s meant to be oblivious to Chrome’s features. Some design goals

  • this only contains features that go over the network. e.g. no file loading, data URLs etc…
  • only the lowest-level of networking should be here. e.g. http, sockets, web sockets. Anything that is built on top of this should be in higher layers.
  • higher level web platform and browser features should be built outside of this code. Safe browsing, Service Worker, extensions, devtools etc… should not have hooks here. The only exception is when it’s impossible for these features to function without some hooks in the network service. In that case, we add the minimal code required. Some examples included traffic shaping for devtools, CORB blocking, and CORS.
  • every PostTask, thread hop and process hop (IPC) should be counted carefully as they introduce delays which could harm this performance critical code.
  • NetworkContext and NetworkService are trusted interfaces that aren’t meant to be sent to the renderer. Only the browser should have access to them.

See https://bugs.chromium.org/p/chromium/issues/detail?id=598073

See the design doc https://docs.google.com/document/d/1wAHLw9h7gGuqJNCgG1mP1BmLtCGfZ2pys-PdZQ1vg7M/edit?pref=2&pli=1#

Related docs

Where does the network service run?

Note: For more background about this section, see also Multi-process Architecture for an overview of the processes in Chromium.

The network service is designed as a Mojo service that in general doesn’t need to be aware of which thread/process it runs on. The browser process launches the network service and decides whether to run it inside the browser process (in-process) or in a dedicated utility process (out-of-process).

The out-of-process configuration is preferred for isolation and stability, and is the default on most platforms. The in-process configuration is the default on Android because of some unresolved issues; see https://crbug.com/1049008. It can also be useful for debugging; for example, it’s used in Chromium’s --single-process mode.

In the out-of-process case: The network service runs on the IO thread of the utility process (see this comment in content/utility/services.cc for why). The utility process houses only the network service, so there is nothing running on its main thread.

In the in-process case: The network service runs on its own dedicated thread in the browser process. Exception: on Chrome OS, it currently runs on the IO thread; see https://crbug.com/1086738.

How does the network service start?

In the out-of-process case: The browser creates the utility process and asks it to launch the network service. For the browser-side code, see GetNetworkService() in content/browser/network_service_instance_impl.cc. For the utility process code, see GetIOThreadServiceFactory in content/utility/services.cc. This calls RunNetworkService() which creates the network::NetworkService instance. For more background about Chromium’s services architecture, see Mojo and Services.

In the in-process case: The browser process starts the network service. See CreateInProcessNetworkService() in content/browser/network_service_instance_impl.cc, which posts a task to create the network::NetworkService instance.

What happens if the network service crashes?

In the out-of-process case: If the network service crashes, it gets restarted in a new utility process. The goal is for the failure to be mostly recoverable. It is important to note that any URLLoaderFactories bound to the Network Service before it crashes become disconnected, and will no longer continue to work. Therefore it is useful to establish reconnection logic if it is detected that the URLLoaderFactory is no longer connected.

For example, a navigation request’s URLLoaderFactory comes from StoragePartitionImpl::GetURLLoaderFactoryForBrowserProcessInternal in the browser process. This method has logic to detect if the URLLoaderFactory it would normally return is disconnected. In that case, it creates a new one which is used for all future navigation requests. Since most URLLoaderFactory users use factories that are not created out-of-band, and are provided by some service, reconnection logic is often implemented for free, and is usually not something to worry about.

In the in-process case: If the network service crashes in this case, of course, the entire browser crashes. This is one reason for the goal to always run it out-of-process.

Buildbot

The Network Service Linux buildbot runs browser tests with the network service in non-default but supported configurations. Ideally this bot would be on the CQ, but it is expensive and would affect CQ time, so it’s on the main waterfall but not the CQ.

Its steps are:

  • network_service_in_process_browser_tests: Runs browser_tests with the network service in-process (--enable-features=NetworkServiceInProcess). This step is important because Chrome on Android runs with the network service in-process by default (https://crbug.com/1049008). However, browser_tests are not well-supported on Android (https://crbug.com/611756), so we run them on this Linux bot.
  • network_service_in_process_content_browsertests: Same as above but for content_browsertests. We might consider removing this from the bot, since the Android bots run content_browsertests which should give enough coverage.
  • network_service_web_request_proxy_browser_tests: Runs browser_tests while forcing the «network request proxying» code path that is taken when the browser has an extension installed that uses the Web Request API (--enable-features=ForceWebRequestProxyForTest). This step has caught bugs that would be Stable Release Blockers, so it’s important to keep it.