• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2013 The Chromium Authors
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import("//build/buildflag_header.gni")
6import("//build/config/cast.gni")
7import("//build/config/chromeos/ui_mode.gni")
8import("//build/config/compiler/compiler.gni")
9import("//build/config/cronet/config.gni")
10import("//build/config/features.gni")
11import("//crypto/features.gni")
12import("//net/features.gni")
13import("//testing/libfuzzer/fuzzer_test.gni")
14import("//testing/test.gni")
15import("//third_party/icu/config.gni")
16import("//third_party/protobuf/proto_library.gni")
17import("//tools/grit/grit_rule.gni")
18import("//url/features.gni")
19
20if (is_android) {
21  import("//build/config/android/config.gni")
22  import("//build/config/android/rules.gni")
23  import("//third_party/jni_zero/jni_zero.gni")
24} else if (is_mac) {
25  import("//build/config/mac/mac_sdk.gni")
26} else if (is_ios) {
27  import("//build/config/ios/bundle_data_from_filelist.gni")
28}
29
30# Android:
31# The way the cache uses mmap() is inefficient on some Android devices. If
32# this flag is set, we hackily avoid using mmap() in the disk cache. We are
33# pretty confident that mmap-ing the index would not hurt any existing x86
34# android devices, but we cannot be so sure about the variety of ARM devices.
35# So enable it for x86 only for now.
36# Fuchsia:
37# Writable mmap isn't supported on Fuchsia, so it should be bypassed.
38posix_bypass_mmap = (is_android && current_cpu != "x86") || is_fuchsia
39
40enable_built_in_dns = use_blink
41
42# TODO(droger): Support client auth on iOS. See http://crbug.com/145954).
43#
44# Historically this was disabled because client auth required
45# platform-specific code deep in //net. Nowadays, this is abstracted away and
46# we could enable the interfaces on iOS for platform-independence. However,
47# merely enabling them changes our behavior from automatically proceeding
48# with no client certificate to raising
49# `URLRequest::Delegate::OnCertificateRequested`. Callers would need to be
50# updated to apply that behavior manually.
51#
52# If fixing this, re-enable the tests in ssl_client_socket_unittest.cc and
53# ssl_server_socket_unittest.cc which are disabled on iOS.
54enable_client_certificates = !is_ios || (use_blink && !is_cronet_build)
55
56# Unix sockets are not supported on iOS.
57enable_unix_sockets = is_posix && !is_ios
58
59# x86/x64 cast_shell builds run on regular trybots and can use python runtime
60# and remote test server. ARM cast_shell builds don't have python runtime.
61is_arm_cast_shell_build = (is_castos || is_cast_android) &&
62                          (current_cpu == "arm" || current_cpu == "arm64")
63
64# Python works only on Linux, MacOS and Windows so exclude the others,
65# chromecast, android, fuchsia, ios.
66enable_python_utils =
67    !is_arm_cast_shell_build && !is_android && !is_fuchsia && !is_ios
68
69# Platforms that cannot use python_utils (like Android but see full
70# list above) will instead use a remote server.
71use_remote_test_server =
72    !enable_python_utils && (enable_websockets || (is_cronet_build && !is_ios))
73
74# Whether //net should use an external GSSAPI library for implementing HTTP
75# Negotiate authentication. All platforms for which use_kerberos is true should
76# have some external implementation since //net doesn't have intrinsic support
77# for Kerberos. This implementation is an external GSSAPI library on all
78# platforms except on:
79#
80#    Windows : Uses SSPI for Negotiate authentication.
81#
82#    Android : Uses an external authenticator. See
83#              https://www.chromium.org/developers/design-documents/http-authentication/writing-a-spnego-authenticator-for-chrome-on-android
84use_external_gssapi = use_kerberos && !is_android && !is_win
85
86config("net_test_config") {
87  if (use_remote_test_server) {
88    defines = [ "USE_REMOTE_TEST_SERVER" ]
89  }
90}
91
92buildflag_header("buildflags") {
93  header = "net_buildflags.h"
94  flags = [
95    "POSIX_BYPASS_MMAP=$posix_bypass_mmap",
96    "DISABLE_FILE_SUPPORT=$disable_file_support",
97    "ENABLE_MDNS=$enable_mdns",
98    "ENABLE_REPORTING=$enable_reporting",
99    "ENABLE_WEBSOCKETS=$enable_websockets",
100    "ENABLE_CLIENT_CERTIFICATES=$enable_client_certificates",
101    "INCLUDE_TRANSPORT_SECURITY_STATE_PRELOAD_LIST=$include_transport_security_state_preload_list",
102    "USE_KERBEROS=$use_kerberos",
103    "USE_EXTERNAL_GSSAPI=$use_external_gssapi",
104    "CHROME_ROOT_STORE_OPTIONAL=$chrome_root_store_optional",
105    "CHROME_ROOT_STORE_ONLY=$chrome_root_store_only",
106    "CHROME_ROOT_STORE_SUPPORTED=$chrome_root_store_supported",
107  ]
108}
109
110config("net_internal_config") {
111  defines = [ "NET_IMPLEMENTATION" ]
112
113  if (enable_built_in_dns) {
114    defines += [ "ENABLE_BUILT_IN_DNS" ]
115  }
116}
117
118net_configs = [
119  ":net_internal_config",
120  "//build/config:precompiled_headers",
121
122  "//build/config/compiler:wexit_time_destructors",
123]
124
125if (is_linux || is_chromeos) {
126  net_configs += [ "//build/config/linux:libresolv" ]
127}
128
129source_set("constants") {
130  sources = [ "base/trace_constants.h" ]
131  deps = [ "//base" ]
132}
133
134buildflag_header("cronet_buildflags") {
135  header = "cronet_buildflags.h"
136  header_dir = "net/base"
137  flags = [ "CRONET_BUILD=$is_cronet_build" ]
138}
139
140component("net") {
141  sources = [
142    "base/address_family.cc",
143    "base/address_family.h",
144    "base/address_list.cc",
145    "base/address_list.h",
146    "base/auth.cc",
147    "base/auth.h",
148    "base/backoff_entry.cc",
149    "base/backoff_entry.h",
150    "base/backoff_entry_serializer.cc",
151    "base/backoff_entry_serializer.h",
152    "base/cache_metrics.cc",
153    "base/cache_metrics.h",
154    "base/cache_type.h",
155    "base/chunked_upload_data_stream.cc",
156    "base/chunked_upload_data_stream.h",
157    "base/completion_once_callback.h",
158    "base/completion_repeating_callback.h",
159    "base/connection_endpoint_metadata.cc",
160    "base/connection_endpoint_metadata.h",
161    "base/data_url.cc",
162    "base/data_url.h",
163    "base/datagram_buffer.cc",
164    "base/datagram_buffer.h",
165    "base/elements_upload_data_stream.cc",
166    "base/elements_upload_data_stream.h",
167    "base/expiring_cache.h",
168    "base/features.cc",
169    "base/features.h",
170    "base/file_stream.cc",
171    "base/file_stream.h",
172    "base/file_stream_context.cc",
173    "base/file_stream_context.h",
174    "base/filename_util.cc",
175    "base/filename_util.h",
176    "base/filename_util_internal.cc",
177    "base/filename_util_internal.h",
178    "base/hash_value.cc",
179    "base/hash_value.h",
180    "base/hex_utils.cc",
181    "base/hex_utils.h",
182    "base/host_mapping_rules.cc",
183    "base/host_mapping_rules.h",
184    "base/host_port_pair.cc",
185    "base/host_port_pair.h",
186    "base/http_user_agent_settings.h",
187    "base/idempotency.h",
188    "base/interval.h",
189    "base/io_buffer.cc",
190    "base/io_buffer.h",
191    "base/ip_address.cc",
192    "base/ip_address.h",
193    "base/ip_endpoint.cc",
194    "base/ip_endpoint.h",
195    "base/isolation_info.cc",
196    "base/isolation_info.h",
197    "base/load_flags.h",
198    "base/load_flags_list.h",
199    "base/load_states.h",
200    "base/load_states_list.h",
201    "base/load_timing_info.cc",
202    "base/load_timing_info.h",
203    "base/logging_network_change_observer.cc",
204    "base/logging_network_change_observer.h",
205    "base/lookup_string_in_fixed_set.cc",
206    "base/lookup_string_in_fixed_set.h",
207    "base/mime_sniffer.cc",
208    "base/mime_sniffer.h",
209    "base/mime_util.cc",
210    "base/mime_util.h",
211    "base/net_error_details.h",
212    "base/net_error_list.h",
213    "base/net_errors.cc",
214    "base/net_errors.h",
215    "base/net_info_source_list.h",
216    "base/net_module.cc",
217    "base/net_module.h",
218    "base/net_string_util.h",
219    "base/network_activity_monitor.cc",
220    "base/network_activity_monitor.h",
221    "base/network_anonymization_key.cc",
222    "base/network_anonymization_key.h",
223    "base/network_change_notifier.cc",
224    "base/network_change_notifier.h",
225    "base/network_change_notifier_factory.h",
226    "base/network_delegate.cc",
227    "base/network_delegate.h",
228    "base/network_delegate_impl.cc",
229    "base/network_delegate_impl.h",
230    "base/network_handle.h",
231    "base/network_interfaces.cc",
232    "base/network_interfaces.h",
233    "base/network_isolation_key.cc",
234    "base/network_isolation_key.h",
235    "base/parse_number.cc",
236    "base/parse_number.h",
237    "base/platform_mime_util.h",
238    "base/port_util.cc",
239    "base/port_util.h",
240    "base/prioritized_dispatcher.cc",
241    "base/prioritized_dispatcher.h",
242    "base/prioritized_task_runner.cc",
243    "base/prioritized_task_runner.h",
244    "base/priority_queue.h",
245    "base/privacy_mode.cc",
246    "base/privacy_mode.h",
247    "base/proxy_chain.cc",
248    "base/proxy_chain.h",
249    "base/proxy_delegate.h",
250    "base/proxy_server.cc",
251    "base/proxy_server.h",
252    "base/proxy_string_util.cc",
253    "base/proxy_string_util.h",
254    "base/rand_callback.h",
255    "base/registry_controlled_domains/registry_controlled_domain.cc",
256    "base/registry_controlled_domains/registry_controlled_domain.h",
257    "base/request_priority.cc",
258    "base/request_priority.h",
259    "base/scheme_host_port_matcher.cc",
260    "base/scheme_host_port_matcher.h",
261    "base/scheme_host_port_matcher_result.h",
262    "base/scheme_host_port_matcher_rule.cc",
263    "base/scheme_host_port_matcher_rule.h",
264    "base/schemeful_site.cc",
265    "base/schemeful_site.h",
266    "base/sockaddr_storage.cc",
267    "base/sockaddr_storage.h",
268    "base/sys_addrinfo.h",
269    "base/trace_event_stub.h",
270    "base/tracing.h",
271    "base/transport_info.cc",
272    "base/transport_info.h",
273    "base/upload_bytes_element_reader.cc",
274    "base/upload_bytes_element_reader.h",
275    "base/upload_data_stream.cc",
276    "base/upload_data_stream.h",
277    "base/upload_element_reader.cc",
278    "base/upload_element_reader.h",
279    "base/upload_file_element_reader.cc",
280    "base/upload_file_element_reader.h",
281    "base/upload_progress.h",
282    "base/url_search_params.cc",
283    "base/url_search_params.h",
284    "base/url_util.cc",
285    "base/url_util.h",
286    "cert/asn1_util.cc",
287    "cert/asn1_util.h",
288    "cert/caching_cert_verifier.cc",
289    "cert/caching_cert_verifier.h",
290    "cert/cert_and_ct_verifier.cc",
291    "cert/cert_and_ct_verifier.h",
292    "cert/cert_database.cc",
293    "cert/cert_database.h",
294    "cert/cert_net_fetcher.h",
295    "cert/cert_status_flags.cc",
296    "cert/cert_status_flags.h",
297    "cert/cert_status_flags_list.h",
298    "cert/cert_verifier.cc",
299    "cert/cert_verifier.h",
300    "cert/cert_verify_proc.cc",
301    "cert/cert_verify_proc.h",
302    "cert/cert_verify_proc_blocklist.inc",
303    "cert/cert_verify_proc_builtin.cc",
304    "cert/cert_verify_proc_builtin.h",
305    "cert/cert_verify_result.cc",
306    "cert/cert_verify_result.h",
307    "cert/client_cert_verifier.h",
308    "cert/coalescing_cert_verifier.cc",
309    "cert/coalescing_cert_verifier.h",
310    "cert/crl_set.cc",
311    "cert/crl_set.h",
312    "cert/ct_log_response_parser.cc",
313    "cert/ct_log_response_parser.h",
314    "cert/ct_log_verifier.cc",
315    "cert/ct_log_verifier.h",
316    "cert/ct_log_verifier_util.cc",
317    "cert/ct_log_verifier_util.h",
318    "cert/ct_objects_extractor.cc",
319    "cert/ct_objects_extractor.h",
320    "cert/ct_policy_enforcer.cc",
321    "cert/ct_policy_enforcer.h",
322    "cert/ct_policy_status.h",
323    "cert/ct_sct_to_string.cc",
324    "cert/ct_sct_to_string.h",
325    "cert/ct_serialization.cc",
326    "cert/ct_serialization.h",
327    "cert/ct_signed_certificate_timestamp_log_param.cc",
328    "cert/ct_signed_certificate_timestamp_log_param.h",
329    "cert/ct_verifier.h",
330    "cert/do_nothing_ct_verifier.cc",
331    "cert/do_nothing_ct_verifier.h",
332    "cert/ev_root_ca_metadata.cc",
333    "cert/ev_root_ca_metadata.h",
334    "cert/internal/cert_issuer_source_aia.cc",
335    "cert/internal/cert_issuer_source_aia.h",
336    "cert/internal/revocation_checker.cc",
337    "cert/internal/revocation_checker.h",
338    "cert/internal/system_trust_store.cc",
339    "cert/internal/system_trust_store.h",
340    "cert/internal/trust_store_features.cc",
341    "cert/internal/trust_store_features.h",
342    "cert/known_roots.cc",
343    "cert/known_roots.h",
344    "cert/merkle_audit_proof.cc",
345    "cert/merkle_audit_proof.h",
346    "cert/merkle_consistency_proof.cc",
347    "cert/merkle_consistency_proof.h",
348    "cert/merkle_tree_leaf.cc",
349    "cert/merkle_tree_leaf.h",
350    "cert/multi_log_ct_verifier.cc",
351    "cert/multi_log_ct_verifier.h",
352    "cert/multi_threaded_cert_verifier.cc",
353    "cert/multi_threaded_cert_verifier.h",
354    "cert/root_cert_list_generated.h",
355    "cert/sct_auditing_delegate.h",
356    "cert/sct_status_flags.cc",
357    "cert/sct_status_flags.h",
358    "cert/signed_certificate_timestamp.cc",
359    "cert/signed_certificate_timestamp.h",
360    "cert/signed_certificate_timestamp_and_status.cc",
361    "cert/signed_certificate_timestamp_and_status.h",
362    "cert/signed_tree_head.cc",
363    "cert/signed_tree_head.h",
364    "cert/symantec_certs.cc",
365    "cert/symantec_certs.h",
366    "cert/test_root_certs.cc",
367    "cert/test_root_certs.h",
368    "cert/time_conversions.cc",
369    "cert/time_conversions.h",
370    "cert/x509_cert_types.cc",
371    "cert/x509_cert_types.h",
372    "cert/x509_certificate.cc",
373    "cert/x509_certificate.h",
374    "cert/x509_certificate_net_log_param.cc",
375    "cert/x509_certificate_net_log_param.h",
376    "cert/x509_util.cc",
377    "cert/x509_util.h",
378    "cert_net/cert_net_fetcher_url_request.cc",
379    "cert_net/cert_net_fetcher_url_request.h",
380    "cookies/canonical_cookie.cc",
381    "cookies/canonical_cookie.h",
382    "cookies/cookie_access_delegate.cc",
383    "cookies/cookie_access_delegate.h",
384    "cookies/cookie_access_result.cc",
385    "cookies/cookie_access_result.h",
386    "cookies/cookie_change_dispatcher.cc",
387    "cookies/cookie_change_dispatcher.h",
388    "cookies/cookie_constants.cc",
389    "cookies/cookie_constants.h",
390    "cookies/cookie_deletion_info.cc",
391    "cookies/cookie_deletion_info.h",
392    "cookies/cookie_inclusion_status.cc",
393    "cookies/cookie_inclusion_status.h",
394    "cookies/cookie_monster.cc",
395    "cookies/cookie_monster.h",
396    "cookies/cookie_monster_change_dispatcher.cc",
397    "cookies/cookie_monster_change_dispatcher.h",
398    "cookies/cookie_monster_netlog_params.cc",
399    "cookies/cookie_monster_netlog_params.h",
400    "cookies/cookie_options.cc",
401    "cookies/cookie_options.h",
402    "cookies/cookie_partition_key.cc",
403    "cookies/cookie_partition_key.h",
404    "cookies/cookie_partition_key_collection.cc",
405    "cookies/cookie_partition_key_collection.h",
406    "cookies/cookie_setting_override.h",
407    "cookies/cookie_store.cc",
408    "cookies/cookie_store.h",
409    "cookies/cookie_util.cc",
410    "cookies/cookie_util.h",
411    "cookies/parsed_cookie.cc",
412    "cookies/parsed_cookie.h",
413    "cookies/site_for_cookies.cc",
414    "cookies/site_for_cookies.h",
415    "cookies/static_cookie_policy.cc",
416    "cookies/static_cookie_policy.h",
417    "disk_cache/backend_cleanup_tracker.cc",
418    "disk_cache/backend_cleanup_tracker.h",
419    "disk_cache/blockfile/addr.cc",
420    "disk_cache/blockfile/addr.h",
421    "disk_cache/blockfile/backend_impl.cc",
422    "disk_cache/blockfile/backend_impl.h",
423    "disk_cache/blockfile/bitmap.cc",
424    "disk_cache/blockfile/bitmap.h",
425    "disk_cache/blockfile/block_files.cc",
426    "disk_cache/blockfile/block_files.h",
427    "disk_cache/blockfile/disk_format.cc",
428    "disk_cache/blockfile/disk_format.h",
429    "disk_cache/blockfile/disk_format_base.h",
430    "disk_cache/blockfile/entry_impl.cc",
431    "disk_cache/blockfile/entry_impl.h",
432    "disk_cache/blockfile/errors.h",
433    "disk_cache/blockfile/eviction.cc",
434    "disk_cache/blockfile/eviction.h",
435    "disk_cache/blockfile/experiments.h",
436    "disk_cache/blockfile/file.cc",
437    "disk_cache/blockfile/file.h",
438    "disk_cache/blockfile/file_block.h",
439    "disk_cache/blockfile/file_lock.cc",
440    "disk_cache/blockfile/file_lock.h",
441    "disk_cache/blockfile/in_flight_backend_io.cc",
442    "disk_cache/blockfile/in_flight_backend_io.h",
443    "disk_cache/blockfile/in_flight_io.cc",
444    "disk_cache/blockfile/in_flight_io.h",
445    "disk_cache/blockfile/mapped_file.cc",
446    "disk_cache/blockfile/mapped_file.h",
447    "disk_cache/blockfile/rankings.cc",
448    "disk_cache/blockfile/rankings.h",
449    "disk_cache/blockfile/sparse_control.cc",
450    "disk_cache/blockfile/sparse_control.h",
451    "disk_cache/blockfile/stats.cc",
452    "disk_cache/blockfile/stats.h",
453    "disk_cache/blockfile/storage_block-inl.h",
454    "disk_cache/blockfile/storage_block.h",
455    "disk_cache/blockfile/stress_support.h",
456    "disk_cache/cache_util.cc",
457    "disk_cache/cache_util.h",
458    "disk_cache/disk_cache.cc",
459    "disk_cache/disk_cache.h",
460    "disk_cache/memory/mem_backend_impl.cc",
461    "disk_cache/memory/mem_backend_impl.h",
462    "disk_cache/memory/mem_entry_impl.cc",
463    "disk_cache/memory/mem_entry_impl.h",
464    "disk_cache/net_log_parameters.cc",
465    "disk_cache/net_log_parameters.h",
466    "disk_cache/simple/post_operation_waiter.cc",
467    "disk_cache/simple/post_operation_waiter.h",
468    "disk_cache/simple/simple_backend_impl.cc",
469    "disk_cache/simple/simple_backend_impl.h",
470    "disk_cache/simple/simple_backend_version.h",
471    "disk_cache/simple/simple_entry_format.cc",
472    "disk_cache/simple/simple_entry_format.h",
473    "disk_cache/simple/simple_entry_format_history.h",
474    "disk_cache/simple/simple_entry_impl.cc",
475    "disk_cache/simple/simple_entry_impl.h",
476    "disk_cache/simple/simple_entry_operation.cc",
477    "disk_cache/simple/simple_entry_operation.h",
478    "disk_cache/simple/simple_file_enumerator.cc",
479    "disk_cache/simple/simple_file_enumerator.h",
480    "disk_cache/simple/simple_file_tracker.cc",
481    "disk_cache/simple/simple_file_tracker.h",
482    "disk_cache/simple/simple_histogram_macros.h",
483    "disk_cache/simple/simple_index.cc",
484    "disk_cache/simple/simple_index.h",
485    "disk_cache/simple/simple_index_delegate.h",
486    "disk_cache/simple/simple_index_file.cc",
487    "disk_cache/simple/simple_index_file.h",
488    "disk_cache/simple/simple_net_log_parameters.cc",
489    "disk_cache/simple/simple_net_log_parameters.h",
490    "disk_cache/simple/simple_synchronous_entry.cc",
491    "disk_cache/simple/simple_synchronous_entry.h",
492    "disk_cache/simple/simple_util.cc",
493    "disk_cache/simple/simple_util.h",
494    "disk_cache/simple/simple_version_upgrade.cc",
495    "disk_cache/simple/simple_version_upgrade.h",
496    "filter/filter_source_stream.cc",
497    "filter/filter_source_stream.h",
498    "filter/gzip_header.cc",
499    "filter/gzip_header.h",
500    "filter/gzip_source_stream.cc",
501    "filter/gzip_source_stream.h",
502    "filter/source_stream.cc",
503    "filter/source_stream.h",
504    "first_party_sets/addition_overlaps_union_find.cc",
505    "first_party_sets/addition_overlaps_union_find.h",
506    "first_party_sets/first_party_set_entry.cc",
507    "first_party_sets/first_party_set_entry.h",
508    "first_party_sets/first_party_set_entry_override.cc",
509    "first_party_sets/first_party_set_entry_override.h",
510    "first_party_sets/first_party_set_metadata.cc",
511    "first_party_sets/first_party_set_metadata.h",
512    "first_party_sets/first_party_sets_cache_filter.cc",
513    "first_party_sets/first_party_sets_cache_filter.h",
514    "first_party_sets/first_party_sets_context_config.cc",
515    "first_party_sets/first_party_sets_context_config.h",
516    "first_party_sets/global_first_party_sets.cc",
517    "first_party_sets/global_first_party_sets.h",
518    "first_party_sets/local_set_declaration.cc",
519    "first_party_sets/local_set_declaration.h",
520    "first_party_sets/sets_mutation.cc",
521    "first_party_sets/sets_mutation.h",
522    "http/alternative_service.cc",
523    "http/alternative_service.h",
524    "http/bidirectional_stream.cc",
525    "http/bidirectional_stream.h",
526    "http/bidirectional_stream_impl.cc",
527    "http/bidirectional_stream_impl.h",
528    "http/bidirectional_stream_request_info.cc",
529    "http/bidirectional_stream_request_info.h",
530    "http/broken_alternative_services.cc",
531    "http/broken_alternative_services.h",
532    "http/http_auth.cc",
533    "http/http_auth.h",
534    "http/http_auth_cache.cc",
535    "http/http_auth_cache.h",
536    "http/http_auth_challenge_tokenizer.cc",
537    "http/http_auth_challenge_tokenizer.h",
538    "http/http_auth_controller.cc",
539    "http/http_auth_controller.h",
540    "http/http_auth_filter.cc",
541    "http/http_auth_filter.h",
542    "http/http_auth_handler.cc",
543    "http/http_auth_handler.h",
544    "http/http_auth_handler_basic.cc",
545    "http/http_auth_handler_basic.h",
546    "http/http_auth_handler_digest.cc",
547    "http/http_auth_handler_digest.h",
548    "http/http_auth_handler_factory.cc",
549    "http/http_auth_handler_factory.h",
550    "http/http_auth_handler_ntlm.cc",
551    "http/http_auth_handler_ntlm.h",
552    "http/http_auth_mechanism.h",
553    "http/http_auth_multi_round_parse.cc",
554    "http/http_auth_multi_round_parse.h",
555    "http/http_auth_preferences.cc",
556    "http/http_auth_preferences.h",
557    "http/http_auth_scheme.cc",
558    "http/http_auth_scheme.h",
559    "http/http_basic_state.cc",
560    "http/http_basic_state.h",
561    "http/http_basic_stream.cc",
562    "http/http_basic_stream.h",
563    "http/http_byte_range.cc",
564    "http/http_byte_range.h",
565    "http/http_cache.cc",
566    "http/http_cache.h",
567    "http/http_cache_transaction.cc",
568    "http/http_cache_transaction.h",
569    "http/http_cache_writers.cc",
570    "http/http_cache_writers.h",
571    "http/http_chunked_decoder.cc",
572    "http/http_chunked_decoder.h",
573    "http/http_connection_info.cc",
574    "http/http_connection_info.h",
575    "http/http_content_disposition.cc",
576    "http/http_content_disposition.h",
577    "http/http_log_util.cc",
578    "http/http_log_util.h",
579    "http/http_network_layer.cc",
580    "http/http_network_layer.h",
581    "http/http_network_session.cc",
582    "http/http_network_session.h",
583    "http/http_network_session_peer.cc",
584    "http/http_network_session_peer.h",
585    "http/http_network_transaction.cc",
586    "http/http_network_transaction.h",
587    "http/http_no_vary_search_data.cc",
588    "http/http_no_vary_search_data.h",
589    "http/http_proxy_client_socket.cc",
590    "http/http_proxy_client_socket.h",
591    "http/http_proxy_connect_job.cc",
592    "http/http_proxy_connect_job.h",
593    "http/http_raw_request_headers.cc",
594    "http/http_raw_request_headers.h",
595    "http/http_request_headers.cc",
596    "http/http_request_headers.h",
597    "http/http_request_info.cc",
598    "http/http_request_info.h",
599    "http/http_response_body_drainer.cc",
600    "http/http_response_body_drainer.h",
601    "http/http_response_headers.cc",
602    "http/http_response_headers.h",
603    "http/http_response_info.cc",
604    "http/http_response_info.h",
605    "http/http_security_headers.cc",
606    "http/http_security_headers.h",
607    "http/http_server_properties.cc",
608    "http/http_server_properties.h",
609    "http/http_server_properties_manager.cc",
610    "http/http_server_properties_manager.h",
611    "http/http_status_code.cc",
612    "http/http_status_code.h",
613    "http/http_status_code_list.h",
614    "http/http_stream.cc",
615    "http/http_stream.h",
616    "http/http_stream_factory.cc",
617    "http/http_stream_factory.h",
618    "http/http_stream_factory_job.cc",
619    "http/http_stream_factory_job.h",
620    "http/http_stream_factory_job_controller.cc",
621    "http/http_stream_factory_job_controller.h",
622    "http/http_stream_parser.cc",
623    "http/http_stream_parser.h",
624    "http/http_stream_request.cc",
625    "http/http_stream_request.h",
626    "http/http_transaction.h",
627    "http/http_transaction_factory.h",
628    "http/http_util.cc",
629    "http/http_util.h",
630    "http/http_vary_data.cc",
631    "http/http_vary_data.h",
632    "http/http_version.h",
633    "http/partial_data.cc",
634    "http/partial_data.h",
635    "http/proxy_client_socket.cc",
636    "http/proxy_client_socket.h",
637    "http/proxy_fallback.cc",
638    "http/proxy_fallback.h",
639    "http/structured_headers.h",
640    "http/transport_security_persister.cc",
641    "http/transport_security_persister.h",
642    "http/transport_security_state.h",
643    "http/transport_security_state_source.cc",
644    "http/transport_security_state_source.h",
645    "http/url_security_manager.cc",
646    "http/url_security_manager.h",
647    "log/file_net_log_observer.cc",
648    "log/file_net_log_observer.h",
649    "log/net_log.cc",
650    "log/net_log.h",
651    "log/net_log_capture_mode.cc",
652    "log/net_log_capture_mode.h",
653    "log/net_log_entry.cc",
654    "log/net_log_entry.h",
655    "log/net_log_event_type.cc",
656    "log/net_log_event_type.h",
657    "log/net_log_event_type_list.h",
658    "log/net_log_source.cc",
659    "log/net_log_source.h",
660    "log/net_log_source_type.h",
661    "log/net_log_source_type_list.h",
662    "log/net_log_util.cc",
663    "log/net_log_util.h",
664    "log/net_log_values.cc",
665    "log/net_log_values.h",
666    "log/net_log_with_source.cc",
667    "log/net_log_with_source.h",
668    "log/trace_net_log_observer.cc",
669    "log/trace_net_log_observer.h",
670    "nqe/cached_network_quality.cc",
671    "nqe/cached_network_quality.h",
672    "nqe/effective_connection_type.cc",
673    "nqe/effective_connection_type.h",
674    "nqe/effective_connection_type_observer.h",
675    "nqe/event_creator.cc",
676    "nqe/event_creator.h",
677    "nqe/network_id.cc",
678    "nqe/network_id.h",
679    "nqe/network_qualities_prefs_manager.cc",
680    "nqe/network_qualities_prefs_manager.h",
681    "nqe/network_quality.cc",
682    "nqe/network_quality.h",
683    "nqe/network_quality_estimator.cc",
684    "nqe/network_quality_estimator.h",
685    "nqe/network_quality_estimator_params.cc",
686    "nqe/network_quality_estimator_params.h",
687    "nqe/network_quality_estimator_util.cc",
688    "nqe/network_quality_estimator_util.h",
689    "nqe/network_quality_observation.cc",
690    "nqe/network_quality_observation.h",
691    "nqe/network_quality_observation_source.h",
692    "nqe/network_quality_store.cc",
693    "nqe/network_quality_store.h",
694    "nqe/observation_buffer.cc",
695    "nqe/observation_buffer.h",
696    "nqe/peer_to_peer_connections_count_observer.h",
697    "nqe/pref_names.cc",
698    "nqe/pref_names.h",
699    "nqe/rtt_throughput_estimates_observer.h",
700    "nqe/socket_watcher.cc",
701    "nqe/socket_watcher.h",
702    "nqe/socket_watcher_factory.cc",
703    "nqe/socket_watcher_factory.h",
704    "nqe/throughput_analyzer.cc",
705    "nqe/throughput_analyzer.h",
706    "nqe/weighted_observation.h",
707    "proxy_resolution/configured_proxy_resolution_request.cc",
708    "proxy_resolution/configured_proxy_resolution_request.h",
709    "proxy_resolution/configured_proxy_resolution_service.cc",
710    "proxy_resolution/configured_proxy_resolution_service.h",
711    "proxy_resolution/dhcp_pac_file_fetcher.cc",
712    "proxy_resolution/dhcp_pac_file_fetcher.h",
713    "proxy_resolution/multi_threaded_proxy_resolver.cc",
714    "proxy_resolution/multi_threaded_proxy_resolver.h",
715    "proxy_resolution/network_delegate_error_observer.cc",
716    "proxy_resolution/network_delegate_error_observer.h",
717    "proxy_resolution/pac_file_data.cc",
718    "proxy_resolution/pac_file_data.h",
719    "proxy_resolution/pac_file_decider.cc",
720    "proxy_resolution/pac_file_decider.h",
721    "proxy_resolution/pac_file_fetcher.cc",
722    "proxy_resolution/pac_file_fetcher.h",
723    "proxy_resolution/pac_file_fetcher_impl.cc",
724    "proxy_resolution/pac_file_fetcher_impl.h",
725    "proxy_resolution/polling_proxy_config_service.cc",
726    "proxy_resolution/polling_proxy_config_service.h",
727    "proxy_resolution/proxy_bypass_rules.cc",
728    "proxy_resolution/proxy_bypass_rules.h",
729    "proxy_resolution/proxy_config.cc",
730    "proxy_resolution/proxy_config.h",
731    "proxy_resolution/proxy_config_service.cc",
732    "proxy_resolution/proxy_config_service.h",
733    "proxy_resolution/proxy_config_service_fixed.cc",
734    "proxy_resolution/proxy_config_service_fixed.h",
735    "proxy_resolution/proxy_config_with_annotation.cc",
736    "proxy_resolution/proxy_config_with_annotation.h",
737    "proxy_resolution/proxy_info.cc",
738    "proxy_resolution/proxy_info.h",
739    "proxy_resolution/proxy_list.cc",
740    "proxy_resolution/proxy_list.h",
741    "proxy_resolution/proxy_resolution_request.h",
742    "proxy_resolution/proxy_resolution_service.h",
743    "proxy_resolution/proxy_resolve_dns_operation.h",
744    "proxy_resolution/proxy_resolver.h",
745    "proxy_resolution/proxy_resolver_error_observer.h",
746    "proxy_resolution/proxy_resolver_factory.cc",
747    "proxy_resolution/proxy_resolver_factory.h",
748    "proxy_resolution/proxy_retry_info.h",
749    "quic/address_utils.h",
750    "quic/bidirectional_stream_quic_impl.cc",
751    "quic/bidirectional_stream_quic_impl.h",
752    "quic/crypto/proof_source_chromium.cc",
753    "quic/crypto/proof_source_chromium.h",
754    "quic/crypto/proof_verifier_chromium.cc",
755    "quic/crypto/proof_verifier_chromium.h",
756    "quic/dedicated_web_transport_http3_client.cc",
757    "quic/dedicated_web_transport_http3_client.h",
758    "quic/network_connection.cc",
759    "quic/network_connection.h",
760    "quic/platform/impl/quic_chromium_clock.cc",
761    "quic/platform/impl/quic_chromium_clock.h",
762    "quic/properties_based_quic_server_info.cc",
763    "quic/properties_based_quic_server_info.h",
764    "quic/quic_address_mismatch.cc",
765    "quic/quic_address_mismatch.h",
766    "quic/quic_chromium_alarm_factory.cc",
767    "quic/quic_chromium_alarm_factory.h",
768    "quic/quic_chromium_client_session.cc",
769    "quic/quic_chromium_client_session.h",
770    "quic/quic_chromium_client_stream.cc",
771    "quic/quic_chromium_client_stream.h",
772    "quic/quic_chromium_connection_helper.cc",
773    "quic/quic_chromium_connection_helper.h",
774    "quic/quic_chromium_packet_reader.cc",
775    "quic/quic_chromium_packet_reader.h",
776    "quic/quic_chromium_packet_writer.cc",
777    "quic/quic_chromium_packet_writer.h",
778    "quic/quic_clock_skew_detector.cc",
779    "quic/quic_clock_skew_detector.h",
780    "quic/quic_connection_logger.cc",
781    "quic/quic_connection_logger.h",
782    "quic/quic_connectivity_monitor.cc",
783    "quic/quic_connectivity_monitor.h",
784    "quic/quic_context.cc",
785    "quic/quic_context.h",
786    "quic/quic_crypto_client_config_handle.cc",
787    "quic/quic_crypto_client_config_handle.h",
788    "quic/quic_crypto_client_stream_factory.cc",
789    "quic/quic_crypto_client_stream_factory.h",
790    "quic/quic_event_logger.cc",
791    "quic/quic_event_logger.h",
792    "quic/quic_http3_logger.cc",
793    "quic/quic_http3_logger.h",
794    "quic/quic_http_stream.cc",
795    "quic/quic_http_stream.h",
796    "quic/quic_http_utils.cc",
797    "quic/quic_http_utils.h",
798    "quic/quic_proxy_client_socket.cc",
799    "quic/quic_proxy_client_socket.h",
800    "quic/quic_server_info.cc",
801    "quic/quic_server_info.h",
802    "quic/quic_session_key.cc",
803    "quic/quic_session_key.h",
804    "quic/quic_stream_factory.cc",
805    "quic/quic_stream_factory.h",
806    "quic/set_quic_flag.cc",
807    "quic/set_quic_flag.h",
808    "quic/web_transport_client.cc",
809    "quic/web_transport_client.h",
810    "quic/web_transport_error.cc",
811    "quic/web_transport_error.h",
812    "socket/client_socket_factory.cc",
813    "socket/client_socket_factory.h",
814    "socket/client_socket_handle.cc",
815    "socket/client_socket_handle.h",
816    "socket/client_socket_pool.cc",
817    "socket/client_socket_pool.h",
818    "socket/client_socket_pool_manager.cc",
819    "socket/client_socket_pool_manager.h",
820    "socket/client_socket_pool_manager_impl.cc",
821    "socket/client_socket_pool_manager_impl.h",
822    "socket/connect_job.cc",
823    "socket/connect_job.h",
824    "socket/connect_job_factory.cc",
825    "socket/connect_job_factory.h",
826    "socket/connection_attempts.h",
827    "socket/datagram_client_socket.h",
828    "socket/datagram_server_socket.h",
829    "socket/datagram_socket.h",
830    "socket/diff_serv_code_point.h",
831    "socket/network_binding_client_socket_factory.cc",
832    "socket/network_binding_client_socket_factory.h",
833    "socket/next_proto.cc",
834    "socket/next_proto.h",
835    "socket/server_socket.cc",
836    "socket/server_socket.h",
837    "socket/socket.cc",
838    "socket/socket.h",
839    "socket/socket_bio_adapter.cc",
840    "socket/socket_bio_adapter.h",
841    "socket/socket_descriptor.cc",
842    "socket/socket_descriptor.h",
843    "socket/socket_net_log_params.cc",
844    "socket/socket_net_log_params.h",
845    "socket/socket_options.cc",
846    "socket/socket_options.h",
847    "socket/socket_performance_watcher.h",
848    "socket/socket_performance_watcher_factory.h",
849    "socket/socket_tag.cc",
850    "socket/socket_tag.h",
851    "socket/socks5_client_socket.cc",
852    "socket/socks5_client_socket.h",
853    "socket/socks_client_socket.cc",
854    "socket/socks_client_socket.h",
855    "socket/socks_connect_job.cc",
856    "socket/socks_connect_job.h",
857    "socket/ssl_client_socket.cc",
858    "socket/ssl_client_socket.h",
859    "socket/ssl_client_socket_impl.cc",
860    "socket/ssl_client_socket_impl.h",
861    "socket/ssl_connect_job.cc",
862    "socket/ssl_connect_job.h",
863    "socket/ssl_server_socket.h",
864    "socket/ssl_server_socket_impl.cc",
865    "socket/ssl_server_socket_impl.h",
866    "socket/ssl_socket.h",
867    "socket/stream_socket.cc",
868    "socket/stream_socket.h",
869    "socket/tcp_client_socket.cc",
870    "socket/tcp_client_socket.h",
871    "socket/tcp_server_socket.cc",
872    "socket/tcp_server_socket.h",
873    "socket/tcp_socket.h",
874    "socket/transport_client_socket.cc",
875    "socket/transport_client_socket.h",
876    "socket/transport_client_socket_pool.cc",
877    "socket/transport_client_socket_pool.h",
878    "socket/transport_connect_job.cc",
879    "socket/transport_connect_job.h",
880    "socket/transport_connect_sub_job.cc",
881    "socket/transport_connect_sub_job.h",
882    "socket/udp_client_socket.cc",
883    "socket/udp_client_socket.h",
884    "socket/udp_net_log_parameters.cc",
885    "socket/udp_net_log_parameters.h",
886    "socket/udp_server_socket.cc",
887    "socket/udp_server_socket.h",
888    "socket/udp_socket.h",
889    "socket/udp_socket_global_limits.cc",
890    "socket/udp_socket_global_limits.h",
891    "socket/websocket_endpoint_lock_manager.cc",
892    "socket/websocket_endpoint_lock_manager.h",
893    "socket/websocket_transport_client_socket_pool.cc",
894    "socket/websocket_transport_client_socket_pool.h",
895    "spdy/alps_decoder.cc",
896    "spdy/alps_decoder.h",
897    "spdy/bidirectional_stream_spdy_impl.cc",
898    "spdy/bidirectional_stream_spdy_impl.h",
899    "spdy/buffered_spdy_framer.cc",
900    "spdy/buffered_spdy_framer.h",
901    "spdy/header_coalescer.cc",
902    "spdy/header_coalescer.h",
903    "spdy/http2_priority_dependencies.cc",
904    "spdy/http2_priority_dependencies.h",
905    "spdy/multiplexed_http_stream.cc",
906    "spdy/multiplexed_http_stream.h",
907    "spdy/multiplexed_session.cc",
908    "spdy/multiplexed_session.h",
909    "spdy/spdy_buffer.cc",
910    "spdy/spdy_buffer.h",
911    "spdy/spdy_buffer_producer.cc",
912    "spdy/spdy_buffer_producer.h",
913    "spdy/spdy_http_stream.cc",
914    "spdy/spdy_http_stream.h",
915    "spdy/spdy_http_utils.cc",
916    "spdy/spdy_http_utils.h",
917    "spdy/spdy_log_util.cc",
918    "spdy/spdy_log_util.h",
919    "spdy/spdy_proxy_client_socket.cc",
920    "spdy/spdy_proxy_client_socket.h",
921    "spdy/spdy_read_queue.cc",
922    "spdy/spdy_read_queue.h",
923    "spdy/spdy_session.cc",
924    "spdy/spdy_session.h",
925    "spdy/spdy_session_key.cc",
926    "spdy/spdy_session_key.h",
927    "spdy/spdy_session_pool.cc",
928    "spdy/spdy_session_pool.h",
929    "spdy/spdy_stream.cc",
930    "spdy/spdy_stream.h",
931    "spdy/spdy_write_queue.cc",
932    "spdy/spdy_write_queue.h",
933    "ssl/cert_compression.cc",
934    "ssl/cert_compression.h",
935    "ssl/client_cert_identity.cc",
936    "ssl/client_cert_identity.h",
937    "ssl/client_cert_store.h",
938    "ssl/openssl_ssl_util.cc",
939    "ssl/openssl_ssl_util.h",
940    "ssl/ssl_cert_request_info.cc",
941    "ssl/ssl_cert_request_info.h",
942    "ssl/ssl_cipher_suite_names.cc",
943    "ssl/ssl_cipher_suite_names.h",
944    "ssl/ssl_client_auth_cache.cc",
945    "ssl/ssl_client_auth_cache.h",
946    "ssl/ssl_client_session_cache.cc",
947    "ssl/ssl_client_session_cache.h",
948    "ssl/ssl_config.cc",
949    "ssl/ssl_config.h",
950    "ssl/ssl_config_service.cc",
951    "ssl/ssl_config_service.h",
952    "ssl/ssl_config_service_defaults.cc",
953    "ssl/ssl_config_service_defaults.h",
954    "ssl/ssl_connection_status_flags.h",
955    "ssl/ssl_handshake_details.h",
956    "ssl/ssl_info.cc",
957    "ssl/ssl_info.h",
958    "ssl/ssl_key_logger.cc",
959    "ssl/ssl_key_logger.h",
960    "ssl/ssl_key_logger_impl.cc",
961    "ssl/ssl_key_logger_impl.h",
962    "ssl/ssl_legacy_crypto_fallback.h",
963    "ssl/ssl_platform_key_util.cc",
964    "ssl/ssl_platform_key_util.h",
965    "ssl/ssl_private_key.cc",
966    "ssl/ssl_private_key.h",
967    "ssl/ssl_server_config.cc",
968    "ssl/ssl_server_config.h",
969    "ssl/threaded_ssl_private_key.cc",
970    "ssl/threaded_ssl_private_key.h",
971    "url_request/clear_site_data.cc",
972    "url_request/clear_site_data.h",
973    "url_request/redirect_info.cc",
974    "url_request/redirect_info.h",
975    "url_request/redirect_util.cc",
976    "url_request/redirect_util.h",
977    "url_request/referrer_policy.h",
978    "url_request/report_sender.cc",
979    "url_request/report_sender.h",
980    "url_request/static_http_user_agent_settings.cc",
981    "url_request/static_http_user_agent_settings.h",
982    "url_request/url_request.cc",
983    "url_request/url_request.h",
984    "url_request/url_request_context.cc",
985    "url_request/url_request_context.h",
986    "url_request/url_request_context_builder.cc",
987    "url_request/url_request_context_builder.h",
988    "url_request/url_request_context_getter.cc",
989    "url_request/url_request_context_getter.h",
990    "url_request/url_request_context_getter_observer.h",
991    "url_request/url_request_error_job.cc",
992    "url_request/url_request_error_job.h",
993    "url_request/url_request_filter.cc",
994    "url_request/url_request_filter.h",
995    "url_request/url_request_http_job.cc",
996    "url_request/url_request_http_job.h",
997    "url_request/url_request_interceptor.cc",
998    "url_request/url_request_interceptor.h",
999    "url_request/url_request_job.cc",
1000    "url_request/url_request_job.h",
1001    "url_request/url_request_job_factory.cc",
1002    "url_request/url_request_job_factory.h",
1003    "url_request/url_request_netlog_params.cc",
1004    "url_request/url_request_netlog_params.h",
1005    "url_request/url_request_redirect_job.cc",
1006    "url_request/url_request_redirect_job.h",
1007    "url_request/url_request_throttler_entry.cc",
1008    "url_request/url_request_throttler_entry.h",
1009    "url_request/url_request_throttler_entry_interface.h",
1010    "url_request/url_request_throttler_manager.cc",
1011    "url_request/url_request_throttler_manager.h",
1012    "url_request/view_cache_helper.cc",
1013    "url_request/view_cache_helper.h",
1014    "url_request/websocket_handshake_userdata_key.cc",
1015    "url_request/websocket_handshake_userdata_key.h",
1016  ]
1017
1018  if (is_posix || is_fuchsia) {
1019    sources += [ "base/net_errors_posix.cc" ]
1020  }
1021
1022  defines = []
1023  if (disable_brotli_filter) {
1024    defines += [ "NET_DISABLE_BROTLI" ]
1025  }
1026  if (disable_zstd_filter) {
1027    defines += [ "NET_DISABLE_ZSTD" ]
1028  }
1029
1030  deps = [
1031    ":cronet_buildflags",
1032    ":net_deps",
1033    "//build:chromeos_buildflags",
1034    "//components/miracle_parameter/common",
1035    "//net/http:transport_security_state_generated_files",
1036  ]
1037
1038  public_deps = [
1039    ":net_export_header",
1040    ":net_public_deps",
1041    "//base",
1042    "//net/dns",
1043    "//net/dns:dns_client",
1044    "//net/dns:host_resolver",
1045    "//net/dns:host_resolver_manager",
1046    "//net/dns:mdns_client",
1047    "//net/dns/public",
1048    "//net/third_party/quiche",
1049  ]
1050
1051  allow_circular_includes_from = [
1052    "//net/dns",
1053    "//net/dns:dns_client",
1054    "//net/dns:host_resolver",
1055    "//net/dns:host_resolver_manager",
1056    "//net/dns:mdns_client",
1057    "//net/dns/public",
1058    "//net/http:transport_security_state_generated_files",
1059  ]
1060
1061  if (enable_reporting) {
1062    sources += [
1063      "network_error_logging/network_error_logging_service.cc",
1064      "network_error_logging/network_error_logging_service.h",
1065      "network_error_logging/persistent_reporting_and_nel_store.h",
1066      "reporting/reporting_browsing_data_remover.cc",
1067      "reporting/reporting_browsing_data_remover.h",
1068      "reporting/reporting_cache.cc",
1069      "reporting/reporting_cache.h",
1070      "reporting/reporting_cache_impl.cc",
1071      "reporting/reporting_cache_impl.h",
1072      "reporting/reporting_cache_observer.cc",
1073      "reporting/reporting_cache_observer.h",
1074      "reporting/reporting_context.cc",
1075      "reporting/reporting_context.h",
1076      "reporting/reporting_delegate.cc",
1077      "reporting/reporting_delegate.h",
1078      "reporting/reporting_delivery_agent.cc",
1079      "reporting/reporting_delivery_agent.h",
1080      "reporting/reporting_endpoint.cc",
1081      "reporting/reporting_endpoint.h",
1082      "reporting/reporting_endpoint_manager.cc",
1083      "reporting/reporting_endpoint_manager.h",
1084      "reporting/reporting_garbage_collector.cc",
1085      "reporting/reporting_garbage_collector.h",
1086      "reporting/reporting_header_parser.cc",
1087      "reporting/reporting_header_parser.h",
1088      "reporting/reporting_network_change_observer.cc",
1089      "reporting/reporting_network_change_observer.h",
1090      "reporting/reporting_policy.cc",
1091      "reporting/reporting_policy.h",
1092      "reporting/reporting_report.cc",
1093      "reporting/reporting_report.h",
1094      "reporting/reporting_service.cc",
1095      "reporting/reporting_service.h",
1096      "reporting/reporting_uploader.cc",
1097      "reporting/reporting_uploader.h",
1098    ]
1099  }
1100
1101  if (is_android) {
1102    sources += [
1103      "android/android_http_util.cc",
1104      "android/cert_verify_result_android.cc",
1105      "android/cert_verify_result_android.h",
1106      "android/gurl_utils.cc",
1107      "android/http_auth_negotiate_android.cc",
1108      "android/http_auth_negotiate_android.h",
1109      "android/keystore.cc",
1110      "android/keystore.h",
1111      "android/network_change_notifier_android.cc",
1112      "android/network_change_notifier_android.h",
1113      "android/network_change_notifier_delegate_android.cc",
1114      "android/network_change_notifier_delegate_android.h",
1115      "android/network_change_notifier_factory_android.cc",
1116      "android/network_change_notifier_factory_android.h",
1117      "android/network_library.cc",
1118      "android/network_library.h",
1119      "android/traffic_stats.cc",
1120      "android/traffic_stats.h",
1121      "cert/cert_verify_proc_android.cc",
1122      "cert/cert_verify_proc_android.h",
1123      "cert/test_root_certs_android.cc",
1124      "cert/x509_util_android.cc",
1125      "proxy_resolution/proxy_config_service_android.cc",
1126      "proxy_resolution/proxy_config_service_android.h",
1127      "ssl/ssl_platform_key_android.cc",
1128      "ssl/ssl_platform_key_android.h",
1129    ]
1130  }
1131
1132  if (is_chromeos && use_nss_certs) {
1133    sources += [
1134      "cert/nss_cert_database_chromeos.cc",
1135      "cert/nss_cert_database_chromeos.h",
1136      "cert/nss_profile_filter_chromeos.cc",
1137      "cert/nss_profile_filter_chromeos.h",
1138    ]
1139  }
1140
1141  if (is_ios) {
1142    sources += [
1143      "cert/cert_verify_proc_ios.cc",
1144      "cert/cert_verify_proc_ios.h",
1145      "cert/test_root_certs_ios.cc",
1146      "disk_cache/blockfile/file_ios.cc",
1147      "proxy_resolution/proxy_config_service_ios.cc",
1148      "proxy_resolution/proxy_config_service_ios.h",
1149    ]
1150  }
1151
1152  if (is_linux) {
1153    sources += [
1154      "base/network_change_notifier_linux.cc",
1155      "base/network_change_notifier_linux.h",
1156      "proxy_resolution/proxy_config_service_linux.cc",
1157      "proxy_resolution/proxy_config_service_linux.h",
1158    ]
1159  }
1160
1161  if (is_linux || is_chromeos || is_android) {
1162    sources += [
1163      "base/address_map_linux.cc",
1164      "base/address_map_linux.h",
1165      "base/address_tracker_linux.cc",
1166      "base/address_tracker_linux.h",
1167      "base/network_interfaces_linux.cc",
1168      "base/network_interfaces_linux.h",
1169      "base/platform_mime_util_linux.cc",
1170    ]
1171  }
1172
1173  if (is_linux) {
1174    sources += [
1175      "base/address_map_cache_linux.cc",
1176      "base/address_map_cache_linux.h",
1177    ]
1178  }
1179
1180  if (is_mac) {
1181    sources += [
1182      "base/network_notification_thread_mac.cc",
1183      "base/network_notification_thread_mac.h",
1184      "cert/cert_database_mac.cc",
1185      "cert/internal/trust_store_mac.cc",
1186      "cert/internal/trust_store_mac.h",
1187      "cert/test_keychain_search_list_mac.cc",
1188      "cert/test_keychain_search_list_mac.h",
1189      "cert/test_root_certs_builtin.cc",
1190      "proxy_resolution/proxy_config_service_mac.cc",
1191      "proxy_resolution/proxy_config_service_mac.h",
1192      "ssl/client_cert_identity_mac.cc",
1193      "ssl/client_cert_identity_mac.h",
1194      "ssl/client_cert_store_mac.cc",
1195      "ssl/client_cert_store_mac.h",
1196      "ssl/ssl_platform_key_mac.cc",
1197      "ssl/ssl_platform_key_mac.h",
1198    ]
1199  }
1200
1201  if (is_apple) {
1202    sources += [
1203      "base/mac/url_conversions.h",
1204      "base/mac/url_conversions.mm",
1205      "base/network_change_notifier_mac.h",
1206      "base/network_change_notifier_mac.mm",
1207      "base/network_config_watcher_mac.cc",
1208      "base/network_config_watcher_mac.h",
1209      "base/platform_mime_util_mac.mm",
1210      "cert/x509_util_apple.cc",
1211      "cert/x509_util_apple.h",
1212      "proxy_resolution/proxy_resolver_mac.cc",
1213      "proxy_resolution/proxy_resolver_mac.h",
1214      "proxy_resolution/proxy_server_util_mac.cc",
1215      "proxy_resolution/proxy_server_util_mac.h",
1216    ]
1217  }
1218
1219  if (is_win) {
1220    sources += [
1221      "base/file_stream_context_win.cc",
1222      "base/net_errors_win.cc",
1223      "base/network_change_notifier_win.cc",
1224      "base/network_change_notifier_win.h",
1225      "base/network_interfaces_win.cc",
1226      "base/network_interfaces_win.h",
1227      "base/platform_mime_util_win.cc",
1228      "base/winsock_init.cc",
1229      "base/winsock_init.h",
1230      "base/winsock_util.cc",
1231      "base/winsock_util.h",
1232      "cert/test_root_certs_builtin.cc",
1233      "cert/x509_util_win.cc",
1234      "cert/x509_util_win.h",
1235      "disk_cache/blockfile/file_win.cc",
1236      "disk_cache/blockfile/mapped_file_win.cc",
1237      "disk_cache/cache_util_win.cc",
1238      "disk_cache/simple/simple_util_win.cc",
1239      "http/http_auth_handler_ntlm_win.cc",
1240      "http/http_auth_sspi_win.cc",
1241      "http/http_auth_sspi_win.h",
1242      "http/url_security_manager_win.cc",
1243      "proxy_resolution/win/dhcp_pac_file_adapter_fetcher_win.cc",
1244      "proxy_resolution/win/dhcp_pac_file_adapter_fetcher_win.h",
1245      "proxy_resolution/win/dhcp_pac_file_fetcher_win.cc",
1246      "proxy_resolution/win/dhcp_pac_file_fetcher_win.h",
1247      "proxy_resolution/win/dhcpcsvc_init_win.cc",
1248      "proxy_resolution/win/dhcpcsvc_init_win.h",
1249      "proxy_resolution/win/proxy_config_service_win.cc",
1250      "proxy_resolution/win/proxy_config_service_win.h",
1251      "proxy_resolution/win/proxy_resolver_winhttp.cc",
1252      "proxy_resolution/win/proxy_resolver_winhttp.h",
1253      "proxy_resolution/win/windows_system_proxy_resolution_request.cc",
1254      "proxy_resolution/win/windows_system_proxy_resolution_request.h",
1255      "proxy_resolution/win/windows_system_proxy_resolution_service.cc",
1256      "proxy_resolution/win/windows_system_proxy_resolution_service.h",
1257      "proxy_resolution/win/windows_system_proxy_resolver.h",
1258      "proxy_resolution/win/winhttp_status.h",
1259      "socket/tcp_socket_win.cc",
1260      "socket/tcp_socket_win.h",
1261      "socket/udp_socket_win.cc",
1262      "socket/udp_socket_win.h",
1263      "ssl/client_cert_store_win.cc",
1264      "ssl/client_cert_store_win.h",
1265      "ssl/ssl_platform_key_win.cc",
1266    ]
1267  }
1268
1269  if (use_kerberos) {
1270    sources += [
1271      "http/http_auth_handler_negotiate.cc",
1272      "http/http_auth_handler_negotiate.h",
1273    ]
1274  }
1275
1276  if (is_posix || is_fuchsia) {
1277    sources += [
1278      "base/file_stream_context_posix.cc",
1279      "base/network_interfaces_posix.cc",
1280      "base/network_interfaces_posix.h",
1281      "base/sockaddr_util_posix.cc",
1282      "base/sockaddr_util_posix.h",
1283      "disk_cache/cache_util_posix.cc",
1284      "disk_cache/simple/simple_util_posix.cc",
1285      "http/url_security_manager_posix.cc",
1286      "socket/socket_posix.cc",
1287      "socket/socket_posix.h",
1288      "socket/tcp_socket_posix.cc",
1289      "socket/tcp_socket_posix.h",
1290      "socket/udp_socket_posix.cc",
1291      "socket/udp_socket_posix.h",
1292    ]
1293    if (!is_ios) {
1294      sources += [ "disk_cache/blockfile/file_posix.cc" ]
1295    }
1296    if (posix_bypass_mmap) {
1297      sources += [ "disk_cache/blockfile/mapped_file_bypass_mmap_posix.cc" ]
1298    } else {
1299      sources += [ "disk_cache/blockfile/mapped_file_posix.cc" ]
1300    }
1301  }
1302
1303  if (is_android || is_chromeos || is_linux) {
1304    sources += [
1305      "base/network_change_notifier_passive.cc",
1306      "base/network_change_notifier_passive.h",
1307    ]
1308  }
1309
1310  if (!is_win) {
1311    sources += [
1312      "http/http_auth_handler_ntlm_portable.cc",
1313      "http/http_auth_ntlm_mechanism.cc",
1314      "http/http_auth_ntlm_mechanism.h",
1315      "ntlm/ntlm.cc",
1316      "ntlm/ntlm.h",
1317      "ntlm/ntlm_buffer_reader.cc",
1318      "ntlm/ntlm_buffer_reader.h",
1319      "ntlm/ntlm_buffer_writer.cc",
1320      "ntlm/ntlm_buffer_writer.h",
1321      "ntlm/ntlm_client.cc",
1322      "ntlm/ntlm_client.h",
1323      "ntlm/ntlm_constants.cc",
1324      "ntlm/ntlm_constants.h",
1325    ]
1326  }
1327
1328  if (use_external_gssapi) {
1329    sources += [
1330      "http/http_auth_gssapi_posix.cc",
1331      "http/http_auth_gssapi_posix.h",
1332    ]
1333  }
1334
1335  # Use getifaddrs() on POSIX platforms, except Linux.
1336  if (is_posix && !is_linux && !is_chromeos) {
1337    sources += [
1338      "base/network_interfaces_getifaddrs.cc",
1339      "base/network_interfaces_getifaddrs.h",
1340    ]
1341    if (is_android) {
1342      sources += [
1343        "base/network_interfaces_getifaddrs_android.cc",
1344        "base/network_interfaces_getifaddrs_android.h",
1345      ]
1346    }
1347  }
1348
1349  if (chrome_root_store_supported) {
1350    sources += [
1351      "cert/internal/trust_store_chrome.cc",
1352      "cert/internal/trust_store_chrome.h",
1353    ]
1354    deps += [
1355      "//net/cert:root_store_proto_lite",
1356      "//net/data/ssl/chrome_root_store:gen_root_store_inc",
1357    ]
1358    if (is_win) {
1359      sources += [
1360        "cert/internal/trust_store_win.cc",
1361        "cert/internal/trust_store_win.h",
1362        "third_party/mozilla_win/cert/win_util.cc",
1363        "third_party/mozilla_win/cert/win_util.h",
1364      ]
1365    }
1366    if (is_android) {
1367      sources += [
1368        "cert/internal/trust_store_android.cc",
1369        "cert/internal/trust_store_android.h",
1370      ]
1371    }
1372  }
1373
1374  if (use_nss_certs) {
1375    sources += [
1376      "cert/internal/system_trust_store_nss.h",
1377      "cert/internal/trust_store_nss.cc",
1378      "cert/internal/trust_store_nss.h",
1379      "cert/nss_cert_database.cc",
1380      "cert/nss_cert_database.h",
1381      "cert/test_root_certs_builtin.cc",
1382      "cert/x509_util_nss.cc",
1383      "cert/x509_util_nss.h",
1384      "third_party/mozilla_security_manager/nsNSSCertificateDB.cpp",
1385      "third_party/mozilla_security_manager/nsNSSCertificateDB.h",
1386      "third_party/mozilla_security_manager/nsPKCS12Blob.cpp",
1387      "third_party/mozilla_security_manager/nsPKCS12Blob.h",
1388      "third_party/nss/ssl/cmpcert.cc",
1389      "third_party/nss/ssl/cmpcert.h",
1390    ]
1391    if (!is_castos) {
1392      sources += [
1393        "ssl/client_cert_store_nss.cc",
1394        "ssl/client_cert_store_nss.h",
1395        "ssl/ssl_platform_key_nss.cc",
1396        "ssl/ssl_platform_key_nss.h",
1397      ]
1398    }
1399
1400    # TODO(https://crbug.com/978854): This is a public config because
1401    # multi_threaded_cert_verifier.h depends on NSS. When the linked bug is
1402    # fixed, switch this to a non-public config, so NSS usage must be explicit
1403    # in the build.
1404    public_configs = [ "//build/config/linux/nss" ]
1405  }
1406
1407  if (is_fuchsia) {
1408    deps += [
1409      "//net/data/ssl/chrome_root_store:gen_root_store_inc",
1410      "//third_party/fuchsia-sdk/sdk/pkg/async-loop-cpp",
1411    ]
1412    public_deps += [ "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.net.interfaces:fuchsia.net.interfaces_hlcpp" ]
1413    sources += [
1414      "base/fuchsia/network_interface_cache.cc",
1415      "base/fuchsia/network_interface_cache.h",
1416      "base/network_change_notifier_fuchsia.cc",
1417      "base/network_change_notifier_fuchsia.h",
1418      "base/network_interfaces_fuchsia.cc",
1419      "base/network_interfaces_fuchsia.h",
1420      "base/platform_mime_util_fuchsia.cc",
1421      "cert/test_root_certs_builtin.cc",
1422    ]
1423  }
1424
1425  if (enable_unix_sockets) {
1426    sources += [
1427      "socket/unix_domain_client_socket_posix.cc",
1428      "socket/unix_domain_client_socket_posix.h",
1429      "socket/unix_domain_server_socket_posix.cc",
1430      "socket/unix_domain_server_socket_posix.h",
1431    ]
1432  }
1433
1434  cflags = []
1435
1436  if (is_mac) {
1437    libs = [ "resolv" ]
1438    frameworks = [
1439      "CFNetwork.framework",
1440      "CoreServices.framework",
1441      "Foundation.framework",
1442      "Security.framework",
1443      "SystemConfiguration.framework",
1444      "UniformTypeIdentifiers.framework",
1445    ]
1446  }
1447
1448  if (is_ios) {
1449    libs = [ "resolv" ]
1450    frameworks = [
1451      "CFNetwork.framework",
1452      "CoreTelephony.framework",
1453      "MobileCoreServices.framework",
1454      "Security.framework",
1455      "SystemConfiguration.framework",
1456      "UniformTypeIdentifiers.framework",
1457    ]
1458  }
1459
1460  if (is_win) {
1461    libs = [
1462      "crypt32.lib",
1463      "dhcpcsvc.lib",
1464      "iphlpapi.lib",
1465      "ncrypt.lib",
1466      "rpcrt4.lib",
1467      "secur32.lib",
1468      "urlmon.lib",
1469      "winhttp.lib",
1470    ]
1471
1472    ldflags = [ "/DELAYLOAD:urlmon.dll" ]
1473  }
1474
1475  if (!disable_file_support) {
1476    sources += [
1477      "base/directory_lister.cc",
1478      "base/directory_lister.h",
1479      "base/directory_listing.cc",
1480      "base/directory_listing.h",
1481    ]
1482  }
1483
1484  if (enable_websockets) {
1485    sources += [
1486      "websockets/websocket_basic_handshake_stream.cc",
1487      "websockets/websocket_basic_handshake_stream.h",
1488      "websockets/websocket_basic_stream.cc",
1489      "websockets/websocket_basic_stream.h",
1490      "websockets/websocket_basic_stream_adapters.cc",
1491      "websockets/websocket_basic_stream_adapters.h",
1492      "websockets/websocket_channel.cc",
1493      "websockets/websocket_channel.h",
1494      "websockets/websocket_deflate_parameters.cc",
1495      "websockets/websocket_deflate_parameters.h",
1496      "websockets/websocket_deflate_predictor.h",
1497      "websockets/websocket_deflate_predictor_impl.cc",
1498      "websockets/websocket_deflate_predictor_impl.h",
1499      "websockets/websocket_deflate_stream.cc",
1500      "websockets/websocket_deflate_stream.h",
1501      "websockets/websocket_deflater.cc",
1502      "websockets/websocket_deflater.h",
1503      "websockets/websocket_errors.cc",
1504      "websockets/websocket_errors.h",
1505      "websockets/websocket_event_interface.h",
1506      "websockets/websocket_extension.cc",
1507      "websockets/websocket_extension.h",
1508      "websockets/websocket_extension_parser.cc",
1509      "websockets/websocket_extension_parser.h",
1510      "websockets/websocket_frame.cc",
1511      "websockets/websocket_frame.h",
1512      "websockets/websocket_frame_parser.cc",
1513      "websockets/websocket_frame_parser.h",
1514      "websockets/websocket_handshake_challenge.cc",
1515      "websockets/websocket_handshake_challenge.h",
1516      "websockets/websocket_handshake_constants.cc",
1517      "websockets/websocket_handshake_constants.h",
1518      "websockets/websocket_handshake_request_info.cc",
1519      "websockets/websocket_handshake_request_info.h",
1520      "websockets/websocket_handshake_response_info.cc",
1521      "websockets/websocket_handshake_response_info.h",
1522      "websockets/websocket_handshake_stream_base.cc",
1523      "websockets/websocket_handshake_stream_base.h",
1524      "websockets/websocket_handshake_stream_create_helper.cc",
1525      "websockets/websocket_handshake_stream_create_helper.h",
1526      "websockets/websocket_http2_handshake_stream.cc",
1527      "websockets/websocket_http2_handshake_stream.h",
1528      "websockets/websocket_http3_handshake_stream.cc",
1529      "websockets/websocket_http3_handshake_stream.h",
1530      "websockets/websocket_inflater.cc",
1531      "websockets/websocket_inflater.h",
1532      "websockets/websocket_quic_spdy_stream.cc",
1533      "websockets/websocket_quic_spdy_stream.h",
1534      "websockets/websocket_stream.cc",
1535      "websockets/websocket_stream.h",
1536    ]
1537  }
1538
1539  # ICU support.
1540  if (use_platform_icu_alternatives) {
1541    if (is_android) {
1542      # Use ICU alternative on Android.
1543      sources += [ "base/net_string_util_icu_alternatives_android.cc" ]
1544    } else if (is_ios) {
1545      # Use ICU alternative on iOS.
1546      sources += [ "base/net_string_util_icu_alternatives_ios.mm" ]
1547    } else {
1548      assert(false,
1549             "ICU alternative is not implemented for platform: " + target_os)
1550    }
1551  } else {
1552    # Use ICU.
1553    sources += [
1554      "base/filename_util_icu.cc",
1555      "base/net_string_util_icu.cc",
1556    ]
1557  }
1558
1559  # Brotli support.
1560  if (!disable_brotli_filter) {
1561    sources += [
1562      "filter/brotli_source_stream.cc",
1563      "filter/brotli_source_stream.h",
1564    ]
1565  } else {
1566    sources += [ "filter/brotli_source_stream_disabled.cc" ]
1567  }
1568
1569  # Zstd support.
1570  if (!disable_zstd_filter) {
1571    sources += [
1572      "filter/zstd_source_stream.cc",
1573      "filter/zstd_source_stream.h",
1574    ]
1575  } else {
1576    sources += [
1577      "filter/zstd_source_stream.h",
1578      "filter/zstd_source_stream_disabled.cc",
1579    ]
1580  }
1581
1582  if (!is_debug && !optimize_for_size) {
1583    configs -= [ "//build/config/compiler:default_optimization" ]
1584    configs += [ "//build/config/compiler:optimize_max" ]
1585  }
1586}
1587
1588# net_export.h has its own build target so that code (eg
1589# net_nqe_proto) can use it without depending on the whole of //net.
1590source_set("net_export_header") {
1591  sources = [ "base/net_export.h" ]
1592}
1593
1594# Private dependencies for the //net component and for any build targets (e.g.
1595# source sets with circular dependencies with //net) that need to share the same
1596# dependencies.
1597source_set("net_deps") {
1598  visibility = [
1599    ":net",
1600    "//net/dns",
1601    "//net/dns:dns_client",
1602    "//net/dns:host_resolver",
1603    "//net/dns:host_resolver_manager",
1604    "//net/dns:mdns_client",
1605    "//net/dns/public",
1606    "//net/http:transport_security_state_generated_files",
1607    "//net/third_party/quiche",
1608  ]
1609
1610  public_deps = [
1611    ":constants",
1612    ":cronet_buildflags",
1613    ":isolation_info_proto",
1614    ":net_export_header",
1615    ":preload_decoder",
1616    "//base",
1617    "//base/third_party/dynamic_annotations",
1618    "//net/base/registry_controlled_domains",
1619    "//third_party/protobuf:protobuf_lite",
1620    "//third_party/zlib",
1621    "//url:buildflags",
1622  ]
1623
1624  if (!disable_file_support) {
1625    public_deps += [ ":net_resources" ]
1626  }
1627
1628  public_configs = net_configs
1629
1630  if (use_gio) {
1631    public_configs += [ "//build/linux:gio_config" ]
1632  }
1633
1634  if (is_android) {
1635    public_deps += [ ":net_jni_headers" ]
1636  }
1637
1638  if (is_fuchsia) {
1639    public_deps += [
1640      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.hardware.network:fuchsia.hardware.network_hlcpp",
1641      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.net.interfaces:fuchsia.net.interfaces_hlcpp",
1642      "//third_party/fuchsia-sdk/sdk/pkg/sys_cpp",
1643    ]
1644  }
1645
1646  if (use_platform_icu_alternatives) {
1647    if (is_android) {
1648      public_deps += [ ":net_jni_headers" ]
1649    }
1650  } else {
1651    public_deps += [
1652      "//base:i18n",
1653      "//third_party/icu",
1654    ]
1655  }
1656
1657  if (!disable_brotli_filter) {
1658    public_deps += [ "//third_party/brotli:dec" ]
1659  } else {
1660    public_deps += [ "//third_party/brotli:headers" ]
1661  }
1662
1663  if (!disable_zstd_filter) {
1664    public_deps += [ "//third_party/zstd:decompress" ]
1665  } else {
1666    public_deps += [ "//third_party/zstd:headers" ]
1667  }
1668}
1669
1670# Public dependencies for the //net component and for any build targets (e.g.
1671# source sets with circular dependencies with //net) that need to share the same
1672# dependencies.
1673source_set("net_public_deps") {
1674  visibility = [
1675    ":net",
1676    "//net/dns",
1677    "//net/dns:dns_client",
1678    "//net/dns:host_resolver",
1679    "//net/dns:host_resolver_manager",
1680    "//net/dns:mdns_client",
1681    "//net/dns/public",
1682    "//net/http:transport_security_state_generated_files",
1683    "//net/third_party/quiche",
1684  ]
1685
1686  public_deps = [
1687    ":buildflags",
1688    ":net_nqe_proto",
1689    ":uri_template",
1690    "//base",
1691    "//crypto",
1692    "//net/third_party/quiche",
1693    "//net/third_party/quiche:net_quic_test_tools_proto",
1694    "//net/traffic_annotation",
1695    "//third_party/boringssl",
1696    "//url",
1697  ]
1698
1699  if (chrome_root_store_supported) {
1700    public_deps += [ "//net/cert:root_store_proto_lite" ]
1701  }
1702}
1703
1704if (is_android) {
1705  java_cpp_enum("effective_connection_type_java") {
1706    sources = [ "//net/nqe/effective_connection_type.h" ]
1707  }
1708}
1709
1710component("uri_template") {
1711  sources = [
1712    "third_party/uri_template/uri_template.cc",
1713    "third_party/uri_template/uri_template.h",
1714  ]
1715  visibility = [
1716    ":net_public_deps",
1717    "//net/third_party/quiche",
1718  ]
1719  defines = [ "IS_URI_TEMPLATE_IMPL" ]
1720  public_deps = [ "//base" ]
1721}
1722
1723grit("net_resources") {
1724  source = "base/net_resources.grd"
1725  outputs = [
1726    "grit/net_resources.h",
1727    "net_resources.pak",
1728  ]
1729}
1730
1731proto_library("net_nqe_proto") {
1732  visibility = [ ":net_public_deps" ]
1733
1734  sources = [ "nqe/proto/network_id_proto.proto" ]
1735  cc_generator_options = "dllexport_decl=NET_EXPORT_PRIVATE:"
1736  cc_include = "net/base/net_export.h"
1737  component_build_force_source_set = true
1738
1739  deps = [ ":net_export_header" ]
1740
1741  defines = [ "NET_IMPLEMENTATION" ]
1742
1743  extra_configs = [ "//build/config/compiler:wexit_time_destructors" ]
1744}
1745
1746proto_library("isolation_info_proto") {
1747  sources = [ "base/isolation_info.proto" ]
1748}
1749
1750component("extras") {
1751  sources = [
1752    "extras/sqlite/cookie_crypto_delegate.h",
1753    "extras/sqlite/sqlite_persistent_cookie_store.cc",
1754    "extras/sqlite/sqlite_persistent_cookie_store.h",
1755    "extras/sqlite/sqlite_persistent_shared_dictionary_store.cc",
1756    "extras/sqlite/sqlite_persistent_shared_dictionary_store.h",
1757    "extras/sqlite/sqlite_persistent_store_backend_base.cc",
1758    "extras/sqlite/sqlite_persistent_store_backend_base.h",
1759  ]
1760  defines = [ "IS_NET_EXTRAS_IMPL" ]
1761  configs += [ "//build/config/compiler:wexit_time_destructors" ]
1762  deps = [
1763    ":net",
1764    "//base",
1765    "//sql:sql",
1766  ]
1767  public_deps = [ ":shared_dictionary" ]
1768
1769  if (enable_reporting) {
1770    sources += [
1771      "extras/sqlite/sqlite_persistent_reporting_and_nel_store.cc",
1772      "extras/sqlite/sqlite_persistent_reporting_and_nel_store.h",
1773    ]
1774  }
1775}
1776
1777component("shared_dictionary") {
1778  sources = [
1779    "extras/shared_dictionary/shared_dictionary_info.cc",
1780    "extras/shared_dictionary/shared_dictionary_info.h",
1781    "extras/shared_dictionary/shared_dictionary_isolation_key.cc",
1782    "extras/shared_dictionary/shared_dictionary_isolation_key.h",
1783    "extras/shared_dictionary/shared_dictionary_usage_info.h",
1784  ]
1785  defines = [ "IS_NET_SHARED_DICTIONARY_IMPL" ]
1786  configs += [ "//build/config/compiler:wexit_time_destructors" ]
1787  deps = [
1788    ":net",
1789    "//base",
1790  ]
1791}
1792
1793static_library("preload_decoder") {
1794  sources = [
1795    "extras/preload_data/decoder.cc",
1796    "extras/preload_data/decoder.h",
1797  ]
1798  deps = [ "//base" ]
1799}
1800
1801if (!is_ios) {
1802  executable("dump_cache") {
1803    testonly = true
1804    sources = [
1805      "tools/dump_cache/dump_cache.cc",
1806      "tools/dump_cache/dump_files.cc",
1807      "tools/dump_cache/dump_files.h",
1808    ]
1809
1810    deps = [
1811      ":net",
1812      ":test_support",
1813      "//base",
1814      "//build/win:default_exe_manifest",
1815    ]
1816  }
1817}
1818
1819if (is_ios) {
1820  bundle_data_from_filelist("test_support_bundle_data") {
1821    visibility = [ ":test_support" ]
1822    testonly = true
1823    filelist_name = "data/test_support_bundle_data.filelist"
1824  }
1825}
1826
1827static_library("gtest_util") {
1828  testonly = true
1829  sources = [
1830    "test/gtest_util.h",
1831    "test/scoped_disable_exit_on_dfatal.cc",
1832    "test/scoped_disable_exit_on_dfatal.h",
1833  ]
1834  public_deps = [
1835    "//base",
1836    "//base/test:test_support",
1837    "//net",
1838    "//testing/gmock",
1839    "//testing/gtest",
1840  ]
1841}
1842
1843static_library("test_support") {
1844  testonly = true
1845  sources = [
1846    "base/connection_endpoint_metadata_test_util.cc",
1847    "base/connection_endpoint_metadata_test_util.h",
1848    "base/load_timing_info_test_util.cc",
1849    "base/load_timing_info_test_util.h",
1850    "base/mock_file_stream.cc",
1851    "base/mock_file_stream.h",
1852    "base/mock_network_change_notifier.cc",
1853    "base/mock_network_change_notifier.h",
1854    "base/test_completion_callback.cc",
1855    "base/test_completion_callback.h",
1856    "base/test_data_stream.cc",
1857    "base/test_data_stream.h",
1858    "cert/internal/cert_issuer_source_sync_unittest.h",
1859    "cert/internal/test_helpers.cc",
1860    "cert/internal/test_helpers.h",
1861    "cert/mock_cert_net_fetcher.cc",
1862    "cert/mock_cert_net_fetcher.h",
1863    "cert/mock_cert_verifier.cc",
1864    "cert/mock_cert_verifier.h",
1865    "cert/mock_client_cert_verifier.cc",
1866    "cert/mock_client_cert_verifier.h",
1867    "cookies/canonical_cookie_test_helpers.h",
1868    "cookies/cookie_change_dispatcher_test_helpers.cc",
1869    "cookies/cookie_change_dispatcher_test_helpers.h",
1870    "cookies/cookie_monster_store_test.cc",
1871    "cookies/cookie_monster_store_test.h",
1872    "cookies/cookie_store_change_unittest.h",
1873    "cookies/cookie_store_test_callbacks.cc",
1874    "cookies/cookie_store_test_callbacks.h",
1875    "cookies/cookie_store_test_helpers.cc",
1876    "cookies/cookie_store_test_helpers.h",
1877    "cookies/cookie_store_unittest.h",
1878    "cookies/test_cookie_access_delegate.cc",
1879    "cookies/test_cookie_access_delegate.h",
1880    "disk_cache/disk_cache_test_base.cc",
1881    "disk_cache/disk_cache_test_base.h",
1882    "disk_cache/disk_cache_test_util.cc",
1883    "disk_cache/disk_cache_test_util.h",
1884    "disk_cache/mock/mock_backend_impl.cc",
1885    "disk_cache/mock/mock_backend_impl.h",
1886    "disk_cache/mock/mock_entry_impl.cc",
1887    "disk_cache/mock/mock_entry_impl.h",
1888    "filter/filter_source_stream_test_util.cc",
1889    "filter/filter_source_stream_test_util.h",
1890    "filter/mock_source_stream.cc",
1891    "filter/mock_source_stream.h",
1892    "http/http_response_headers_test_util.cc",
1893    "http/http_response_headers_test_util.h",
1894    "http/http_stream_factory_test_util.cc",
1895    "http/http_stream_factory_test_util.h",
1896    "http/http_transaction_test_util.cc",
1897    "http/http_transaction_test_util.h",
1898    "http/mock_http_cache.cc",
1899    "http/mock_http_cache.h",
1900    "http/transport_security_state_test_util.cc",
1901    "http/transport_security_state_test_util.h",
1902    "log/test_net_log.cc",
1903    "log/test_net_log.h",
1904    "log/test_net_log_util.cc",
1905    "log/test_net_log_util.h",
1906    "nqe/network_quality_estimator_test_util.cc",
1907    "nqe/network_quality_estimator_test_util.h",
1908    "proxy_resolution/mock_pac_file_fetcher.cc",
1909    "proxy_resolution/mock_pac_file_fetcher.h",
1910    "proxy_resolution/mock_proxy_resolver.cc",
1911    "proxy_resolution/mock_proxy_resolver.h",
1912    "proxy_resolution/proxy_config_service_common_unittest.cc",
1913    "proxy_resolution/proxy_config_service_common_unittest.h",
1914    "socket/read_buffering_stream_socket.cc",
1915    "socket/read_buffering_stream_socket.h",
1916    "socket/socket_test_util.cc",
1917    "socket/socket_test_util.h",
1918    "socket/transport_client_socket_test_util.cc",
1919    "socket/transport_client_socket_test_util.h",
1920    "spdy/spdy_test_util_common.cc",
1921    "spdy/spdy_test_util_common.h",
1922    "ssl/client_cert_identity_test_util.cc",
1923    "ssl/client_cert_identity_test_util.h",
1924    "ssl/ssl_private_key_test_util.cc",
1925    "ssl/ssl_private_key_test_util.h",
1926    "ssl/test_ssl_config_service.cc",
1927    "ssl/test_ssl_config_service.h",
1928    "ssl/test_ssl_private_key.cc",
1929    "ssl/test_ssl_private_key.h",
1930    "test/cert_builder.cc",
1931    "test/cert_builder.h",
1932    "test/cert_test_util.cc",
1933    "test/cert_test_util.h",
1934    "test/ct_test_util.cc",
1935    "test/ct_test_util.h",
1936    "test/embedded_test_server/connection_tracker.cc",
1937    "test/embedded_test_server/connection_tracker.h",
1938    "test/embedded_test_server/controllable_http_response.cc",
1939    "test/embedded_test_server/controllable_http_response.h",
1940    "test/embedded_test_server/default_handlers.cc",
1941    "test/embedded_test_server/default_handlers.h",
1942    "test/embedded_test_server/embedded_test_server.cc",
1943    "test/embedded_test_server/embedded_test_server.h",
1944    "test/embedded_test_server/embedded_test_server_connection_listener.cc",
1945    "test/embedded_test_server/embedded_test_server_connection_listener.h",
1946    "test/embedded_test_server/http1_connection.cc",
1947    "test/embedded_test_server/http1_connection.h",
1948    "test/embedded_test_server/http2_connection.cc",
1949    "test/embedded_test_server/http2_connection.h",
1950    "test/embedded_test_server/http_connection.cc",
1951    "test/embedded_test_server/http_connection.h",
1952    "test/embedded_test_server/http_request.cc",
1953    "test/embedded_test_server/http_request.h",
1954    "test/embedded_test_server/http_response.cc",
1955    "test/embedded_test_server/http_response.h",
1956    "test/embedded_test_server/request_handler_util.cc",
1957    "test/embedded_test_server/request_handler_util.h",
1958    "test/embedded_test_server/simple_connection_listener.cc",
1959    "test/embedded_test_server/simple_connection_listener.h",
1960    "test/event_waiter.h",
1961    "test/key_util.cc",
1962    "test/key_util.h",
1963    "test/net_test_suite.cc",
1964    "test/net_test_suite.h",
1965    "test/quic_simple_test_server.cc",
1966    "test/quic_simple_test_server.h",
1967    "test/revocation_builder.cc",
1968    "test/revocation_builder.h",
1969    "test/ssl_test_util.cc",
1970    "test/ssl_test_util.h",
1971    "test/test_certificate_data.h",
1972    "test/test_data_directory.cc",
1973    "test/test_data_directory.h",
1974    "test/test_doh_server.cc",
1975    "test/test_doh_server.h",
1976    "test/test_with_task_environment.h",
1977    "test/url_request/ssl_certificate_error_job.cc",
1978    "test/url_request/ssl_certificate_error_job.h",
1979    "test/url_request/url_request_failed_job.cc",
1980    "test/url_request/url_request_failed_job.h",
1981    "test/url_request/url_request_hanging_read_job.cc",
1982    "test/url_request/url_request_hanging_read_job.h",
1983    "test/url_request/url_request_mock_data_job.cc",
1984    "test/url_request/url_request_mock_data_job.h",
1985    "url_request/url_request_test_job.cc",
1986    "url_request/url_request_test_job.h",
1987    "url_request/url_request_test_util.cc",
1988    "url_request/url_request_test_util.h",
1989  ]
1990
1991  if (is_linux || is_chromeos || is_android) {
1992    sources += [
1993      "base/address_tracker_linux_test_util.cc",
1994      "base/address_tracker_linux_test_util.h",
1995    ]
1996  }
1997
1998  configs += [ "//build/config:precompiled_headers" ]
1999
2000  public_deps = [
2001    ":cronet_buildflags",
2002    ":gtest_util",
2003    "//base",
2004    "//base/test:test_support",
2005    "//crypto",
2006    "//net",
2007    "//net/dns:test_support",
2008    "//net/tools/tld_cleanup",
2009    "//net/traffic_annotation:test_support",
2010    "//testing/gmock",
2011    "//testing/gtest",
2012    "//url",
2013  ]
2014
2015  deps = [
2016    ":quic_test_flags_utils",
2017    ":simple_quic_tools",
2018    "//net/http:transport_security_state_unittest_data_default",
2019    "//third_party/zlib",
2020  ]
2021
2022  allow_circular_includes_from = [ "//net/dns:test_support" ]
2023
2024  # Data dependencies shared with suites other than net_unittests.
2025  data = [
2026    "data/cert_net_fetcher_impl_unittest/",
2027    "data/dns/",
2028    "data/ov_name_constraints/",
2029    "data/parse_certificate_unittest/",
2030    "data/ssl/",
2031    "data/url_request_unittest/",
2032    "data/websocket/",
2033  ]
2034
2035  if (is_mac) {
2036    frameworks = [ "Security.framework" ]
2037  }
2038
2039  if (is_ios) {
2040    deps += [ ":test_support_bundle_data" ]
2041  }
2042
2043  if (use_nss_certs) {
2044    configs += [ "//build/config/linux/nss" ]
2045  }
2046
2047  if (enable_websockets || (is_cronet_build && !is_ios)) {
2048    sources += [
2049      "test/spawned_test_server/base_test_server.cc",
2050      "test/spawned_test_server/base_test_server.h",
2051      "test/spawned_test_server/spawned_test_server.h",
2052    ]
2053  }
2054
2055  public_configs = [ ":net_test_config" ]
2056
2057  if (use_remote_test_server) {
2058    sources += [
2059      "test/spawned_test_server/remote_test_server.cc",
2060      "test/spawned_test_server/remote_test_server.h",
2061      "test/spawned_test_server/remote_test_server_spawner_request.cc",
2062      "test/spawned_test_server/remote_test_server_spawner_request.h",
2063    ]
2064  } else if (!is_ios) {
2065    sources += [
2066      "test/spawned_test_server/local_test_server.cc",
2067      "test/spawned_test_server/local_test_server.h",
2068    ]
2069    if (is_win) {
2070      sources += [ "test/spawned_test_server/local_test_server_win.cc" ]
2071    } else if (is_posix || is_fuchsia) {
2072      sources += [ "test/spawned_test_server/local_test_server_posix.cc" ]
2073    }
2074  }
2075
2076  if (enable_python_utils) {
2077    sources += [
2078      "test/python_utils.cc",
2079      "test/python_utils.h",
2080    ]
2081  }
2082
2083  if (use_nss_certs) {
2084    sources += [ "test/cert_test_util_nss.cc" ]
2085  }
2086
2087  if (!disable_file_support) {
2088    sources += [
2089      "test/url_request/url_request_mock_http_job.cc",
2090      "test/url_request/url_request_mock_http_job.h",
2091      "test/url_request/url_request_test_job_backed_by_file.cc",
2092      "test/url_request/url_request_test_job_backed_by_file.h",
2093    ]
2094  }
2095
2096  if (enable_reporting) {
2097    sources += [
2098      "network_error_logging/mock_persistent_nel_store.cc",
2099      "network_error_logging/mock_persistent_nel_store.h",
2100      "network_error_logging/network_error_logging_test_util.cc",
2101      "network_error_logging/network_error_logging_test_util.h",
2102      "reporting/mock_persistent_reporting_store.cc",
2103      "reporting/mock_persistent_reporting_store.h",
2104      "reporting/reporting_test_util.cc",
2105      "reporting/reporting_test_util.h",
2106    ]
2107  }
2108}
2109
2110if (!is_ios && !is_android) {
2111  executable("cert_verify_tool") {
2112    testonly = true
2113    sources = [
2114      "tools/cert_verify_tool/cert_verify_tool.cc",
2115      "tools/cert_verify_tool/cert_verify_tool_util.cc",
2116      "tools/cert_verify_tool/cert_verify_tool_util.h",
2117      "tools/cert_verify_tool/verify_using_cert_verify_proc.cc",
2118      "tools/cert_verify_tool/verify_using_cert_verify_proc.h",
2119      "tools/cert_verify_tool/verify_using_path_builder.cc",
2120      "tools/cert_verify_tool/verify_using_path_builder.h",
2121    ]
2122
2123    deps = [
2124      ":net",
2125      ":test_support",
2126      "//base",
2127      "//build/win:default_exe_manifest",
2128    ]
2129
2130    if (is_mac) {
2131      frameworks = [ "Security.framework" ]
2132    }
2133  }
2134
2135  proto_library("cert_verify_comparison_tool_proto") {
2136    sources = [ "tools/cert_verify_tool/dumper.proto" ]
2137
2138    visibility = [ ":cert_verify_comparison_tool" ]
2139  }
2140
2141  executable("cert_verify_comparison_tool") {
2142    testonly = true
2143    sources = [
2144      "tools/cert_verify_tool/cert_verify_comparision_tool.cc",
2145      "tools/cert_verify_tool/cert_verify_tool_util.cc",
2146      "tools/cert_verify_tool/cert_verify_tool_util.h",
2147      "tools/cert_verify_tool/verify_using_cert_verify_proc.cc",
2148      "tools/cert_verify_tool/verify_using_cert_verify_proc.h",
2149    ]
2150
2151    deps = [
2152      ":cert_verify_comparison_tool_proto",
2153      ":net",
2154      ":test_support",
2155      "//base",
2156      "//build/win:default_exe_manifest",
2157    ]
2158
2159    if (is_mac) {
2160      frameworks = [ "Security.framework" ]
2161    }
2162  }
2163
2164  executable("crash_cache") {
2165    testonly = true
2166    sources = [ "tools/crash_cache/crash_cache.cc" ]
2167
2168    deps = [
2169      ":net",
2170      ":test_support",
2171      "//base",
2172      "//build/win:default_exe_manifest",
2173    ]
2174  }
2175
2176  executable("hpack_example_generator") {
2177    testonly = true
2178    sources = [ "spdy/fuzzing/hpack_example_generator.cc" ]
2179
2180    deps = [
2181      ":net",
2182      ":spdy_test_tools",
2183      "//base",
2184      "//build/win:default_exe_manifest",
2185    ]
2186  }
2187
2188  executable("net_watcher") {
2189    testonly = true
2190    sources = [ "tools/net_watcher/net_watcher.cc" ]
2191    deps = [
2192      ":net",
2193      "//base",
2194      "//build:chromeos_buildflags",
2195      "//build/win:default_exe_manifest",
2196    ]
2197  }
2198
2199  executable("run_testserver") {
2200    testonly = true
2201    sources = [ "tools/testserver/run_testserver.cc" ]
2202    deps = [
2203      ":test_support",
2204      "//base",
2205      "//base/test:test_support",
2206      "//build/win:default_exe_manifest",
2207      "//testing/gtest",
2208    ]
2209  }
2210
2211  executable("stress_cache") {
2212    testonly = true
2213    sources = [ "tools/stress_cache/stress_cache.cc" ]
2214
2215    deps = [
2216      ":net",
2217      ":test_support",
2218      "//base",
2219      "//build/win:default_exe_manifest",
2220    ]
2221  }
2222
2223  executable("tld_cleanup") {
2224    sources = [ "tools/tld_cleanup/tld_cleanup.cc" ]
2225
2226    deps = [
2227      "//base",
2228      "//base:i18n",
2229      "//build/win:default_exe_manifest",
2230      "//net/tools/tld_cleanup",
2231    ]
2232  }
2233}
2234
2235if (use_external_gssapi) {
2236  # In order for the tests to be reliable, these two targets cannot depend on a
2237  # valid GSSAPI library. This is easy to achieve on most platforms. But on
2238  # macOS care must be taken to not depend directly or indirectly on
2239  # GSS.framework. This is suprisingly easy to get wrong since
2240  # Security.framework is such a common dependency and it indirectly depends on
2241  # GSS.
2242  shared_library("test_gssapi") {
2243    testonly = true
2244    sources = [
2245      "tools/gssapi/gss_import_name.cc",
2246      "tools/gssapi/gss_methods.cc",
2247      "tools/gssapi/gss_types.h",
2248    ]
2249  }
2250
2251  shared_library("test_badgssapi") {
2252    testonly = true
2253    sources = [
2254      "tools/gssapi/gss_methods.cc",
2255      "tools/gssapi/gss_types.h",
2256    ]
2257  }
2258}
2259
2260if (is_linux || is_chromeos || is_mac) {
2261  executable("cachetool") {
2262    testonly = true
2263    sources = [ "tools/cachetool/cachetool.cc" ]
2264    deps = [
2265      ":net",
2266      ":test_support",
2267      "//base",
2268    ]
2269  }
2270
2271  executable("content_decoder_tool") {
2272    testonly = true
2273    sources = [
2274      "tools/content_decoder_tool/content_decoder_tool.cc",
2275      "tools/content_decoder_tool/content_decoder_tool.h",
2276      "tools/content_decoder_tool/content_decoder_tool_bin.cc",
2277    ]
2278    deps = [
2279      ":net",
2280      ":test_support",
2281      "//base",
2282      "//url",
2283    ]
2284  }
2285}
2286
2287if (is_android) {
2288  generate_jni("net_jni_headers") {
2289    sources = [
2290      "android/java/src/org/chromium/net/AndroidCertVerifyResult.java",
2291      "android/java/src/org/chromium/net/AndroidKeyStore.java",
2292      "android/java/src/org/chromium/net/AndroidNetworkLibrary.java",
2293      "android/java/src/org/chromium/net/AndroidTrafficStats.java",
2294      "android/java/src/org/chromium/net/DnsStatus.java",
2295      "android/java/src/org/chromium/net/GURLUtils.java",
2296      "android/java/src/org/chromium/net/HttpNegotiateAuthenticator.java",
2297      "android/java/src/org/chromium/net/HttpUtil.java",
2298      "android/java/src/org/chromium/net/NetStringUtil.java",
2299      "android/java/src/org/chromium/net/NetworkActiveNotifier.java",
2300      "android/java/src/org/chromium/net/NetworkChangeNotifier.java",
2301      "android/java/src/org/chromium/net/ProxyChangeListener.java",
2302      "android/java/src/org/chromium/net/X509Util.java",
2303    ]
2304  }
2305}
2306
2307if (is_android || is_linux || is_chromeos) {
2308  executable("disk_cache_memory_test") {
2309    testonly = true
2310    sources = [ "tools/disk_cache_memory_test/disk_cache_memory_test.cc" ]
2311    deps = [
2312      ":net",
2313      "//base",
2314    ]
2315  }
2316}
2317
2318source_set("spdy_test_tools") {
2319  testonly = true
2320  sources = [
2321    "spdy/fuzzing/hpack_fuzz_util.cc",
2322    "spdy/fuzzing/hpack_fuzz_util.h",
2323  ]
2324  deps = [
2325    ":net",
2326    "//base",
2327    "//testing/gmock",
2328    "//testing/gtest",
2329  ]
2330}
2331
2332source_set("quic_test_flags_utils") {
2333  testonly = true
2334  sources = [
2335    "quic/platform/impl/quic_test_flags_utils.cc",
2336    "quic/platform/impl/quic_test_flags_utils.h",
2337  ]
2338  deps = [ ":net" ]
2339}
2340
2341source_set("quic_test_tools") {
2342  testonly = true
2343  sources = [
2344    "quic/crypto_test_utils_chromium.cc",
2345    "quic/crypto_test_utils_chromium.h",
2346    "quic/mock_crypto_client_stream.cc",
2347    "quic/mock_crypto_client_stream.h",
2348    "quic/mock_crypto_client_stream_factory.cc",
2349    "quic/mock_crypto_client_stream_factory.h",
2350    "quic/mock_decrypter.cc",
2351    "quic/mock_decrypter.h",
2352    "quic/mock_encrypter.cc",
2353    "quic/mock_encrypter.h",
2354    "quic/mock_quic_context.cc",
2355    "quic/mock_quic_context.h",
2356    "quic/test_task_runner.cc",
2357    "quic/test_task_runner.h",
2358  ]
2359  deps = [
2360    ":net",
2361    ":simple_quic_tools",
2362    ":test_support",
2363    "//base",
2364    "//crypto:test_support",
2365    "//testing/gmock",
2366    "//testing/gtest",
2367    "//third_party/boringssl",
2368    "//third_party/protobuf:protobuf_lite",
2369    "//third_party/quic_trace:quic_trace_proto",
2370  ]
2371  public_deps = [
2372    ":quic_test_flags_utils",
2373    "//net/third_party/quiche:quiche_test_support",
2374  ]
2375}
2376
2377source_set("simple_quic_tools") {
2378  testonly = true
2379  sources = [
2380    "tools/quic/quic_client_message_loop_network_helper.cc",
2381    "tools/quic/quic_client_message_loop_network_helper.h",
2382    "tools/quic/quic_simple_client.cc",
2383    "tools/quic/quic_simple_client.h",
2384    "tools/quic/quic_simple_server.cc",
2385    "tools/quic/quic_simple_server.h",
2386    "tools/quic/quic_simple_server_packet_writer.cc",
2387    "tools/quic/quic_simple_server_packet_writer.h",
2388    "tools/quic/quic_simple_server_session_helper.cc",
2389    "tools/quic/quic_simple_server_session_helper.h",
2390    "tools/quic/quic_simple_server_socket.cc",
2391    "tools/quic/quic_simple_server_socket.h",
2392    "tools/quic/synchronous_host_resolver.cc",
2393    "tools/quic/synchronous_host_resolver.h",
2394  ]
2395  deps = [
2396    ":net",
2397    "//base",
2398    "//base/third_party/dynamic_annotations",
2399    "//net/third_party/quiche:quiche_tool_support",
2400    "//third_party/protobuf:protobuf_lite",
2401    "//url",
2402  ]
2403  public_deps = [ "//net/third_party/quiche:quiche_tool_support" ]
2404}
2405
2406if (!is_ios) {
2407  executable("quic_client") {
2408    testonly = true
2409    sources = [ "tools/quic/quic_simple_client_bin.cc" ]
2410    deps = [
2411      ":net",
2412      ":simple_quic_tools",
2413      "//base",
2414      "//build/win:default_exe_manifest",
2415      "//net/third_party/quiche:quic_client_core",
2416      "//url",
2417    ]
2418  }
2419  executable("quic_server") {
2420    testonly = true
2421    sources = [
2422      "tools/quic/quic_simple_server_backend_factory.cc",
2423      "tools/quic/quic_simple_server_backend_factory.h",
2424      "tools/quic/quic_simple_server_bin.cc",
2425    ]
2426    deps = [
2427      ":net",
2428      ":simple_quic_tools",
2429      "//base",
2430      "//build/win:default_exe_manifest",
2431      "//net/third_party/quiche:quic_server_core",
2432      "//third_party/boringssl",
2433      "//third_party/protobuf:protobuf_lite",
2434    ]
2435  }
2436  executable("crypto_message_printer") {
2437    testonly = true
2438    sources = [ "tools/quic/crypto_message_printer_bin.cc" ]
2439    deps = [
2440      ":net",
2441      "//base",
2442      "//build/win:default_exe_manifest",
2443    ]
2444  }
2445}
2446
2447if (is_ios) {
2448  bundle_data_from_filelist("net_test_bundle_data") {
2449    testonly = true
2450    filelist_name = "data/test_bundle_data.filelist"
2451  }
2452}
2453
2454test("net_unittests") {
2455  sources = [
2456    "base/address_family_unittest.cc",
2457    "base/address_list_unittest.cc",
2458    "base/backoff_entry_serializer_unittest.cc",
2459    "base/backoff_entry_unittest.cc",
2460    "base/chunked_upload_data_stream_unittest.cc",
2461    "base/data_url_unittest.cc",
2462    "base/datagram_buffer_unittest.cc",
2463    "base/elements_upload_data_stream_unittest.cc",
2464    "base/expiring_cache_unittest.cc",
2465    "base/file_stream_unittest.cc",
2466    "base/filename_util_unittest.cc",
2467    "base/host_mapping_rules_unittest.cc",
2468    "base/host_port_pair_unittest.cc",
2469    "base/interval_test.cc",
2470    "base/ip_address_unittest.cc",
2471    "base/ip_endpoint_unittest.cc",
2472    "base/isolation_info_unittest.cc",
2473    "base/lookup_string_in_fixed_set_unittest.cc",
2474    "base/mime_sniffer_unittest.cc",
2475    "base/mime_util_unittest.cc",
2476    "base/net_errors_unittest.cc",
2477    "base/net_string_util_unittest.cc",
2478    "base/network_activity_monitor_unittest.cc",
2479    "base/network_anonymization_key_unittest.cc",
2480    "base/network_change_notifier_unittest.cc",
2481    "base/network_delegate_unittest.cc",
2482    "base/network_interfaces_unittest.cc",
2483    "base/network_isolation_key_unittest.cc",
2484    "base/parse_number_unittest.cc",
2485    "base/port_util_unittest.cc",
2486    "base/prioritized_dispatcher_unittest.cc",
2487    "base/prioritized_task_runner_unittest.cc",
2488    "base/priority_queue_unittest.cc",
2489    "base/proxy_chain_unittest.cc",
2490    "base/proxy_server_unittest.cc",
2491    "base/proxy_string_util_unittest.cc",
2492    "base/registry_controlled_domains/registry_controlled_domain_unittest.cc",
2493    "base/scheme_host_port_matcher_rule_unittest.cc",
2494    "base/scheme_host_port_matcher_unittest.cc",
2495    "base/schemeful_site_unittest.cc",
2496    "base/test_completion_callback_unittest.cc",
2497    "base/test_proxy_delegate.cc",
2498    "base/test_proxy_delegate.h",
2499    "base/upload_bytes_element_reader_unittest.cc",
2500    "base/upload_file_element_reader_unittest.cc",
2501    "base/url_search_params_unittest.cc",
2502    "base/url_util_unittest.cc",
2503    "cert/caching_cert_verifier_unittest.cc",
2504    "cert/cert_and_ct_verifier_unittest.cc",
2505    "cert/cert_database_unittest.cc",
2506    "cert/cert_verifier_unittest.cc",
2507    "cert/cert_verify_proc_builtin_unittest.cc",
2508    "cert/cert_verify_proc_unittest.cc",
2509    "cert/coalescing_cert_verifier_unittest.cc",
2510    "cert/crl_set_unittest.cc",
2511    "cert/ct_log_response_parser_unittest.cc",
2512    "cert/ct_log_verifier_unittest.cc",
2513    "cert/ct_objects_extractor_unittest.cc",
2514    "cert/ct_serialization_unittest.cc",
2515    "cert/ev_root_ca_metadata_unittest.cc",
2516    "cert/internal/cert_issuer_source_aia_unittest.cc",
2517    "cert/internal/cert_issuer_source_sync_unittest.cc",
2518    "cert/internal/revocation_checker_unittest.cc",
2519    "cert/internal/system_trust_store_unittest.cc",
2520    "cert/known_roots_unittest.cc",
2521    "cert/merkle_audit_proof_unittest.cc",
2522    "cert/merkle_tree_leaf_unittest.cc",
2523    "cert/multi_log_ct_verifier_unittest.cc",
2524    "cert/multi_threaded_cert_verifier_unittest.cc",
2525    "cert/signed_certificate_timestamp_unittest.cc",
2526    "cert/symantec_certs_unittest.cc",
2527    "cert/test_root_certs_unittest.cc",
2528    "cert/time_conversions_unittest.cc",
2529    "cert/x509_cert_types_unittest.cc",
2530    "cert/x509_certificate_unittest.cc",
2531    "cert/x509_util_unittest.cc",
2532    "cert_net/cert_net_fetcher_url_request_unittest.cc",
2533    "cookies/canonical_cookie_unittest.cc",
2534    "cookies/cookie_constants_unittest.cc",
2535    "cookies/cookie_deletion_info_unittest.cc",
2536    "cookies/cookie_inclusion_status_unittest.cc",
2537    "cookies/cookie_monster_unittest.cc",
2538    "cookies/cookie_options_unittest.cc",
2539    "cookies/cookie_partition_key_collection_unittest.cc",
2540    "cookies/cookie_partition_key_unittest.cc",
2541    "cookies/cookie_util_unittest.cc",
2542    "cookies/parsed_cookie_unittest.cc",
2543    "cookies/site_for_cookies_unittest.cc",
2544    "cookies/static_cookie_policy_unittest.cc",
2545    "disk_cache/backend_cleanup_tracker_unittest.cc",
2546    "disk_cache/backend_unittest.cc",
2547    "disk_cache/blockfile/addr_unittest.cc",
2548    "disk_cache/blockfile/bitmap_unittest.cc",
2549    "disk_cache/blockfile/block_files_unittest.cc",
2550    "disk_cache/blockfile/mapped_file_unittest.cc",
2551    "disk_cache/blockfile/stats_unittest.cc",
2552    "disk_cache/blockfile/storage_block_unittest.cc",
2553    "disk_cache/cache_util_unittest.cc",
2554    "disk_cache/entry_unittest.cc",
2555    "disk_cache/simple/simple_file_enumerator_unittest.cc",
2556    "disk_cache/simple/simple_file_tracker_unittest.cc",
2557    "disk_cache/simple/simple_index_file_unittest.cc",
2558    "disk_cache/simple/simple_index_unittest.cc",
2559    "disk_cache/simple/simple_test_util.cc",
2560    "disk_cache/simple/simple_test_util.h",
2561    "disk_cache/simple/simple_util_unittest.cc",
2562    "disk_cache/simple/simple_version_upgrade_unittest.cc",
2563    "filter/filter_source_stream_unittest.cc",
2564    "filter/gzip_source_stream_unittest.cc",
2565    "first_party_sets/addition_overlaps_union_find_unittest.cc",
2566    "first_party_sets/first_party_set_entry_override_unittest.cc",
2567    "first_party_sets/first_party_sets_cache_filter_unittest.cc",
2568    "first_party_sets/first_party_sets_context_config_unittest.cc",
2569    "first_party_sets/global_first_party_sets_unittest.cc",
2570    "first_party_sets/local_set_declaration_unittest.cc",
2571    "first_party_sets/sets_mutation_unittest.cc",
2572    "http/alternative_service_unittest.cc",
2573    "http/bidirectional_stream_unittest.cc",
2574    "http/broken_alternative_services_unittest.cc",
2575    "http/http_auth_cache_unittest.cc",
2576    "http/http_auth_challenge_tokenizer_unittest.cc",
2577    "http/http_auth_controller_unittest.cc",
2578    "http/http_auth_filter_unittest.cc",
2579    "http/http_auth_handler_basic_unittest.cc",
2580    "http/http_auth_handler_digest_unittest.cc",
2581    "http/http_auth_handler_factory_unittest.cc",
2582    "http/http_auth_handler_mock.cc",
2583    "http/http_auth_handler_mock.h",
2584    "http/http_auth_handler_unittest.cc",
2585    "http/http_auth_multi_round_parse_unittest.cc",
2586    "http/http_auth_preferences_unittest.cc",
2587    "http/http_auth_unittest.cc",
2588    "http/http_basic_state_unittest.cc",
2589    "http/http_byte_range_unittest.cc",
2590    "http/http_cache_unittest.cc",
2591    "http/http_cache_writers_unittest.cc",
2592    "http/http_chunked_decoder_unittest.cc",
2593    "http/http_content_disposition_unittest.cc",
2594    "http/http_log_util_unittest.cc",
2595    "http/http_network_layer_unittest.cc",
2596    "http/http_network_transaction_unittest.cc",
2597    "http/http_no_vary_search_data_unittest.cc",
2598    "http/http_proxy_client_socket_unittest.cc",
2599    "http/http_proxy_connect_job_unittest.cc",
2600    "http/http_request_headers_unittest.cc",
2601    "http/http_request_info_unittest.cc",
2602    "http/http_response_body_drainer_unittest.cc",
2603    "http/http_response_headers_unittest.cc",
2604    "http/http_response_info_unittest.cc",
2605    "http/http_security_headers_unittest.cc",
2606    "http/http_server_properties_manager_unittest.cc",
2607    "http/http_server_properties_unittest.cc",
2608    "http/http_status_code_unittest.cc",
2609    "http/http_stream_factory_job_controller_unittest.cc",
2610    "http/http_stream_factory_unittest.cc",
2611    "http/http_stream_parser_unittest.cc",
2612    "http/http_stream_request_unittest.cc",
2613    "http/http_transaction_test_util_unittest.cc",
2614    "http/http_util_unittest.cc",
2615    "http/http_vary_data_unittest.cc",
2616    "http/mock_allow_http_auth_preferences.cc",
2617    "http/mock_allow_http_auth_preferences.h",
2618    "http/test_upload_data_stream_not_allow_http1.cc",
2619    "http/test_upload_data_stream_not_allow_http1.h",
2620    "http/transport_security_persister_unittest.cc",
2621    "http/transport_security_state_unittest.cc",
2622    "http/url_security_manager_unittest.cc",
2623    "log/file_net_log_observer_unittest.cc",
2624    "log/net_log_capture_mode_unittest.cc",
2625    "log/net_log_unittest.cc",
2626    "log/net_log_util_unittest.cc",
2627    "log/net_log_values_unittest.cc",
2628    "nqe/effective_connection_type_unittest.cc",
2629    "nqe/event_creator_unittest.cc",
2630    "nqe/network_id_unittest.cc",
2631    "nqe/network_qualities_prefs_manager_unittest.cc",
2632    "nqe/network_quality_estimator_params_unittest.cc",
2633    "nqe/network_quality_estimator_unittest.cc",
2634    "nqe/network_quality_estimator_util_unittest.cc",
2635    "nqe/network_quality_store_unittest.cc",
2636    "nqe/observation_buffer_unittest.cc",
2637    "nqe/socket_watcher_unittest.cc",
2638    "nqe/throughput_analyzer_unittest.cc",
2639    "proxy_resolution/configured_proxy_resolution_service_unittest.cc",
2640    "proxy_resolution/multi_threaded_proxy_resolver_unittest.cc",
2641    "proxy_resolution/network_delegate_error_observer_unittest.cc",
2642    "proxy_resolution/pac_file_decider_unittest.cc",
2643    "proxy_resolution/pac_file_fetcher_impl_unittest.cc",
2644    "proxy_resolution/proxy_bypass_rules_unittest.cc",
2645    "proxy_resolution/proxy_config_unittest.cc",
2646    "proxy_resolution/proxy_info_unittest.cc",
2647    "proxy_resolution/proxy_list_unittest.cc",
2648    "quic/bidirectional_stream_quic_impl_unittest.cc",
2649    "quic/crypto/proof_test_chromium.cc",
2650    "quic/crypto/proof_verifier_chromium_test.cc",
2651    "quic/dedicated_web_transport_http3_client_test.cc",
2652    "quic/mock_quic_data.cc",
2653    "quic/mock_quic_data.h",
2654    "quic/network_connection_unittest.cc",
2655    "quic/platform/impl/quic_chromium_clock_test.cc",
2656    "quic/properties_based_quic_server_info_test.cc",
2657    "quic/quic_address_mismatch_test.cc",
2658    "quic/quic_chromium_alarm_factory_test.cc",
2659    "quic/quic_chromium_client_session_peer.cc",
2660    "quic/quic_chromium_client_session_peer.h",
2661    "quic/quic_chromium_client_session_test.cc",
2662    "quic/quic_chromium_client_stream_test.cc",
2663    "quic/quic_chromium_connection_helper_test.cc",
2664    "quic/quic_clock_skew_detector_test.cc",
2665    "quic/quic_end_to_end_unittest.cc",
2666    "quic/quic_http_stream_test.cc",
2667    "quic/quic_http_utils_test.cc",
2668    "quic/quic_network_transaction_unittest.cc",
2669    "quic/quic_proxy_client_socket_unittest.cc",
2670    "quic/quic_stream_factory_peer.cc",
2671    "quic/quic_stream_factory_peer.h",
2672    "quic/quic_stream_factory_test.cc",
2673    "quic/quic_test_packet_maker.cc",
2674    "quic/quic_test_packet_maker.h",
2675    "quic/quic_test_packet_printer.cc",
2676    "quic/quic_test_packet_printer.h",
2677    "quic/set_quic_flag_test.cc",
2678    "quic/test_quic_crypto_client_config_handle.cc",
2679    "quic/test_quic_crypto_client_config_handle.h",
2680    "socket/client_socket_pool_base_unittest.cc",
2681    "socket/client_socket_pool_unittest.cc",
2682    "socket/connect_job_factory_unittest.cc",
2683    "socket/connect_job_test_util.cc",
2684    "socket/connect_job_test_util.h",
2685    "socket/connect_job_unittest.cc",
2686    "socket/mock_client_socket_pool_manager.cc",
2687    "socket/mock_client_socket_pool_manager.h",
2688    "socket/sequenced_socket_data_unittest.cc",
2689    "socket/socket_bio_adapter_unittest.cc",
2690    "socket/socket_tag_unittest.cc",
2691    "socket/socks5_client_socket_unittest.cc",
2692    "socket/socks_client_socket_unittest.cc",
2693    "socket/socks_connect_job_unittest.cc",
2694    "socket/ssl_client_socket_unittest.cc",
2695    "socket/ssl_connect_job_unittest.cc",
2696    "socket/ssl_server_socket_unittest.cc",
2697    "socket/tcp_client_socket_unittest.cc",
2698    "socket/tcp_server_socket_unittest.cc",
2699    "socket/tcp_socket_unittest.cc",
2700    "socket/transport_client_socket_pool_test_util.cc",
2701    "socket/transport_client_socket_pool_test_util.h",
2702    "socket/transport_client_socket_pool_unittest.cc",
2703    "socket/transport_client_socket_unittest.cc",
2704    "socket/transport_connect_job_unittest.cc",
2705    "socket/udp_socket_unittest.cc",
2706    "socket/websocket_endpoint_lock_manager_unittest.cc",
2707    "socket/websocket_transport_client_socket_pool_unittest.cc",
2708    "spdy/alps_decoder_test.cc",
2709    "spdy/bidirectional_stream_spdy_impl_unittest.cc",
2710    "spdy/buffered_spdy_framer_unittest.cc",
2711    "spdy/fuzzing/hpack_fuzz_util_test.cc",
2712    "spdy/header_coalescer_test.cc",
2713    "spdy/http2_priority_dependencies_unittest.cc",
2714    "spdy/spdy_buffer_unittest.cc",
2715    "spdy/spdy_http_stream_unittest.cc",
2716    "spdy/spdy_http_utils_unittest.cc",
2717    "spdy/spdy_log_util_unittest.cc",
2718    "spdy/spdy_network_transaction_unittest.cc",
2719    "spdy/spdy_proxy_client_socket_unittest.cc",
2720    "spdy/spdy_read_queue_unittest.cc",
2721    "spdy/spdy_session_key_unittest.cc",
2722    "spdy/spdy_session_pool_unittest.cc",
2723    "spdy/spdy_session_test_util.cc",
2724    "spdy/spdy_session_test_util.h",
2725    "spdy/spdy_session_unittest.cc",
2726    "spdy/spdy_stream_test_util.cc",
2727    "spdy/spdy_stream_test_util.h",
2728    "spdy/spdy_stream_unittest.cc",
2729    "spdy/spdy_write_queue_unittest.cc",
2730    "ssl/client_cert_identity_unittest.cc",
2731    "ssl/client_cert_store_unittest-inl.h",
2732    "ssl/ssl_cipher_suite_names_unittest.cc",
2733    "ssl/ssl_client_auth_cache_unittest.cc",
2734    "ssl/ssl_client_session_cache_unittest.cc",
2735    "ssl/ssl_config_service_unittest.cc",
2736    "ssl/ssl_config_unittest.cc",
2737    "ssl/ssl_connection_status_flags_unittest.cc",
2738    "ssl/ssl_platform_key_util_unittest.cc",
2739    "test/embedded_test_server/embedded_test_server_unittest.cc",
2740    "test/embedded_test_server/http_request_unittest.cc",
2741    "test/embedded_test_server/http_response_unittest.cc",
2742    "test/run_all_unittests.cc",
2743    "third_party/nist-pkits/pkits_testcases-inl.h",
2744    "third_party/uri_template/uri_template_test.cc",
2745    "tools/content_decoder_tool/content_decoder_tool.cc",
2746    "tools/content_decoder_tool/content_decoder_tool.h",
2747    "tools/content_decoder_tool/content_decoder_tool_unittest.cc",
2748    "tools/quic/quic_simple_client_test.cc",
2749    "tools/tld_cleanup/tld_cleanup_util_unittest.cc",
2750    "url_request/redirect_info_unittest.cc",
2751    "url_request/redirect_util_unittest.cc",
2752    "url_request/report_sender_unittest.cc",
2753    "url_request/url_request_context_builder_unittest.cc",
2754    "url_request/url_request_filter_unittest.cc",
2755    "url_request/url_request_http_job_unittest.cc",
2756    "url_request/url_request_job_factory_unittest.cc",
2757    "url_request/url_request_job_unittest.cc",
2758    "url_request/url_request_quic_unittest.cc",
2759    "url_request/url_request_throttler_simulation_unittest.cc",
2760    "url_request/url_request_throttler_test_support.cc",
2761    "url_request/url_request_throttler_test_support.h",
2762    "url_request/url_request_throttler_unittest.cc",
2763    "url_request/url_request_unittest.cc",
2764    "url_request/view_cache_helper_unittest.cc",
2765  ]
2766
2767  if (is_android) {
2768    sources += [
2769      "android/dummy_spnego_authenticator.cc",
2770      "android/dummy_spnego_authenticator.h",
2771      "android/http_auth_negotiate_android_unittest.cc",
2772      "android/network_change_notifier_android_unittest.cc",
2773      "android/network_library_unittest.cc",
2774      "android/traffic_stats_unittest.cc",
2775      "cert/cert_verify_proc_android_unittest.cc",
2776      "proxy_resolution/proxy_config_service_android_unittest.cc",
2777      "ssl/ssl_platform_key_android_unittest.cc",
2778    ]
2779  }
2780
2781  if (is_chromeos_ash && use_nss_certs) {
2782    sources += [
2783      "cert/nss_cert_database_chromeos_unittest.cc",
2784      "cert/nss_profile_filter_chromeos_unittest.cc",
2785    ]
2786  }
2787
2788  if (is_linux) {
2789    sources += [
2790      "base/network_change_notifier_linux_unittest.cc",
2791      "proxy_resolution/proxy_config_service_linux_unittest.cc",
2792    ]
2793  }
2794
2795  if (is_linux || is_chromeos) {
2796    sources += [
2797      "base/address_tracker_linux_unittest.cc",
2798      "base/network_interfaces_linux_unittest.cc",
2799    ]
2800  }
2801
2802  if (is_mac) {
2803    sources += [
2804      "cert/internal/trust_store_mac_unittest.cc",
2805      "ssl/client_cert_store_mac_unittest.cc",
2806      "ssl/ssl_platform_key_mac_unittest.cc",
2807    ]
2808  }
2809
2810  if (is_apple) {
2811    sources += [
2812      "cert/x509_util_apple_unittest.cc",
2813      "proxy_resolution/proxy_server_util_mac_unittest.cc",
2814    ]
2815  }
2816
2817  if (is_win) {
2818    sources += [
2819      "base/network_change_notifier_win_unittest.cc",
2820      "base/network_interfaces_win_unittest.cc",
2821      "http/http_auth_sspi_win_unittest.cc",
2822      "http/mock_sspi_library_win.cc",
2823      "http/mock_sspi_library_win.h",
2824      "proxy_resolution/win/dhcp_pac_file_adapter_fetcher_win_unittest.cc",
2825      "proxy_resolution/win/dhcp_pac_file_fetcher_win_unittest.cc",
2826      "proxy_resolution/win/proxy_config_service_win_unittest.cc",
2827      "proxy_resolution/win/windows_system_proxy_resolution_service_unittest.cc",
2828      "ssl/client_cert_store_win_unittest.cc",
2829      "ssl/ssl_platform_key_win_unittest.cc",
2830    ]
2831  }
2832
2833  configs += [ "//build/config:precompiled_headers" ]
2834  defines = []
2835
2836  deps = [
2837    ":cronet_buildflags",
2838    ":net",
2839    ":preload_decoder",
2840    ":quic_test_tools",
2841    ":simple_quic_tools",
2842    ":spdy_test_tools",
2843    ":test_support",
2844    "//base",
2845    "//base:i18n",
2846    "//base/third_party/dynamic_annotations",
2847    "//build:chromeos_buildflags",
2848    "//crypto",
2849    "//crypto:test_support",
2850    "//net/base/registry_controlled_domains",
2851    "//net/base/registry_controlled_domains:lookup_strings_test_sets",
2852    "//net/dns:tests",
2853    "//net/dns/public:tests",
2854    "//net/http:transport_security_state_unittest_data",
2855    "//net/http:transport_security_state_unittest_data_default",
2856    "//net/third_party/quiche:quiche_tests",
2857    "//net/tools/huffman_trie:huffman_trie_generator_sources",
2858    "//testing/gmock",
2859    "//testing/gtest",
2860    "//third_party/anonymous_tokens:anonymous_tokens_tests",
2861    "//third_party/protobuf:protobuf_lite",
2862    "//third_party/zlib",
2863    "//url",
2864    "//url:buildflags",
2865  ]
2866
2867  if (!is_cronet_build) {
2868    sources += [
2869      "extras/shared_dictionary/shared_dictionary_isolation_key_unittest.cc",
2870      "extras/sqlite/sqlite_persistent_cookie_store_unittest.cc",
2871      "extras/sqlite/sqlite_persistent_shared_dictionary_store_unittest.cc",
2872      "log/trace_net_log_observer_unittest.cc",
2873    ]
2874
2875    deps += [
2876      ":extras",
2877      "//components/sqlite_proto",
2878      "//sql",
2879      "//sql:test_support",
2880    ]
2881  }
2882
2883  if (enable_websockets) {
2884    deps += [ "//net/server:tests" ]
2885  }
2886
2887  if (is_posix) {
2888    sources += [ "base/sockaddr_util_posix_unittest.cc" ]
2889  }
2890
2891  if (is_android || is_chromeos_ash) {
2892    sources += [ "base/network_change_notifier_passive_unittest.cc" ]
2893  }
2894
2895  if (enable_reporting) {
2896    sources += [
2897      "network_error_logging/mock_persistent_nel_store_unittest.cc",
2898      "network_error_logging/network_error_logging_service_unittest.cc",
2899      "reporting/mock_persistent_reporting_store_unittest.cc",
2900      "reporting/reporting_browsing_data_remover_unittest.cc",
2901      "reporting/reporting_cache_unittest.cc",
2902      "reporting/reporting_delivery_agent_unittest.cc",
2903      "reporting/reporting_endpoint_manager_unittest.cc",
2904      "reporting/reporting_garbage_collector_unittest.cc",
2905      "reporting/reporting_header_parser_unittest.cc",
2906      "reporting/reporting_network_change_observer_unittest.cc",
2907      "reporting/reporting_service_unittest.cc",
2908      "reporting/reporting_uploader_unittest.cc",
2909    ]
2910    if (!is_cronet_build) {
2911      sources += [
2912        "extras/sqlite/sqlite_persistent_reporting_and_nel_store_unittest.cc",
2913      ]
2914    }
2915  }
2916
2917  data = [
2918    "data/cache_tests/",
2919    "data/certificate_policies_unittest/",
2920    "data/cert_issuer_source_aia_unittest/",
2921    "data/cert_issuer_source_static_unittest/",
2922    "data/crl_unittest/",
2923    "data/embedded_test_server/",
2924    "data/file_stream_unittest/",
2925    "data/filter_unittests/",
2926    "data/gencerts/",
2927    "data/name_constraints_unittest/",
2928    "data/ocsp_unittest/",
2929    "data/pac_file_fetcher_unittest/",
2930    "data/path_builder_unittest/",
2931    "data/quic_http_response_cache_data/",
2932    "data/quic_http_response_cache_data_with_push/",
2933    "data/spdy_tests/",
2934    "data/test.html",
2935    "data/verify_certificate_chain_unittest/",
2936    "data/verify_name_match_unittest/",
2937    "data/verify_signed_data_unittest/",
2938  ]
2939  data_deps = [
2940    "third_party/nist-pkits/",
2941    "//testing/buildbot/filters:net_unittests_filters",
2942  ]
2943
2944  if (is_linux || is_chromeos || is_mac || is_win || is_fuchsia) {
2945    deps += [ "//third_party/pywebsocket3/" ]
2946    data_deps += [ "//third_party/pywebsocket3/" ]
2947    data += [
2948      "tools/testserver/",
2949      "//third_party/pywebsocket3/src/mod_pywebsocket/",
2950    ]
2951  }
2952
2953  if (is_linux || is_chromeos) {
2954    sources += [ "tools/quic/quic_simple_server_test.cc" ]
2955  }
2956
2957  if (is_apple) {
2958    sources += [ "base/mac/url_conversions_unittest.mm" ]
2959  }
2960
2961  if (is_mac) {
2962    frameworks = [ "Security.framework" ]
2963  }
2964
2965  if (!is_win) {
2966    sources += [
2967      "http/http_auth_handler_ntlm_portable_unittest.cc",
2968      "ntlm/ntlm_buffer_reader_unittest.cc",
2969      "ntlm/ntlm_buffer_writer_unittest.cc",
2970      "ntlm/ntlm_client_unittest.cc",
2971      "ntlm/ntlm_test_data.h",
2972      "ntlm/ntlm_unittest.cc",
2973    ]
2974  }
2975
2976  if (enable_python_utils) {
2977    sources += [ "test/python_utils_unittest.cc" ]
2978  }
2979
2980  if (is_fuchsia) {
2981    use_test_server = true
2982    deps += [
2983      "//third_party/fuchsia-sdk/sdk/fidl/fuchsia.net.interfaces:fuchsia.net.interfaces_hlcpp",
2984      "//third_party/fuchsia-sdk/sdk/pkg/fidl_cpp",
2985    ]
2986    sources += [
2987      "base/fuchsia/network_interface_cache_unittest.cc",
2988      "base/network_change_notifier_fuchsia_unittest.cc",
2989    ]
2990    additional_manifest_fragments =
2991        [ "//build/config/fuchsia/test/network.shard.test-cml" ]
2992  }
2993
2994  if (use_nss_certs) {
2995    sources += [
2996      "cert/internal/system_trust_store_nss_unittest.cc",
2997      "cert/internal/trust_store_nss_unittest.cc",
2998      "cert/nss_cert_database_unittest.cc",
2999      "cert/x509_util_nss_unittest.cc",
3000    ]
3001    if (!is_castos) {
3002      sources += [
3003        "ssl/client_cert_store_nss_unittest.cc",
3004        "ssl/ssl_platform_key_nss_unittest.cc",
3005      ]
3006    }
3007    configs += [ "//build/config/linux/nss" ]
3008  }
3009
3010  if (use_external_gssapi) {
3011    sources += [
3012      "http/http_auth_gssapi_posix_unittest.cc",
3013      "http/mock_gssapi_library_posix.cc",
3014      "http/mock_gssapi_library_posix.h",
3015    ]
3016    data_deps += [
3017      ":test_badgssapi",
3018      ":test_gssapi",
3019    ]
3020  }
3021
3022  if (use_kerberos) {
3023    sources += [ "http/http_auth_handler_negotiate_unittest.cc" ]
3024  }
3025
3026  if (enable_websockets) {
3027    sources += [
3028      "websockets/websocket_basic_handshake_stream_test.cc",
3029      "websockets/websocket_basic_stream_adapters_test.cc",
3030      "websockets/websocket_basic_stream_test.cc",
3031      "websockets/websocket_channel_test.cc",
3032      "websockets/websocket_deflate_parameters_test.cc",
3033      "websockets/websocket_deflate_predictor_impl_test.cc",
3034      "websockets/websocket_deflate_stream_test.cc",
3035      "websockets/websocket_deflater_test.cc",
3036      "websockets/websocket_errors_test.cc",
3037      "websockets/websocket_extension_parser_test.cc",
3038      "websockets/websocket_extension_test.cc",
3039      "websockets/websocket_frame_parser_test.cc",
3040      "websockets/websocket_frame_test.cc",
3041      "websockets/websocket_handshake_challenge_test.cc",
3042      "websockets/websocket_handshake_stream_create_helper_test.cc",
3043      "websockets/websocket_inflater_test.cc",
3044      "websockets/websocket_stream_cookie_test.cc",
3045      "websockets/websocket_stream_create_test_base.cc",
3046      "websockets/websocket_stream_create_test_base.h",
3047      "websockets/websocket_stream_test.cc",
3048      "websockets/websocket_test_util.cc",
3049      "websockets/websocket_test_util.h",
3050    ]
3051
3052    if (!is_ios) {
3053      # TODO(crbug.com/1281277): iOS does not have support for the spawned test
3054      # server, which is used by this test. The long term plan is to add
3055      # websocket support to the embedded test server and when that happens,
3056      # this test could be enabled.
3057      sources += [ "websockets/websocket_end_to_end_test.cc" ]
3058    }
3059  }
3060
3061  if (!disable_file_support) {
3062    sources += [
3063      "base/directory_lister_unittest.cc",
3064      "base/directory_listing_unittest.cc",
3065      "test/url_request/url_request_test_job_backed_by_file_unittest.cc",
3066    ]
3067  }
3068
3069  if (enable_built_in_dns) {
3070    sources += [ "url_request/http_with_dns_over_https_unittest.cc" ]
3071  }
3072
3073  if (is_ios) {
3074    bundle_deps = [
3075      ":net_test_bundle_data",
3076      "//net/third_party/nist-pkits:test_bundle_data",
3077    ]
3078  }
3079
3080  if (enable_unix_sockets) {
3081    sources += [
3082      "socket/unix_domain_client_socket_posix_unittest.cc",
3083      "socket/unix_domain_server_socket_posix_unittest.cc",
3084    ]
3085  }
3086
3087  # Use getifaddrs() on POSIX platforms, except Linux.
3088  if (is_posix && !is_linux && !is_chromeos) {
3089    sources += [ "base/network_interfaces_getifaddrs_unittest.cc" ]
3090  }
3091
3092  # Unit tests that aren't supported by the current ICU alternatives on Android.
3093  if (is_android && use_platform_icu_alternatives) {
3094    sources -= [
3095      "base/filename_util_unittest.cc",
3096      "base/url_util_unittest.cc",
3097      "cert/x509_certificate_unittest.cc",
3098      "url_request/url_request_job_unittest.cc",
3099    ]
3100    deps += [ "//url:url_java" ]
3101  }
3102
3103  # Unit tests that are not supported by the current ICU alternatives on iOS.
3104  if (is_ios && use_platform_icu_alternatives) {
3105    sources -= [
3106      "base/filename_util_unittest.cc",
3107      "base/url_util_unittest.cc",
3108      "cert/x509_certificate_unittest.cc",
3109      "http/http_auth_handler_basic_unittest.cc",
3110      "http/http_auth_handler_digest_unittest.cc",
3111      "http/http_auth_handler_factory_unittest.cc",
3112      "http/http_auth_unittest.cc",
3113      "http/http_content_disposition_unittest.cc",
3114      "http/http_network_transaction_unittest.cc",
3115      "spdy/spdy_network_transaction_unittest.cc",
3116      "spdy/spdy_proxy_client_socket_unittest.cc",
3117      "url_request/url_request_job_unittest.cc",
3118      "url_request/url_request_unittest.cc",
3119    ]
3120  }
3121
3122  if (!disable_brotli_filter) {
3123    sources += [ "filter/brotli_source_stream_unittest.cc" ]
3124  }
3125
3126  if (!disable_zstd_filter) {
3127    sources += [ "filter/zstd_source_stream_unittest.cc" ]
3128  }
3129
3130  if (is_android) {
3131    data_deps += [ "//net/tools/testserver:testserver_py" ]
3132    deps += [
3133      ":net_jni_headers",
3134      "//base:base_java_unittest_support",
3135      "//net/android:net_java",
3136      "//net/android:net_java_test_support",
3137      "//net/android:net_test_support_jni",
3138      "//net/android:net_test_support_provider_java",
3139      "//net/android:net_test_support_provider_jni",
3140      "//net/android:net_tests_java",
3141      "//net/android:net_tests_jni",
3142      "//net/android:net_unittests_apk_resources",
3143
3144      # TODO(mmenke):  This depends on test_support_base, which depends on
3145      #                icu.  Figure out a way to remove that dependency.
3146      "//testing/android/native_test:native_test_native_code",
3147    ]
3148    android_manifest = "//net/android/unittest_support/AndroidManifest.xml"
3149
3150    sources += [
3151      "base/address_tracker_linux_unittest.cc",
3152      "base/network_interfaces_linux_unittest.cc",
3153    ]
3154    shard_timeout = 300
3155  }
3156
3157  if (is_win) {
3158    libs = [
3159      "iphlpapi.lib",
3160      "ncrypt.lib",
3161    ]
3162  }
3163
3164  if (chrome_root_store_supported) {
3165    sources += [ "cert/internal/trust_store_chrome_unittest.cc" ]
3166    deps += [ "//net/data/ssl/chrome_root_store:gen_root_store_test_inc" ]
3167
3168    if (is_win) {
3169      sources += [ "cert/internal/trust_store_win_unittest.cc" ]
3170      sources += [ "cert/internal/path_builder_trust_store_win_unittest.cc" ]
3171      libs += [ "crypt32.lib" ]
3172    }
3173  }
3174
3175  # Include transport_security_state_generator tests.
3176  if (host_toolchain == current_toolchain) {
3177    deps += [
3178      "//net/tools/huffman_trie:huffman_trie_generator_test_sources",
3179      "//net/tools/transport_security_state_generator:transport_security_state_generator_test_sources",
3180    ]
3181  }
3182}
3183
3184# !is_android && !is_win && !is_mac
3185if (!is_ios) {
3186  # TODO(crbug.com/594965): this should be converted to "app" template and
3187  # enabled on iOS too.
3188  test("net_perftests") {
3189    sources = [
3190      "base/mime_sniffer_perftest.cc",
3191      "cookies/cookie_monster_perftest.cc",
3192      "disk_cache/disk_cache_perftest.cc",
3193      "extras/sqlite/sqlite_persistent_cookie_store_perftest.cc",
3194      "socket/udp_socket_perftest.cc",
3195      "spdy/spdy_http_utils_perftest.cc",
3196      "url_request/url_request_quic_perftest.cc",
3197    ]
3198
3199    deps = [
3200      ":extras",
3201      ":net",
3202      ":quic_test_tools",
3203      ":simple_quic_tools",
3204      ":test_support",
3205      "//base",
3206      "//base:i18n",
3207      "//base/test:test_support_perf",
3208      "//testing/gtest",
3209      "//testing/perf",
3210      "//third_party/google_benchmark:google_benchmark",
3211      "//url",
3212    ]
3213    data_deps = [
3214      # Needed for isolate script to execute.
3215      "//testing:run_perf_test",
3216    ]
3217    if (enable_websockets) {
3218      sources += [ "websockets/websocket_frame_perftest.cc" ]
3219    }
3220    if (is_win) {
3221      deps += [ "//build/win:default_exe_manifest" ]
3222    }
3223  }
3224}
3225
3226# Fuzzers
3227
3228# This has a global (InitGlobals) that must always be linked in, so
3229# must be a source set instead of a static library.
3230if (use_fuzzing_engine) {
3231  # fuzzer_test targets are no-op when |use_fuzzing_engine| is false. Fuzzer
3232  # support targets should be disabled too.
3233  source_set("net_fuzzer_test_support") {
3234    testonly = true
3235
3236    sources = [
3237      "base/fuzzer_test_support.cc",
3238      "filter/fuzzed_source_stream.cc",
3239      "filter/fuzzed_source_stream.h",
3240      "socket/fuzzed_datagram_client_socket.cc",
3241      "socket/fuzzed_datagram_client_socket.h",
3242      "socket/fuzzed_server_socket.cc",
3243      "socket/fuzzed_server_socket.h",
3244      "socket/fuzzed_socket.cc",
3245      "socket/fuzzed_socket.h",
3246      "socket/fuzzed_socket_factory.cc",
3247      "socket/fuzzed_socket_factory.h",
3248    ]
3249    public_deps = [
3250      "//base/test:test_support",
3251      "//net/dns:fuzzer_test_support",
3252    ]
3253    deps = [
3254      "//base",
3255      "//base:i18n",
3256      "//net",
3257    ]
3258    data = [
3259      "data/fuzzer_data",
3260      "data/fuzzer_dictionaries",
3261    ]
3262    allow_circular_includes_from = [ "//net/dns:fuzzer_test_support" ]
3263  }
3264}
3265
3266fuzzer_test("host_port_pair_fuzzer") {
3267  sources = [ "base/host_port_pair_fuzzer.cc" ]
3268  deps = [ "//net" ]
3269}
3270
3271proto_library("disk_cache_lpm_fuzzer_proto") {
3272  sources = [ "disk_cache/disk_cache_fuzzer.proto" ]
3273}
3274
3275fuzzer_test("disk_cache_lpm_fuzzer") {
3276  sources = [ "disk_cache/disk_cache_fuzzer.cc" ]
3277  deps = [
3278    ":disk_cache_lpm_fuzzer_proto",
3279    ":test_support",
3280    "//base",
3281    "//net",
3282    "//third_party/libprotobuf-mutator",
3283  ]
3284}
3285
3286proto_library("backoff_entry_serializer_fuzzer_input") {
3287  proto_in_dir = "//"
3288  sources = [ "base/backoff_entry_serializer_fuzzer_input.proto" ]
3289  link_deps = [ "//testing/libfuzzer/proto:json_proto" ]
3290}
3291
3292fuzzer_test("net_backoff_entry_serializer_fuzzer") {
3293  sources = [ "base/backoff_entry_serializer_fuzzer.cc" ]
3294  deps = [
3295    ":backoff_entry_serializer_fuzzer_input",
3296    ":net_fuzzer_test_support",
3297    ":test_support",
3298    "//base",
3299    "//net",
3300    "//testing/libfuzzer/proto:json_proto",
3301    "//testing/libfuzzer/proto:json_proto_converter",
3302    "//third_party/libprotobuf-mutator",
3303  ]
3304}
3305
3306fuzzer_test("net_data_url_fuzzer") {
3307  sources = [ "base/data_url_fuzzer.cc" ]
3308  deps = [
3309    ":net_fuzzer_test_support",
3310    ":test_support",
3311    "//base",
3312    "//net",
3313  ]
3314  dict = "data/fuzzer_dictionaries/net_data_url_fuzzer.dict"
3315
3316  # IsTokenChar() and ToLowerASCII() are surprisingly slow in instrumented builds.
3317  libfuzzer_options = [ "max_len=100000" ]
3318}
3319
3320fuzzer_test("net_mime_sniffer_fuzzer") {
3321  sources = [ "base/mime_sniffer_fuzzer.cc" ]
3322  deps = [
3323    ":net_fuzzer_test_support",
3324    "//base",
3325    "//net",
3326  ]
3327  dict = "data/fuzzer_dictionaries/net_mime_sniffer_fuzzer.dict"
3328}
3329
3330fuzzer_test("net_parse_proxy_list_pac_fuzzer") {
3331  sources = [ "proxy_resolution/parse_proxy_list_pac_fuzzer.cc" ]
3332  deps = [
3333    ":net_fuzzer_test_support",
3334    "//net",
3335  ]
3336}
3337
3338fuzzer_test("net_parse_proxy_list_fuzzer") {
3339  sources = [ "proxy_resolution/parse_proxy_list_fuzzer.cc" ]
3340  deps = [
3341    ":net_fuzzer_test_support",
3342    "//net",
3343  ]
3344}
3345
3346fuzzer_test("net_parse_proxy_bypass_rules_fuzzer") {
3347  sources = [ "proxy_resolution/parse_proxy_bypass_rules_fuzzer.cc" ]
3348
3349  libfuzzer_options = [
3350    # The proxy bypass rules aren't very complicated, so this is more than
3351    # enough to explore the grammar. Allowing the length to become too large
3352    # can result in test timeouts (https://crbug.com/813619).
3353    "max_len=512",
3354  ]
3355
3356  deps = [
3357    ":net_fuzzer_test_support",
3358    "//net",
3359  ]
3360}
3361
3362fuzzer_test("net_parse_proxy_rules_fuzzer") {
3363  sources = [ "proxy_resolution/parse_proxy_rules_fuzzer.cc" ]
3364  deps = [
3365    ":net_fuzzer_test_support",
3366    "//net",
3367  ]
3368  dict = "data/fuzzer_dictionaries/net_parse_proxy_bypass_rules_fuzzer.dict"
3369}
3370
3371fuzzer_test("net_get_domain_and_registry_fuzzer") {
3372  sources =
3373      [ "base/registry_controlled_domains/get_domain_and_registry_fuzzer.cc" ]
3374  deps = [
3375    ":net_fuzzer_test_support",
3376    "//base",
3377    "//net",
3378  ]
3379  dict = "data/fuzzer_dictionaries/net_get_domain_and_registry_fuzzer.dict"
3380}
3381
3382fuzzer_test("net_lookup_string_in_fixed_set_fuzzer") {
3383  sources = [ "base/lookup_string_in_fixed_set_fuzzer.cc" ]
3384  deps = [
3385    ":net_fuzzer_test_support",
3386    "//base",
3387    "//net",
3388    "//net/base/registry_controlled_domains:lookup_strings_test_sets",
3389  ]
3390  dict = "data/fuzzer_dictionaries/net_get_domain_and_registry_fuzzer.dict"
3391}
3392
3393fuzzer_test("net_base_schemeful_site_fuzzer") {
3394  sources = [ "base/schemeful_site_fuzzer.cc" ]
3395  deps = [
3396    ":net_fuzzer_test_support",
3397    "//base",
3398    "//net",
3399    "//testing/libfuzzer/proto:url_proto",
3400    "//testing/libfuzzer/proto:url_proto_converter",
3401    "//third_party/libprotobuf-mutator",
3402  ]
3403}
3404
3405fuzzer_test("net_cert_ct_decode_signed_certificate_timestamp_fuzzer") {
3406  sources = [ "cert/decode_signed_certificate_timestamp_fuzzer.cc" ]
3407  deps = [
3408    ":net_fuzzer_test_support",
3409    "//base",
3410    "//net",
3411  ]
3412}
3413
3414fuzzer_test("net_canonical_cookie_fuzzer") {
3415  sources = [ "cookies/canonical_cookie_fuzzer.cc" ]
3416  deps = [
3417    ":net_fuzzer_test_support",
3418    "//net",
3419  ]
3420  dict = "data/fuzzer_dictionaries/net_cookies_fuzzer.dict"
3421  seed_corpus = "data/fuzzer_data/cookies/"
3422}
3423
3424fuzzer_test("net_cookie_partition_key_fuzzer") {
3425  sources = [ "cookies/cookie_partition_key_fuzzer.cc" ]
3426  deps = [
3427    ":net_fuzzer_test_support",
3428    "//net",
3429  ]
3430}
3431
3432fuzzer_test("net_cookie_util_parsing_fuzzer") {
3433  sources = [ "cookies/cookie_util_parsing_fuzzer.cc" ]
3434  deps = [
3435    ":net_fuzzer_test_support",
3436    "//net",
3437  ]
3438  dict = "data/fuzzer_dictionaries/net_cookies_fuzzer.dict"
3439  libfuzzer_options = [ "max_len=8192" ]
3440  seed_corpus = "data/fuzzer_data/cookies/"
3441}
3442
3443fuzzer_test("net_parse_cookie_line_fuzzer") {
3444  sources = [ "cookies/parse_cookie_line_fuzzer.cc" ]
3445  deps = [
3446    ":net_fuzzer_test_support",
3447    "//net",
3448  ]
3449  dict = "data/fuzzer_dictionaries/net_cookies_fuzzer.dict"
3450  seed_corpus = "data/fuzzer_data/cookies/"
3451}
3452
3453fuzzer_test("net_http_stream_parser_fuzzer") {
3454  sources = [ "http/http_stream_parser_fuzzer.cc" ]
3455  deps = [
3456    ":net_fuzzer_test_support",
3457    ":test_support",
3458    "//base",
3459    "//net",
3460  ]
3461  dict = "data/fuzzer_dictionaries/net_http_stream_parser_fuzzer.dict"
3462}
3463
3464if (!is_win) {
3465  fuzzer_test("net_ntlm_ntlm_client_fuzzer") {
3466    sources = [
3467      "ntlm/ntlm_client_fuzzer.cc",
3468      "ntlm/ntlm_test_data.h",
3469    ]
3470    deps = [
3471      ":net_fuzzer_test_support",
3472      ":test_support",
3473      "//base",
3474      "//net",
3475    ]
3476    dict = "data/fuzzer_dictionaries/net_ntlm_ntlm_client_fuzzer.dict"
3477    seed_corpus = "data/fuzzer_data/ntlm_client_fuzzer/"
3478  }
3479}
3480
3481if (!disable_brotli_filter) {
3482  fuzzer_test("net_brotli_source_stream_fuzzer") {
3483    sources = [ "filter/brotli_source_stream_fuzzer.cc" ]
3484    deps = [
3485      ":net_fuzzer_test_support",
3486      ":test_support",
3487      "//base",
3488      "//net",
3489    ]
3490  }
3491}
3492
3493if (!disable_zstd_filter) {
3494  fuzzer_test("net_zstd_source_stream_fuzzer") {
3495    sources = [ "filter/zstd_source_stream_fuzzer.cc" ]
3496    deps = [
3497      ":net_fuzzer_test_support",
3498      ":test_support",
3499      "//base",
3500      "//net",
3501    ]
3502  }
3503}
3504
3505fuzzer_test("net_gzip_source_stream_fuzzer") {
3506  sources = [ "filter/gzip_source_stream_fuzzer.cc" ]
3507  deps = [
3508    ":net_fuzzer_test_support",
3509    ":test_support",
3510    "//base",
3511    "//net",
3512  ]
3513}
3514
3515fuzzer_test("net_crl_set_fuzzer") {
3516  sources = [ "cert/crl_set_fuzzer.cc" ]
3517  deps = [
3518    ":net_fuzzer_test_support",
3519    ":test_support",
3520    "//base",
3521    "//net",
3522  ]
3523  seed_corpus = "data/fuzzer_data/net_crl_set_fuzzer/"
3524}
3525
3526fuzzer_test("net_spdy_headers_to_http_response_headers_fuzzer") {
3527  sources = [ "spdy/spdy_headers_to_http_response_headers_fuzzer.cc" ]
3528  deps = [
3529    ":net_fuzzer_test_support",
3530    "//base",
3531    "//net",
3532  ]
3533  dict = "data/fuzzer_dictionaries/net_http_stream_parser_fuzzer.dict"
3534  libfuzzer_options = [ "max_len = 512" ]
3535}
3536
3537fuzzer_test("net_unescape_url_component_fuzzer") {
3538  sources = [ "base/unescape_url_component_fuzzer.cc" ]
3539  deps = [
3540    ":net_fuzzer_test_support",
3541    "//base",
3542    "//net",
3543  ]
3544  dict = "data/fuzzer_dictionaries/unescape_url_component_fuzzer.dict"
3545  libfuzzer_options = [ "max_len = 2048" ]
3546}
3547
3548fuzzer_test("net_websocket_deflate_stream_fuzzer") {
3549  sources = [ "websockets/websocket_deflate_stream_fuzzer.cc" ]
3550  deps = [
3551    ":net_fuzzer_test_support",
3552    "//net",
3553  ]
3554  dict = "data/fuzzer_dictionaries/net_websocket_frame_parser_fuzzer.dict"
3555  libfuzzer_options = [ "max_len=512" ]
3556}
3557
3558fuzzer_test("net_websocket_extension_parser_fuzzer") {
3559  sources = [ "websockets/websocket_extension_parser_fuzzer.cc" ]
3560  deps = [
3561    ":net_fuzzer_test_support",
3562    "//net",
3563  ]
3564  dict = "data/fuzzer_dictionaries/net_websocket_extension_parser_fuzzer.dict"
3565  libfuzzer_options = [ "max_len = 256" ]
3566}
3567
3568fuzzer_test("net_websocket_frame_parser_fuzzer") {
3569  sources = [ "websockets/websocket_frame_parser_fuzzer.cc" ]
3570  deps = [
3571    ":net_fuzzer_test_support",
3572    "//net",
3573  ]
3574  dict = "data/fuzzer_dictionaries/net_websocket_frame_parser_fuzzer.dict"
3575  libfuzzer_options = [ "max_len=256" ]
3576}
3577
3578if (use_fuzzing_engine) {
3579  # This is a separate target because //net/server:http_server
3580  # wants to limit its visibility to a select number of target, but the
3581  # "fuzzer_test" template expands on iOS to many targets that need to
3582  # have the "deps" information propagated in order to support "fat"
3583  # binaries.
3584  source_set("net_web_socket_encoder_fuzzer_deps") {
3585    testonly = true
3586    visibility = [
3587      ":net_web_socket_encoder_fuzzer",
3588      ":net_web_socket_encoder_fuzzer_executable",
3589      ":run_net_web_socket_encoder_fuzzer",
3590    ]
3591    public_deps = [
3592      ":net_fuzzer_test_support",
3593      "//net",
3594      "//net/server:http_server",
3595    ]
3596  }
3597
3598  fuzzer_test("net_web_socket_encoder_fuzzer") {
3599    sources = [ "server/web_socket_encoder_fuzzer.cc" ]
3600    deps = [ ":net_web_socket_encoder_fuzzer_deps" ]
3601    libfuzzer_options = [ "max_len=256" ]
3602  }
3603}
3604
3605fuzzer_test("net_http_chunked_decoder_fuzzer") {
3606  sources = [ "http/http_chunked_decoder_fuzzer.cc" ]
3607  deps = [
3608    ":net_fuzzer_test_support",
3609    "//net",
3610  ]
3611  dict = "data/fuzzer_dictionaries/http_chunked_decoder_fuzzer.dict"
3612}
3613
3614fuzzer_test("net_http_auth_handler_basic_fuzzer") {
3615  sources = [ "http/http_auth_handler_basic_fuzzer.cc" ]
3616  dict = "data/fuzzer_dictionaries/net_http_auth_handler_basic_fuzzer.dict"
3617  deps = [
3618    ":net_fuzzer_test_support",
3619    ":test_support",
3620    "//net",
3621  ]
3622}
3623
3624fuzzer_test("net_http_auth_handler_digest_fuzzer") {
3625  sources = [ "http/http_auth_handler_digest_fuzzer.cc" ]
3626  dict = "data/fuzzer_dictionaries/net_http_auth_handler_digest_fuzzer.dict"
3627  deps = [
3628    ":net_fuzzer_test_support",
3629    ":test_support",
3630    "//net",
3631  ]
3632}
3633
3634fuzzer_test("net_http_auth_handler_fuzzer") {
3635  sources = [ "http/http_auth_handler_fuzzer.cc" ]
3636  deps = [
3637    ":net_fuzzer_test_support",
3638    ":test_support",
3639    "//base",
3640    "//net",
3641  ]
3642}
3643
3644fuzzer_test("net_http_content_disposition_fuzzer") {
3645  sources = [ "http/http_content_disposition_fuzzer.cc" ]
3646  dict = "data/fuzzer_dictionaries/net_http_content_disposition_fuzzer.dict"
3647  deps = [
3648    ":net_fuzzer_test_support",
3649    "//net",
3650  ]
3651}
3652
3653fuzzer_test("net_http_proxy_client_socket_fuzzer") {
3654  sources = [ "http/http_proxy_client_socket_fuzzer.cc" ]
3655  deps = [
3656    ":net_fuzzer_test_support",
3657    ":test_support",
3658    "//base",
3659    "//net",
3660  ]
3661  dict = "data/fuzzer_dictionaries/net_http_proxy_client_socket_fuzzer.dict"
3662}
3663
3664fuzzer_test("net_structured_headers_fuzzer") {
3665  sources = [ "http/structured_headers_fuzzer.cc" ]
3666  deps = [
3667    ":net_fuzzer_test_support",
3668    ":test_support",
3669    "//base",
3670    "//net",
3671  ]
3672  seed_corpus = "data/fuzzer_data/structured_headers_corpus"
3673}
3674
3675fuzzer_test("net_parse_url_hostname_to_address_fuzzer") {
3676  sources = [ "base/parse_url_hostname_to_address_fuzzer.cc" ]
3677  deps = [
3678    ":net_fuzzer_test_support",
3679    "//base",
3680    "//net",
3681  ]
3682  libfuzzer_options = [ "max_len=512" ]
3683  seed_corpus = "data/fuzzer_data/hostnames/"
3684}
3685
3686fuzzer_test("net_quic_crypto_framer_parse_message_fuzzer") {
3687  sources = [ "quic/quic_crypto_framer_parse_message_fuzzer.cc" ]
3688  deps = [
3689    ":net_fuzzer_test_support",
3690    "//base",
3691    "//net",
3692  ]
3693}
3694
3695fuzzer_test("net_quic_transport_parameters_fuzzer") {
3696  sources = [ "quic/quic_transport_parameters_fuzzer.cc" ]
3697  deps = [
3698    ":net_fuzzer_test_support",
3699    "//base",
3700    "//net",
3701  ]
3702}
3703
3704fuzzer_test("net_socks_client_socket_fuzzer") {
3705  sources = [ "socket/socks_client_socket_fuzzer.cc" ]
3706  deps = [
3707    ":net_fuzzer_test_support",
3708    ":test_support",
3709    "//base",
3710    "//net",
3711  ]
3712}
3713
3714fuzzer_test("net_socks5_client_socket_fuzzer") {
3715  sources = [ "socket/socks5_client_socket_fuzzer.cc" ]
3716  deps = [
3717    ":net_fuzzer_test_support",
3718    ":test_support",
3719    "//base",
3720    "//net",
3721  ]
3722}
3723
3724fuzzer_test("net_url_request_fuzzer") {
3725  sources = [ "url_request/url_request_fuzzer.cc" ]
3726  deps = [
3727    ":net_fuzzer_test_support",
3728    ":test_support",
3729    "//base",
3730    "//net",
3731  ]
3732  dict = "data/fuzzer_dictionaries/net_url_request_fuzzer.dict"
3733}
3734
3735fuzzer_test("net_auth_challenge_tokenizer_fuzzer") {
3736  sources = [ "http/http_auth_challenge_tokenizer_fuzzer.cc" ]
3737  deps = [
3738    ":net_fuzzer_test_support",
3739    ":test_support",
3740    "//base",
3741    "//net",
3742  ]
3743}
3744
3745fuzzer_test("net_http_security_headers_hsts_fuzzer") {
3746  sources = [ "http/http_security_headers_hsts_fuzzer.cc" ]
3747  deps = [
3748    "//base",
3749    "//net",
3750  ]
3751  dict = "data/fuzzer_dictionaries/net_http_security_headers_fuzzer.dict"
3752  seed_corpus = "data/fuzzer_data/http_security_headers/"
3753}
3754
3755fuzzer_test("net_http_transport_security_state_static_fuzzer") {
3756  sources = [ "http/transport_security_state_static_fuzzer.cc" ]
3757  deps = [
3758    ":net_fuzzer_test_support",
3759    "//net",
3760  ]
3761  dict =
3762      "data/fuzzer_dictionaries/net_http_transport_security_state_fuzzer.dict"
3763}
3764
3765fuzzer_test("net_spdy_session_fuzzer") {
3766  sources = [ "spdy/spdy_session_fuzzer.cc" ]
3767  deps = [
3768    ":net_fuzzer_test_support",
3769    ":test_support",
3770    "//base",
3771    "//net",
3772    "//net/data/ssl/certificates:generate_fuzzer_cert_includes",
3773  ]
3774  dict = "data/fuzzer_dictionaries/net_spdy_session_fuzzer.dict"
3775  seed_corpus = "data/fuzzer_data/net_spdy_session_fuzzer/"
3776}
3777
3778fuzzer_test("net_http2_frame_decoder_fuzzer") {
3779  sources = [ "spdy/fuzzing/http2_frame_decoder_fuzzer.cc" ]
3780  deps = [
3781    ":net_fuzzer_test_support",
3782    ":test_support",
3783    "//base",
3784    "//net",
3785  ]
3786}
3787
3788fuzzer_test("net_hpack_decoder_fuzzer") {
3789  sources = [ "spdy/fuzzing/hpack_decoder_fuzzer.cc" ]
3790  deps = [
3791    ":net_fuzzer_test_support",
3792    ":test_support",
3793    "//base",
3794    "//net",
3795  ]
3796}
3797
3798proto_library("reporting_policy_proto") {
3799  proto_in_dir = "//"
3800  sources = [ "reporting/reporting_policy.proto" ]
3801  link_deps = [ "//testing/libfuzzer/proto:json_proto" ]
3802}
3803
3804fuzzer_test("net_reporting_header_parser_fuzzer") {
3805  sources = [ "reporting/reporting_header_parser_fuzzer.cc" ]
3806
3807  deps = [
3808    ":net_fuzzer_test_support",
3809    ":reporting_policy_proto",
3810    ":test_support",
3811    "//base",
3812    "//net",
3813    "//testing/libfuzzer/proto:json_proto",
3814    "//testing/libfuzzer/proto:json_proto_converter",
3815    "//third_party/libprotobuf-mutator",
3816  ]
3817}
3818
3819fuzzer_test("net_quic_stream_factory_fuzzer") {
3820  sources = [ "quic/quic_stream_factory_fuzzer.cc" ]
3821
3822  deps = [
3823    ":net_fuzzer_test_support",
3824    ":quic_test_tools",
3825    ":test_support",
3826    "//net",
3827    "//net/data/ssl/certificates:generate_fuzzer_cert_includes",
3828  ]
3829}
3830
3831fuzzer_test("net_uri_template_fuzzer") {
3832  sources = [ "third_party/uri_template/uri_template_fuzzer.cc" ]
3833  deps = [
3834    ":net_fuzzer_test_support",
3835    "//base",
3836    "//net",
3837  ]
3838  dict = "data/fuzzer_dictionaries/net_uri_template_fuzzer.dict"
3839}
3840
3841if (is_linux || is_chromeos) {
3842  fuzzer_test("net_base_address_tracker_linux_fuzzer") {
3843    sources = [ "base/address_tracker_linux_fuzzer.cc" ]
3844    deps = [
3845      ":net_fuzzer_test_support",
3846      ":test_support",
3847      "//base",
3848      "//net",
3849    ]
3850  }
3851}
3852