| # Copyright 2018 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//testing/libfuzzer/fuzzer_test.gni") |
| import("//net/features.gni") |
| |
| enable_built_in_dns = !is_ios && !is_proto_quic |
| |
| source_set("dns") { |
| # Due to circular dependencies, should only be depended on through //net. |
| visibility = [ "//net" ] |
| |
| # Internals only intended for use inside network stack (and tests). |
| friend = [ |
| "//chrome/browser:test_support", |
| "//chrome/test/*", |
| "//components/certificate_transparency:unit_tests", |
| "//components/cronet/*", |
| "//net/*", |
| "//services/network/*", |
| ] |
| |
| public = [] |
| sources = [ |
| "dns_util.cc", |
| "dns_util.h", |
| ] |
| |
| if (!is_nacl) { |
| sources += [ |
| "address_sorter.h", |
| "address_sorter_win.cc", |
| "dns_config.cc", |
| "dns_config_service.cc", |
| "dns_config_service.h", |
| "dns_config_service_win.cc", |
| "dns_config_service_win.h", |
| "dns_config_watcher_mac.cc", |
| "dns_config_watcher_mac.h", |
| "dns_hosts.cc", |
| "dns_hosts.h", |
| "dns_query.cc", |
| "dns_query.h", |
| "dns_reloader.cc", |
| "dns_reloader.h", |
| "dns_response.cc", |
| "dns_session.cc", |
| "dns_session.h", |
| "dns_socket_pool.cc", |
| "dns_socket_pool.h", |
| "dns_transaction.cc", |
| "host_cache.cc", |
| "host_resolver.cc", |
| "host_resolver_impl.cc", |
| "host_resolver_mdns_task.cc", |
| "host_resolver_mdns_task.h", |
| "host_resolver_proc.cc", |
| "host_resolver_proc.h", |
| "host_resolver_source.h", |
| "mapped_host_resolver.cc", |
| "notify_watcher_mac.cc", |
| "notify_watcher_mac.h", |
| "record_parsed.cc", |
| "record_rdata.cc", |
| "serial_worker.cc", |
| "serial_worker.h", |
| ] |
| |
| if (is_posix || is_fuchsia) { |
| sources += [ "dns_config_service_posix.cc" ] |
| |
| if (enable_built_in_dns) { |
| sources += [ |
| "address_sorter_posix.cc", |
| "address_sorter_posix.h", |
| ] |
| } |
| } |
| |
| if (enable_built_in_dns) { |
| sources += [ "dns_client.cc" ] |
| } |
| |
| if (enable_mdns) { |
| sources += [ |
| "mdns_cache.cc", |
| "mdns_cache.h", |
| "mdns_client.cc", |
| "mdns_client_impl.cc", |
| "mdns_client_impl.h", |
| ] |
| } |
| } |
| |
| deps = [ |
| "//net:net_deps", |
| ] |
| |
| public_deps = [ |
| ":dns_client", |
| ":host_resolver", |
| ":host_resolver_impl", |
| ":mdns_client", |
| "//net:net_public_deps", |
| ] |
| |
| allow_circular_includes_from = [ |
| ":dns_client", |
| ":host_resolver", |
| ":host_resolver_impl", |
| ":mdns_client", |
| ] |
| } |
| |
| # The standard API of net/dns. |
| # |
| # Should typically only be used within the network service. Usage external to |
| # the network service should instead use network service Mojo IPCs for host |
| # resolution. See ResolveHost() in |
| # /services/network/public/mojom/network_context.mojom and |
| # /services/network/public/mojom/host_resolver.mojom. |
| source_set("host_resolver") { |
| # Due to circular dependencies, should only be depended on through //net. |
| # Limit visibility to //net and other source_sets with the same access |
| # restriction. |
| visibility = [ |
| ":dns", |
| ":host_resolver_impl", |
| ":mdns_client", |
| "//net", |
| ] |
| |
| # Whitelist-only access so we can keep track of all usage external to the |
| # network stack and network service. |
| friend = [ |
| # chrome/browser/devtools/device/tcp_device_provider.cc |
| # TODO(crbug.com/874653): Remove once migrated to network service IPC. |
| # |
| # chrome/browser/devtools/device/port_forwarding_controller.cc |
| # TODO(crbug.com/874651): Remove once migrated to network service IPC. |
| "//chrome/browser/devtools", |
| |
| # chrome/browser/io_thread.cc |
| # Used to build in-process HostResolver when network service disabled. |
| # |
| # chrome/browser/net/dns_probe_service.cc |
| # TODO(crbug.com/874660): Remove once migrated to network service IPC. |
| # |
| # chrome/browser/net/url_info.h |
| # chrome/browser/net_benchmarking.cc |
| # HostResolver only used for deprecated net::Predictor. |
| # TODO(crbug.com/875238): Remove once deprecated code is removed. |
| "//chrome/browser", |
| |
| # chrome/browser/ui/webui/net_internals/net_internals_ui.cc |
| # TODO(crbug.com/876110): Remove once migrated to network service IPC. |
| "//chrome/browser/ui", |
| |
| # chromecast/browser/url_request_context_factory.cc |
| # URLRequestContext creation for chromecast. |
| "//chromecast/browser", |
| |
| # components/network_hints/browser/network_hints_message_filter.cc |
| # TODO(crbug.com/874654): Remove once migrated to network service IPC. |
| "//components/network_hints/browser", |
| |
| # content/public/browser/resource_hints.h |
| # Deprecated and soon to be removed. |
| # TODO(crbug.com/875238): Remove once code is removed. |
| "//content/public/browser:browser_sources", |
| |
| # headless/lib/browser/headless_url_request_context_getter.cc |
| # URLRequestContext creation for headless. |
| "//headless", |
| |
| # URLRequestContext and HttpNetworkSession::Context creation for iOS. |
| "//ios/components/io_thread", |
| "//ios/web/shell", |
| "//ios/web_view:*", |
| |
| # Tests and test support. |
| "//chrome/browser:test_support", |
| "//chrome/test:browser_tests", |
| "//components/grpc_support/test:unit_tests", |
| "//content/shell:content_shell_lib", |
| |
| # Stand-alone tools. |
| "//components/sync/tools:*", |
| "//google_apis/gcm:mcs_probe", |
| |
| # Network stack/service. |
| "//components/certificate_transparency/*", |
| "//components/cronet/*", |
| "//net/*", |
| "//services/network/*", |
| ] |
| |
| sources = [] |
| public = [] |
| |
| if (!is_nacl) { |
| sources += [ |
| "dns_config.h", |
| "host_cache.h", |
| "host_resolver.h", |
| "mapped_host_resolver.h", |
| ] |
| } |
| |
| deps = [ |
| "//net:net_deps", |
| ] |
| public_deps = [ |
| "//net:net_public_deps", |
| ] |
| } |
| |
| # Overridable implementation details of HostResolver. |
| # TODO(crbug.com/846423): Servicify or remove external usage. |
| source_set("host_resolver_impl") { |
| # Due to circular dependencies, should only be depended on through //net. |
| # Limit visibility to //net and other source_sets with the same access |
| # restriction. |
| visibility = [ |
| ":dns", |
| "//net", |
| ] |
| |
| # Whitelist-only access so we can keep track of all usage external to the |
| # network stack. |
| friend = [ |
| "//chromeos", |
| "//components/cronet/*", |
| "//net/*", |
| ] |
| |
| sources = [] |
| public = [] |
| |
| if (!is_nacl) { |
| sources += [ "host_resolver_impl.h" ] |
| |
| if (is_posix || is_fuchsia) { |
| sources += [ "dns_config_service_posix.h" ] |
| } |
| } |
| |
| deps = [ |
| ":host_resolver", |
| "//net:net_deps", |
| ] |
| public_deps = [ |
| "//net:net_public_deps", |
| ] |
| } |
| |
| # DnsClient interfaces. Primarily intended as part of the impelementation of the |
| # standard HostResolver interface, but can be used as an alternative external |
| # interface for advanced usage. |
| # TODO(crbug.com/846423): Figure out what we want to do with these for |
| # servicification. |
| source_set("dns_client") { |
| # Due to circular dependencies, should only be depended on through //net. |
| # Limit visibility to //net and other source_sets with the same access |
| # restriction. |
| visibility = [ |
| ":dns", |
| ":mdns_client", |
| "//net", |
| ] |
| |
| # Whitelist-only access so we can keep track of all usage external to the |
| # network stack. |
| friend = [ |
| "//chrome/browser", |
| "//chrome/browser:test_support", |
| "//chrome/browser/chromeos", |
| "//chrome/test/*", |
| "//components/certificate_transparency/*", |
| "//net/*", |
| "//services/network/*", |
| ] |
| |
| sources = [] |
| public = [] |
| |
| if (!is_nacl) { |
| sources += [ |
| "dns_client.h", |
| "dns_protocol.h", |
| "dns_response.h", |
| "dns_transaction.h", |
| "record_parsed.h", |
| "record_rdata.h", |
| ] |
| } |
| |
| deps = [ |
| "//net:net_deps", |
| ] |
| public_deps = [ |
| "//net:net_public_deps", |
| ] |
| } |
| |
| # MdnsClient interfaces. |
| # TODO(crbug.com/846423): Figure out what we want to do with these for |
| # servicification. |
| source_set("mdns_client") { |
| # Due to circular dependencies, should only be depended on through //net. |
| # Limit visibility to //net and other source_sets with the same access |
| # restriction. |
| visibility = [ |
| ":dns", |
| "//net", |
| ] |
| |
| # Whitelist-only access so we can keep track of all usage external to the |
| # network stack. |
| friend = [ |
| "//chrome/browser", |
| "//chrome/browser:test_support", |
| "//chrome/browser/chromeos", |
| "//chrome/tools/service_discovery_sniffer", |
| "//net/*", |
| ] |
| |
| public = [] |
| sources = [] |
| |
| if (!is_nacl && enable_mdns) { |
| sources += [ "mdns_client.h" ] |
| } |
| |
| deps = [ |
| ":dns_client", |
| ":host_resolver", |
| "//net:net_deps", |
| ] |
| public_deps = [ |
| "//net:net_public_deps", |
| ] |
| } |
| |
| if (enable_net_mojo) { |
| # A host resolver implementation that forwards resolve requests to a mojo |
| # service, thus acting as a client library to a servicified host resolver. |
| # TODO(crbug.com/821021): Decide if this has any place in the generalized |
| # host resolver servicification. |
| source_set("mojo_client") { |
| sources = [ |
| "host_resolver_mojo.cc", |
| "host_resolver_mojo.h", |
| ] |
| |
| deps = [ |
| "//base", |
| "//net", |
| ] |
| |
| public_deps = [ |
| "//mojo/public/cpp/bindings", |
| "//net/interfaces", |
| ] |
| } |
| |
| # A utility to handle host resolver requests coming into the network service |
| # via mojo and pass the requests on to the actual host resolver. This utility |
| # therefore acts as the service side of mojo interactions for host resolver. |
| # TODO(crbug.com/821021): Decide if this has any place in the generalized |
| # host resolver servicification. |
| source_set("mojo_service") { |
| sources = [ |
| "mojo_host_resolver_impl.cc", |
| "mojo_host_resolver_impl.h", |
| ] |
| |
| deps = [ |
| "//base", |
| "//net", |
| ] |
| |
| public_deps = [ |
| "//mojo/public/cpp/bindings", |
| "//net/interfaces", |
| ] |
| } |
| } |
| |
| source_set("tests") { |
| testonly = true |
| sources = [ |
| "dns_config_service_unittest.cc", |
| "dns_config_service_win_unittest.cc", |
| "dns_hosts_unittest.cc", |
| "dns_query_unittest.cc", |
| "dns_response_unittest.cc", |
| "dns_session_unittest.cc", |
| "dns_socket_pool_unittest.cc", |
| "dns_transaction_unittest.cc", |
| "dns_util_unittest.cc", |
| "host_cache_unittest.cc", |
| "host_resolver_impl_unittest.cc", |
| "mapped_host_resolver_unittest.cc", |
| "record_parsed_unittest.cc", |
| "record_rdata_unittest.cc", |
| "serial_worker_unittest.cc", |
| ] |
| |
| if (is_posix || is_fuchsia) { |
| sources += [ "dns_config_service_posix_unittest.cc" ] |
| } |
| |
| if (enable_built_in_dns) { |
| sources += [ "address_sorter_unittest.cc" ] |
| if (is_posix || is_fuchsia) { |
| sources += [ "address_sorter_posix_unittest.cc" ] |
| } |
| } |
| |
| if (enable_net_mojo) { |
| sources += [ |
| "host_resolver_mojo_unittest.cc", |
| "mojo_host_resolver_impl_unittest.cc", |
| ] |
| } |
| |
| if (enable_mdns) { |
| sources += [ |
| "mdns_cache_unittest.cc", |
| "mdns_client_unittest.cc", |
| ] |
| } |
| |
| deps = [ |
| "//base", |
| "//net", |
| "//net:test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| |
| if (enable_net_mojo) { |
| deps += [ |
| "//net/dns:mojo_client", |
| "//net/dns:mojo_service", |
| ] |
| } |
| } |
| |
| source_set("test_support") { |
| testonly = true |
| sources = [ |
| "dns_test_util.cc", |
| "mock_host_resolver.cc", |
| ] |
| public = [ |
| "dns_test_util.h", |
| "mock_host_resolver.h", |
| ] |
| |
| if (enable_mdns) { |
| sources += [ |
| "mock_mdns_client.cc", |
| "mock_mdns_socket_factory.cc", |
| ] |
| public += [ |
| "mock_mdns_client.h", |
| "mock_mdns_socket_factory.h", |
| ] |
| } |
| |
| deps = [ |
| "//base", |
| "//net", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| } |
| |
| source_set("fuzzer_test_support") { |
| testonly = true |
| sources = [ |
| "fuzzed_host_resolver.cc", |
| "fuzzed_host_resolver.h", |
| ] |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//net", |
| ] |
| } |
| |
| fuzzer_test("net_dns_hosts_parse_fuzzer") { |
| sources = [ |
| "dns_hosts_parse_fuzzer.cc", |
| ] |
| deps = [ |
| "//base", |
| "//net", |
| "//net:net_fuzzer_test_support", |
| ] |
| dict = "//net/data/fuzzer_dictionaries/net_dns_hosts_parse_fuzzer.dict" |
| } |
| |
| fuzzer_test("net_dns_record_fuzzer") { |
| sources = [ |
| "dns_record_fuzzer.cc", |
| ] |
| deps = [ |
| "//base", |
| "//net", |
| "//net:net_fuzzer_test_support", |
| ] |
| dict = "//net/data/fuzzer_dictionaries/net_dns_record_fuzzer.dict" |
| } |
| |
| fuzzer_test("net_dns_query_parse_fuzzer") { |
| sources = [ |
| "dns_query_parse_fuzzer.cc", |
| ] |
| deps = [ |
| "//base", |
| "//net", |
| "//net:net_fuzzer_test_support", |
| ] |
| dict = "//net/data/fuzzer_dictionaries/net_dns_record_fuzzer.dict" |
| } |
| |
| fuzzer_test("net_dns_response_fuzzer") { |
| sources = [ |
| "dns_response_fuzzer.cc", |
| ] |
| deps = [ |
| "//base", |
| "//net", |
| "//net:net_fuzzer_test_support", |
| ] |
| dict = "//net/data/fuzzer_dictionaries/net_dns_record_fuzzer.dict" |
| } |
| |
| fuzzer_test("net_host_resolver_impl_fuzzer") { |
| sources = [ |
| "host_resolver_impl_fuzzer.cc", |
| ] |
| deps = [ |
| "//base", |
| "//net", |
| "//net:net_fuzzer_test_support", |
| "//net:test_support", |
| ] |
| dict = "//net/data/fuzzer_dictionaries/net_host_resolver_impl_fuzzer.dict" |
| } |