mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2024-11-24 14:26:09 +03:00
455 lines
9.8 KiB
Plaintext
455 lines
9.8 KiB
Plaintext
|
# 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_service.cc",
|
||
|
"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_proc.cc",
|
||
|
"host_resolver_proc.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_impl",
|
||
|
":mdns_client",
|
||
|
":public",
|
||
|
"//net:net_public_deps",
|
||
|
]
|
||
|
|
||
|
allow_circular_includes_from = [
|
||
|
":dns_client",
|
||
|
":host_resolver_impl",
|
||
|
":mdns_client",
|
||
|
":public",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
# The standard public API of net/dns. Available for use both inside and outside
|
||
|
# the network stack by any code that needs it.
|
||
|
# TODO(crbug.com/821021): Servicify and convert all non-constant external usage
|
||
|
# to IPCs.
|
||
|
source_set("public") {
|
||
|
# 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",
|
||
|
":dns_client",
|
||
|
":host_resolver_impl",
|
||
|
":mdns_client",
|
||
|
"//net",
|
||
|
]
|
||
|
|
||
|
sources = []
|
||
|
public = []
|
||
|
|
||
|
if (!is_nacl) {
|
||
|
public += [
|
||
|
"dns_config_service.h",
|
||
|
"dns_protocol.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",
|
||
|
":public",
|
||
|
"//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 = [
|
||
|
":public",
|
||
|
"//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/*",
|
||
|
]
|
||
|
|
||
|
sources = []
|
||
|
public = []
|
||
|
|
||
|
if (!is_nacl) {
|
||
|
sources += [
|
||
|
"dns_client.h",
|
||
|
"dns_response.h",
|
||
|
"dns_transaction.h",
|
||
|
"record_parsed.h",
|
||
|
"record_rdata.h",
|
||
|
]
|
||
|
}
|
||
|
|
||
|
deps = [
|
||
|
":public",
|
||
|
"//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",
|
||
|
":public",
|
||
|
"//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",
|
||
|
"//net:net_with_v8",
|
||
|
]
|
||
|
|
||
|
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_socket_factory.cc" ]
|
||
|
public += [ "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_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"
|
||
|
}
|