BUILD.gn 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575
  1. # Copyright 2017 The Chromium Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style license that can be
  3. # found in the LICENSE file.
  4. import("//build/config/chromeos/ui_mode.gni")
  5. import("//mojo/public/tools/bindings/mojom.gni")
  6. import("//net/features.gni")
  7. import("//services/network/public/cpp/features.gni")
  8. import("//testing/libfuzzer/fuzzer_test.gni")
  9. component("network_service") {
  10. sources = [
  11. "brokered_client_socket_factory.cc",
  12. "brokered_client_socket_factory.h",
  13. "chunked_data_pipe_upload_data_stream.cc",
  14. "chunked_data_pipe_upload_data_stream.h",
  15. "conditional_cache_deletion_helper.cc",
  16. "conditional_cache_deletion_helper.h",
  17. "cookie_access_delegate_impl.cc",
  18. "cookie_access_delegate_impl.h",
  19. "cookie_manager.cc",
  20. "cookie_manager.h",
  21. "cookie_settings.cc",
  22. "cookie_settings.h",
  23. "cors/cors_url_loader.cc",
  24. "cors/cors_url_loader.h",
  25. "cors/cors_url_loader_factory.cc",
  26. "cors/cors_url_loader_factory.h",
  27. "cors/cors_util.cc",
  28. "cors/cors_util.h",
  29. "cors/preflight_cache.cc",
  30. "cors/preflight_cache.h",
  31. "cors/preflight_controller.cc",
  32. "cors/preflight_controller.h",
  33. "cors/preflight_result.cc",
  34. "cors/preflight_result.h",
  35. "crl_set_distributor.cc",
  36. "crl_set_distributor.h",
  37. "data_pipe_element_reader.cc",
  38. "data_pipe_element_reader.h",
  39. "disk_cache/mojo_backend_file_operations.cc",
  40. "disk_cache/mojo_backend_file_operations.h",
  41. "disk_cache/mojo_backend_file_operations_factory.cc",
  42. "disk_cache/mojo_backend_file_operations_factory.h",
  43. "dns_config_change_manager.cc",
  44. "dns_config_change_manager.h",
  45. "host_resolver.cc",
  46. "host_resolver.h",
  47. "host_resolver_mdns_listener.cc",
  48. "host_resolver_mdns_listener.h",
  49. "http_auth_cache_copier.cc",
  50. "http_auth_cache_copier.h",
  51. "http_cache_data_counter.cc",
  52. "http_cache_data_counter.h",
  53. "http_cache_data_remover.cc",
  54. "http_cache_data_remover.h",
  55. "http_server_properties_pref_delegate.cc",
  56. "http_server_properties_pref_delegate.h",
  57. "ignore_errors_cert_verifier.cc",
  58. "ignore_errors_cert_verifier.h",
  59. "is_browser_initiated.h",
  60. "keepalive_statistics_recorder.cc",
  61. "keepalive_statistics_recorder.h",
  62. "mojo_host_resolver_impl.cc",
  63. "mojo_host_resolver_impl.h",
  64. "net_log_exporter.cc",
  65. "net_log_exporter.h",
  66. "net_log_proxy_sink.cc",
  67. "net_log_proxy_sink.h",
  68. "network_change_manager.cc",
  69. "network_change_manager.h",
  70. "network_context.cc",
  71. "network_context.h",
  72. "network_qualities_pref_delegate.cc",
  73. "network_qualities_pref_delegate.h",
  74. "network_quality_estimator_manager.cc",
  75. "network_quality_estimator_manager.h",
  76. "network_service.cc",
  77. "network_service.h",
  78. "network_service_memory_cache.cc",
  79. "network_service_memory_cache.h",
  80. "network_service_memory_cache_url_loader.cc",
  81. "network_service_memory_cache_url_loader.h",
  82. "network_service_memory_cache_writer.cc",
  83. "network_service_memory_cache_writer.h",
  84. "network_service_network_delegate.cc",
  85. "network_service_network_delegate.h",
  86. "network_service_proxy_delegate.cc",
  87. "network_service_proxy_delegate.h",
  88. "pending_callback_chain.cc",
  89. "pending_callback_chain.h",
  90. "private_network_access_checker.cc",
  91. "private_network_access_checker.h",
  92. "proxy_auto_config_library.cc",
  93. "proxy_auto_config_library.h",
  94. "proxy_config_service_mojo.cc",
  95. "proxy_config_service_mojo.h",
  96. "proxy_lookup_request.cc",
  97. "proxy_lookup_request.h",
  98. "proxy_resolver_factory_mojo.cc",
  99. "proxy_resolver_factory_mojo.h",
  100. "proxy_resolving_client_socket.cc",
  101. "proxy_resolving_client_socket.h",
  102. "proxy_resolving_client_socket_factory.cc",
  103. "proxy_resolving_client_socket_factory.h",
  104. "proxy_resolving_socket_factory_mojo.cc",
  105. "proxy_resolving_socket_factory_mojo.h",
  106. "proxy_resolving_socket_mojo.cc",
  107. "proxy_resolving_socket_mojo.h",
  108. "proxy_service_mojo.cc",
  109. "proxy_service_mojo.h",
  110. "resolve_host_request.cc",
  111. "resolve_host_request.h",
  112. "resource_scheduler/resource_scheduler.cc",
  113. "resource_scheduler/resource_scheduler.h",
  114. "resource_scheduler/resource_scheduler_client.cc",
  115. "resource_scheduler/resource_scheduler_client.h",
  116. "resource_scheduler/resource_scheduler_params_manager.cc",
  117. "resource_scheduler/resource_scheduler_params_manager.h",
  118. "restricted_cookie_manager.cc",
  119. "restricted_cookie_manager.h",
  120. "sec_header_helpers.cc",
  121. "sec_header_helpers.h",
  122. "session_cleanup_cookie_store.cc",
  123. "session_cleanup_cookie_store.h",
  124. "socket_data_pump.cc",
  125. "socket_data_pump.h",
  126. "socket_factory.cc",
  127. "socket_factory.h",
  128. "ssl_config_service_mojo.cc",
  129. "ssl_config_service_mojo.h",
  130. "ssl_config_type_converter.cc",
  131. "ssl_config_type_converter.h",
  132. "tcp_bound_socket.cc",
  133. "tcp_bound_socket.h",
  134. "tcp_client_socket_brokered.cc",
  135. "tcp_client_socket_brokered.h",
  136. "tcp_connected_socket.cc",
  137. "tcp_connected_socket.h",
  138. "tcp_server_socket.cc",
  139. "tcp_server_socket.h",
  140. "throttling/network_conditions.cc",
  141. "throttling/network_conditions.h",
  142. "throttling/scoped_throttling_token.cc",
  143. "throttling/scoped_throttling_token.h",
  144. "throttling/throttling_controller.cc",
  145. "throttling/throttling_controller.h",
  146. "throttling/throttling_network_interceptor.cc",
  147. "throttling/throttling_network_interceptor.h",
  148. "throttling/throttling_network_transaction.cc",
  149. "throttling/throttling_network_transaction.h",
  150. "throttling/throttling_network_transaction_factory.cc",
  151. "throttling/throttling_network_transaction_factory.h",
  152. "throttling/throttling_upload_data_stream.cc",
  153. "throttling/throttling_upload_data_stream.h",
  154. "tls_client_socket.cc",
  155. "tls_client_socket.h",
  156. "tls_socket_factory.cc",
  157. "tls_socket_factory.h",
  158. "transitional_url_loader_factory_owner.cc",
  159. "transitional_url_loader_factory_owner.h",
  160. "udp_socket.cc",
  161. "udp_socket.h",
  162. "upload_progress_tracker.cc",
  163. "upload_progress_tracker.h",
  164. "url_loader.cc",
  165. "url_loader.h",
  166. "url_loader_context.h",
  167. "url_loader_factory.cc",
  168. "url_loader_factory.h",
  169. "url_request_context_builder_mojo.cc",
  170. "url_request_context_builder_mojo.h",
  171. "url_request_context_owner.cc",
  172. "url_request_context_owner.h",
  173. "web_bundle/web_bundle_manager.cc",
  174. "web_bundle/web_bundle_manager.h",
  175. "web_transport.cc",
  176. "web_transport.h",
  177. ]
  178. if (is_p2p_enabled) {
  179. sources += [
  180. "p2p/socket.cc",
  181. "p2p/socket.h",
  182. "p2p/socket_manager.cc",
  183. "p2p/socket_manager.h",
  184. "p2p/socket_tcp.cc",
  185. "p2p/socket_tcp.h",
  186. "p2p/socket_throttler.cc",
  187. "p2p/socket_throttler.h",
  188. "p2p/socket_udp.cc",
  189. "p2p/socket_udp.h",
  190. ]
  191. }
  192. if (enable_mdns) {
  193. sources += [
  194. "mdns_responder.cc",
  195. "mdns_responder.h",
  196. ]
  197. }
  198. if (!is_ios) {
  199. sources += [
  200. "websocket.cc",
  201. "websocket.h",
  202. "websocket_factory.cc",
  203. "websocket_factory.h",
  204. "websocket_interceptor.cc",
  205. "websocket_interceptor.h",
  206. "websocket_throttler.cc",
  207. "websocket_throttler.h",
  208. ]
  209. }
  210. if (is_chromeos) {
  211. sources += [
  212. "cert_verifier_with_trust_anchors.cc",
  213. "cert_verifier_with_trust_anchors.h",
  214. ]
  215. }
  216. if (is_chromeos_ash) {
  217. sources += [
  218. "dhcp_pac_file_fetcher_mojo.cc",
  219. "dhcp_pac_file_fetcher_mojo.h",
  220. ]
  221. }
  222. if (is_win) {
  223. sources += [
  224. "windows_system_proxy_resolver_mojo.cc",
  225. "windows_system_proxy_resolver_mojo.h",
  226. ]
  227. }
  228. configs += [ "//build/config/compiler:wexit_time_destructors" ]
  229. deps = [
  230. "//base",
  231. "//build:chromecast_buildflags",
  232. "//build:chromeos_buildflags",
  233. "//components/content_settings/core/common",
  234. "//components/cookie_config",
  235. "//components/domain_reliability",
  236. "//components/network_session_configurator/browser",
  237. "//components/network_session_configurator/common",
  238. "//components/os_crypt",
  239. "//components/prefs",
  240. "//components/url_matcher",
  241. "//components/web_package",
  242. "//components/webrtc:fake_ssl_socket",
  243. "//mojo/public/cpp/bindings",
  244. "//mojo/public/cpp/system",
  245. "//net",
  246. "//net:extras",
  247. "//services/network/first_party_sets:first_party_sets_manager",
  248. "//services/network/public/cpp",
  249. "//services/network/public/cpp:crash_keys",
  250. "//services/network/public/cpp/cert_verifier:mojo_cert_verifier",
  251. "//services/network/public/mojom",
  252. "//services/network/public/proto",
  253. "//services/network/trust_tokens",
  254. "//services/service_manager/public/cpp",
  255. "//services/service_manager/public/mojom",
  256. "//url",
  257. ]
  258. if (is_linux || is_chromeos) {
  259. deps += [ ":network_sandbox_hook" ]
  260. }
  261. public_deps = [ "//services/network/public/cpp:buildflags" ]
  262. if (is_ct_supported) {
  263. sources += [
  264. "ct_log_list_distributor.cc",
  265. "ct_log_list_distributor.h",
  266. "expect_ct_reporter.cc",
  267. "expect_ct_reporter.h",
  268. "sct_auditing/sct_auditing_cache.cc",
  269. "sct_auditing/sct_auditing_cache.h",
  270. "sct_auditing/sct_auditing_handler.cc",
  271. "sct_auditing/sct_auditing_handler.h",
  272. "sct_auditing/sct_auditing_reporter.cc",
  273. "sct_auditing/sct_auditing_reporter.h",
  274. ]
  275. deps += [
  276. "//components/certificate_transparency",
  277. "//components/version_info",
  278. ]
  279. }
  280. if (is_p2p_enabled) {
  281. deps += [ "//third_party/webrtc_overrides:webrtc_component" ]
  282. }
  283. if (is_android) {
  284. deps += [
  285. "//crypto",
  286. "//third_party/boringssl",
  287. ]
  288. sources += [
  289. "radio_monitor_android.cc",
  290. "radio_monitor_android.h",
  291. ]
  292. }
  293. if (is_win) {
  294. deps += [ "//sandbox/win:sandbox" ]
  295. }
  296. defines = [ "IS_NETWORK_SERVICE_IMPL" ]
  297. }
  298. if (is_linux || is_chromeos) {
  299. source_set("network_sandbox_hook") {
  300. sources = [
  301. "network_sandbox_hook_linux.cc",
  302. "network_sandbox_hook_linux.h",
  303. ]
  304. deps = [
  305. "//base:base",
  306. "//sandbox/linux:sandbox_services",
  307. "//sandbox/policy:policy",
  308. ]
  309. }
  310. }
  311. source_set("tests") {
  312. testonly = true
  313. sources = [
  314. "chunked_data_pipe_upload_data_stream_unittest.cc",
  315. "cookie_access_delegate_impl_unittest.cc",
  316. "cookie_manager_unittest.cc",
  317. "cookie_settings_unittest.cc",
  318. "cors/cors_url_loader_factory_unittest.cc",
  319. "cors/cors_url_loader_private_network_access_unittest.cc",
  320. "cors/cors_url_loader_test_util.cc",
  321. "cors/cors_url_loader_test_util.h",
  322. "cors/cors_url_loader_unittest.cc",
  323. "cors/cors_util_unittest.cc",
  324. "cors/preflight_cache_unittest.cc",
  325. "cors/preflight_controller_unittest.cc",
  326. "cors/preflight_result_unittest.cc",
  327. "data_pipe_element_reader_unittest.cc",
  328. "dns_config_change_manager_unittest.cc",
  329. "host_resolver_unittest.cc",
  330. "http_cache_data_counter_unittest.cc",
  331. "http_cache_data_remover_unittest.cc",
  332. "ignore_errors_cert_verifier_unittest.cc",
  333. "keepalive_statistics_recorder_unittest.cc",
  334. "mojo_host_resolver_impl_unittest.cc",
  335. "net_log_proxy_sink_unittest.cc",
  336. "network_change_manager_unittest.cc",
  337. "network_context_unittest.cc",
  338. "network_qualities_pref_delegate_unittest.cc",
  339. "network_quality_estimator_manager_unittest.cc",
  340. "network_service_memory_cache_unittest.cc",
  341. "network_service_proxy_delegate_unittest.cc",
  342. "network_service_unittest.cc",
  343. "pending_callback_chain_unittest.cc",
  344. "private_network_access_checker_unittest.cc",
  345. "proxy_auto_config_library_unittest.cc",
  346. "proxy_config_service_mojo_unittest.cc",
  347. "proxy_resolving_client_socket_unittest.cc",
  348. "proxy_resolving_socket_mojo_unittest.cc",
  349. "resource_scheduler/resource_scheduler_params_manager_unittest.cc",
  350. "resource_scheduler/resource_scheduler_unittest.cc",
  351. "restricted_cookie_manager_unittest.cc",
  352. "sec_header_helpers_unittest.cc",
  353. "session_cleanup_cookie_store_unittest.cc",
  354. "socket_data_pump_unittest.cc",
  355. "ssl_config_service_mojo_unittest.cc",
  356. "tcp_bound_socket_unittest.cc",
  357. "tcp_client_socket_brokered_unittest.cc",
  358. "tcp_socket_unittest.cc",
  359. "test/test_url_loader_factory_unittest.cc",
  360. "test_chunked_data_pipe_getter.cc",
  361. "test_chunked_data_pipe_getter.h",
  362. "throttling/throttling_controller_unittest.cc",
  363. "tls_client_socket_unittest.cc",
  364. "transitional_url_loader_factory_owner_unittest.cc",
  365. "udp_socket_unittest.cc",
  366. "upload_progress_tracker_unittest.cc",
  367. "url_loader_unittest.cc",
  368. "web_bundle/web_bundle_manager_unittest.cc",
  369. "web_transport_unittest.cc",
  370. ]
  371. if (is_p2p_enabled) {
  372. sources += [
  373. "p2p/socket_tcp_unittest.cc",
  374. "p2p/socket_test_utils.cc",
  375. "p2p/socket_test_utils.h",
  376. "p2p/socket_udp_unittest.cc",
  377. ]
  378. }
  379. if (enable_mdns) {
  380. sources += [ "mdns_responder_unittest.cc" ]
  381. }
  382. if (!is_ios) {
  383. sources += [
  384. "proxy_resolver_factory_mojo_unittest.cc",
  385. "proxy_service_mojo_unittest.cc",
  386. "test_mojo_proxy_resolver_factory.cc",
  387. "test_mojo_proxy_resolver_factory.h",
  388. "url_request_context_builder_mojo_unittest.cc",
  389. "websocket_interceptor_unittest.cc",
  390. "websocket_throttler_unittest.cc",
  391. ]
  392. data = [
  393. "//net/tools/testserver/",
  394. "//services/test/data",
  395. "//third_party/pywebsocket3/src/mod_pywebsocket/",
  396. ]
  397. }
  398. if (is_chromeos_ash) {
  399. sources += [
  400. "cert_verifier_with_trust_anchors_unittest.cc",
  401. "dhcp_pac_file_fetcher_mojo_unittest.cc",
  402. ]
  403. }
  404. if (is_win) {
  405. sources += [ "windows_system_proxy_resolver_mojo_unittest.cc" ]
  406. }
  407. deps = [
  408. ":network_service",
  409. ":test_support",
  410. "//base",
  411. "//build:chromeos_buildflags",
  412. "//components/network_session_configurator/browser",
  413. "//components/prefs:test_support",
  414. "//components/variations:test_support",
  415. "//components/web_package",
  416. "//components/webrtc:fake_ssl_socket",
  417. "//crypto",
  418. "//mojo/public/cpp/bindings",
  419. "//mojo/public/cpp/system",
  420. "//mojo/public/cpp/test_support:test_utils",
  421. "//net",
  422. "//net:extras",
  423. "//net:quic_test_tools",
  424. "//net:simple_quic_tools",
  425. "//net:test_support",
  426. "//net/http:transport_security_state_unittest_data_default",
  427. "//services/network/first_party_sets:first_party_sets_manager",
  428. "//services/network/first_party_sets:tests",
  429. "//services/network/public/cpp",
  430. "//services/network/public/cpp:buildflags",
  431. "//services/network/public/mojom",
  432. "//services/network/public/proto",
  433. "//services/network/trust_tokens",
  434. "//services/network/trust_tokens:tests",
  435. "//services/service_manager/public/cpp",
  436. "//services/service_manager/public/cpp/test:test_support",
  437. "//testing/gmock",
  438. "//testing/gtest",
  439. ]
  440. if (is_ct_supported) {
  441. sources += [
  442. "ct_log_list_distributor_unittest.cc",
  443. "expect_ct_reporter_unittest.cc",
  444. "sct_auditing/sct_auditing_cache_unittest.cc",
  445. "sct_auditing/sct_auditing_handler_unittest.cc",
  446. "sct_auditing/sct_auditing_reporter_unittest.cc",
  447. ]
  448. deps += [ "//components/certificate_transparency" ]
  449. }
  450. if (!is_ios) {
  451. deps += [ "//services/proxy_resolver:lib" ]
  452. }
  453. }
  454. source_set("test_support") {
  455. testonly = true
  456. sources = [
  457. "mojo_socket_test_util.cc",
  458. "mojo_socket_test_util.h",
  459. "test/client_security_state_builder.cc",
  460. "test/client_security_state_builder.h",
  461. "test/fake_test_cert_verifier_params_factory.cc",
  462. "test/fake_test_cert_verifier_params_factory.h",
  463. "test/mock_devtools_observer.cc",
  464. "test/mock_devtools_observer.h",
  465. "test/test_cookie_manager.cc",
  466. "test/test_cookie_manager.h",
  467. "test/test_data_pipe_getter.cc",
  468. "test/test_data_pipe_getter.h",
  469. "test/test_dns_util.cc",
  470. "test/test_dns_util.h",
  471. "test/test_network_connection_tracker.cc",
  472. "test/test_network_connection_tracker.h",
  473. "test/test_network_context.h",
  474. "test/test_network_context_client.cc",
  475. "test/test_network_context_client.h",
  476. "test/test_network_quality_tracker.cc",
  477. "test/test_network_quality_tracker.h",
  478. "test/test_resource_scheduler.h",
  479. "test/test_shared_url_loader_factory.cc",
  480. "test/test_shared_url_loader_factory.h",
  481. "test/test_socket_broker_impl.cc",
  482. "test/test_socket_broker_impl.h",
  483. "test/test_udp_socket.cc",
  484. "test/test_udp_socket.h",
  485. "test/test_url_loader_client.cc",
  486. "test/test_url_loader_client.h",
  487. "test/test_url_loader_factory.cc",
  488. "test/test_url_loader_factory.h",
  489. "test/test_url_loader_network_observer.cc",
  490. "test/test_url_loader_network_observer.h",
  491. "test/test_utils.cc",
  492. "test/test_utils.h",
  493. "test/trust_token_request_handler.cc",
  494. "test/trust_token_request_handler.h",
  495. "test/trust_token_test_server_handler_registration.cc",
  496. "test/trust_token_test_server_handler_registration.h",
  497. "test/trust_token_test_util.cc",
  498. "test/trust_token_test_util.h",
  499. "test/udp_socket_test_util.cc",
  500. "test/udp_socket_test_util.h",
  501. "test/url_loader_context_for_tests.cc",
  502. "test/url_loader_context_for_tests.h",
  503. ]
  504. if (is_chromeos_ash) {
  505. sources += [
  506. "mock_mojo_dhcp_wpad_url_client.cc",
  507. "mock_mojo_dhcp_wpad_url_client.h",
  508. ]
  509. }
  510. public_deps = [
  511. "//services/network/public/cpp",
  512. "//services/network/public/cpp:buildflags",
  513. "//services/network/public/mojom",
  514. "//services/network/trust_tokens:test_support",
  515. "//services/network/trust_tokens:trust_tokens",
  516. ]
  517. deps = [
  518. "//base",
  519. "//build:chromeos_buildflags",
  520. "//components/cbor:cbor",
  521. "//mojo/public/cpp/bindings",
  522. "//net",
  523. "//net:test_support",
  524. "//services/network:network_service",
  525. "//testing/gtest",
  526. ]
  527. }
  528. fuzzer_test("network_content_security_policy_fuzzer") {
  529. sources = [ "content_security_policy_fuzzer.cc" ]
  530. deps = [
  531. "//base",
  532. "//net",
  533. "//services/network:network_service",
  534. "//services/network/public/cpp",
  535. "//services/network/public/mojom",
  536. ]
  537. dict = "//testing/libfuzzer/fuzzers/dicts/content_security_policy.dict"
  538. seed_corpus = "//testing/libfuzzer/fuzzers/content_security_policy_corpus"
  539. }