blob: d34706367fb9b10b4f7fe992fd7b31ac2a2c781e [file] [log] [blame]
# Copyright 2017 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("//mojo/public/tools/bindings/mojom.gni")
import("//net/features.gni")
import("//services/network/public/cpp/features.gni")
# These interfaces are put in their own target to avoid a circular dependency,
# which comes from the fact that proxy_resolver service uses these interfaces,
# and the network service uses the proxy_resolver service.
mojom("mojom_ip_address") {
generate_java = true
sources = [
"address_family.mojom",
"address_list.mojom",
"ip_address.mojom",
"ip_endpoint.mojom",
]
public_deps = [ "//url/mojom:url_mojom_gurl" ]
shared_cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.IPAddress"
cpp = "::net::IPAddress"
},
]
traits_headers =
[ "//services/network/public/cpp/ip_address_mojom_traits.h" ]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
{
types = [
{
mojom = "network.mojom.IPEndPoint"
cpp = "::net::IPEndPoint"
},
]
traits_headers =
[ "//services/network/public/cpp/ip_endpoint_mojom_traits.h" ]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
{
types = [
{
mojom = "network.mojom.ConnectionInfo"
cpp = "::net::HttpResponseInfo::ConnectionInfo"
},
]
traits_headers = [
"//net/http/http_response_info.h",
"//services/network/public/cpp/network_ipc_param_traits.h",
]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
]
cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.AddressFamily"
cpp = "::net::AddressFamily"
},
]
traits_headers =
[ "//services/network/public/cpp/address_family_mojom_traits.h" ]
traits_sources =
[ "//services/network/public/cpp/address_family_mojom_traits.cc" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.AddressList"
cpp = "::net::AddressList"
},
]
traits_headers =
[ "//services/network/public/cpp/address_list_mojom_traits.h" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.QuicTransportError"
cpp = "::net::QuicTransportError"
},
]
traits_headers = [
"//services/network/public/cpp/quic_transport_error_mojom_traits.h",
]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
]
cpp_typemaps += shared_cpp_typemaps
blink_cpp_typemaps = shared_cpp_typemaps
}
# As with mojom_ip_address, this is a separate target to avoid a circular
# dependency, which comes from the fact that proxy_resolver service uses
# this interfaces, and the network service uses the proxy_resolver service.
# Separate from |mojom_ip_address| because a bunch of other consumers are
# depending on that and don't need this.
mojom("mojom_network_isolation_key") {
generate_java = true
sources = [ "network_isolation_key.mojom" ]
public_deps = [ "//url/mojom:url_mojom_origin" ]
if (!is_ios) {
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
}
cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.NetworkIsolationKey"
cpp = "::net::NetworkIsolationKey"
},
]
traits_headers = [
"//services/network/public/cpp/network_isolation_key_mojom_traits.h",
]
traits_public_deps = [ "//net" ]
},
]
}
# These interfaces are put in their own target to avoid a circular dependency,
# which comes from the fact that the typemap for url_loader.mojom
# (ResourceRequestBody) uses these interfaces.
mojom("data_pipe_interfaces") {
generate_java = true
sources = [
"chunked_data_pipe_getter.mojom",
"data_pipe_getter.mojom",
]
# TODO(crbug/598073): When moving the service implementation to
# //services/network, add the correct values for export_class_attribute /
# export_define / export_header here. Context in https://crrev.com/2225673002.
if (!is_ios) {
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
}
}
mojom("mutable_network_traffic_annotation_interface") {
generate_java = true
sources = [
"mutable_network_traffic_annotation_tag.mojom",
"mutable_partial_network_traffic_annotation_tag.mojom",
]
mutable_network_traffic_annotation_tag_typemap = {
types = [
{
mojom = "network.mojom.MutableNetworkTrafficAnnotationTag"
cpp = "::net::MutableNetworkTrafficAnnotationTag"
},
]
traits_headers = [ "//services/network/public/cpp/mutable_network_traffic_annotation_tag_mojom_traits.h" ]
traits_public_deps = [ "//net/traffic_annotation" ]
}
cpp_typemaps = [
mutable_network_traffic_annotation_tag_typemap,
{
types = [
{
mojom = "network.mojom.MutablePartialNetworkTrafficAnnotationTag"
cpp = "::net::MutablePartialNetworkTrafficAnnotationTag"
},
]
traits_headers = [ "//services/network/public/cpp/mutable_partial_network_traffic_annotation_tag_mojom_traits.h" ]
traits_public_deps = [ "//net/traffic_annotation" ]
},
]
blink_cpp_typemaps = [ mutable_network_traffic_annotation_tag_typemap ]
}
# These interfaces are put in their own target to avoid a circular dependency,
# which comes from the fact that the typemap for url_loader.mojom
# (ResourceRequestBody) uses these interfaces.
mojom("trust_tokens_interface") {
generate_java = true
sources = [ "trust_tokens.mojom" ]
public_deps = [
"//mojo/public/mojom/base",
"//url/mojom:url_mojom_origin",
]
if (!is_ios) {
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
}
}
# This target is split from "mojom" target as the lazy serialization may
# cause problems. See https://crbug.com/822732.
mojom("websocket_mojom") {
generate_java = true
sources = [
"network_param.mojom",
"websocket.mojom",
]
public_deps = [
":mojom_ip_address",
"//mojo/public/mojom/base",
"//url/mojom:url_mojom_gurl",
"//url/mojom:url_mojom_origin",
]
if (!is_ios) {
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
}
cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.AuthChallengeInfo"
cpp = "::net::AuthChallengeInfo"
},
{
mojom = "network.mojom.AuthCredentials"
cpp = "::net::AuthCredentials"
},
{
mojom = "network.mojom.CertVerifyResult"
cpp = "::net::CertVerifyResult"
},
{
mojom = "network.mojom.CTVerifyResult"
cpp = "::net::ct::CTVerifyResult"
},
{
mojom = "network.mojom.HostPortPair"
cpp = "::net::HostPortPair"
},
{
mojom = "network.mojom.HttpResponseHeaders"
cpp = "::scoped_refptr<::net::HttpResponseHeaders>"
nullable_is_same_type = true
},
{
mojom = "network.mojom.HttpVersion"
cpp = "::net::HttpVersion"
},
{
mojom = "network.mojom.SSLCertRequestInfo"
cpp = "::scoped_refptr<::net::SSLCertRequestInfo>"
nullable_is_same_type = true
},
{
mojom = "network.mojom.SSLInfo"
cpp = "::net::SSLInfo"
},
{
mojom = "network.mojom.X509Certificate"
cpp = "::scoped_refptr<::net::X509Certificate>"
nullable_is_same_type = true
},
]
traits_headers = [
"//services/network/public/cpp/net_ipc_param_traits.h",
"//services/network/public/cpp/network_param_mojom_traits.h",
]
traits_sources =
[ "//services/network/public/cpp/network_param_mojom_traits.cc" ]
traits_public_deps = [
"//ipc",
"//net",
"//services/network/public/cpp:cpp_base",
]
},
]
}
mojom("cookies_mojom") {
generate_java = true
sources = [
"cookie_access_observer.mojom",
"cookie_manager.mojom",
"restricted_cookie_manager.mojom",
"site_for_cookies.mojom",
]
public_deps = [
"//components/content_settings/core/common:mojo_bindings",
"//mojo/public/mojom/base",
"//url/mojom:url_mojom_gurl",
"//url/mojom:url_mojom_origin",
]
if (!is_ios) {
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
}
# Typemaps which apply to both Blink and non-Blink bindings.
shared_cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.SiteForCookies"
cpp = "::net::SiteForCookies"
},
]
traits_headers =
[ "//services/network/public/cpp/site_for_cookies_mojom_traits.h" ]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cookies_mojom_support",
]
},
]
# Typemaps applied only to non-Blink bindings
cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.CookiePriority"
cpp = "::net::CookiePriority"
},
{
mojom = "network.mojom.CookieSameSite"
cpp = "::net::CookieSameSite"
},
{
mojom = "network.mojom.CookieEffectiveSameSite"
cpp = "::net::CookieEffectiveSameSite"
},
{
mojom = "network.mojom.CookieSameSiteContext"
cpp = "::net::CookieOptions::SameSiteCookieContext"
},
{
mojom = "network.mojom.CookieAccessSemantics"
cpp = "::net::CookieAccessSemantics"
},
{
mojom = "network.mojom.CookieOptions"
cpp = "::net::CookieOptions"
},
{
mojom = "network.mojom.CanonicalCookie"
cpp = "::net::CanonicalCookie"
},
{
mojom = "network.mojom.CookieInclusionStatusWarningReason"
cpp = "::net::CookieInclusionStatus::WarningReason"
},
{
mojom = "network.mojom.CookieInclusionStatus"
cpp = "::net::CookieInclusionStatus"
move_only = true
},
{
mojom = "network.mojom.CookieAccessResult"
cpp = "::net::CookieAccessResult"
move_only = true
},
{
mojom = "network.mojom.CookieWithAccessResult"
cpp = "::net::CookieWithAccessResult"
},
{
mojom = "network.mojom.CookieAndLineWithAccessResult"
cpp = "::net::CookieAndLineWithAccessResult"
},
{
mojom = "network.mojom.CookieChangeCause"
cpp = "::net::CookieChangeCause"
},
{
mojom = "network.mojom.CookieChangeInfo"
cpp = "::net::CookieChangeInfo"
},
{
mojom = "network.mojom.CookieSourceScheme"
cpp = "::net::CookieSourceScheme"
},
]
traits_headers =
[ "//services/network/public/cpp/cookie_manager_mojom_traits.h" ]
traits_sources =
[ "//services/network/public/cpp/cookie_manager_mojom_traits.cc" ]
traits_public_deps = [ "//net" ]
},
]
cpp_typemaps += shared_cpp_typemaps
blink_cpp_typemaps = shared_cpp_typemaps
}
mojom("mojom") {
generate_java = true
sources = [
"blocked_by_response_reason.mojom",
"cert_verifier_service.mojom",
"content_security_policy.mojom",
"cors.mojom",
"cors_origin_pattern.mojom",
"cross_origin_embedder_policy.mojom",
"cross_origin_opener_policy.mojom",
"default_credentials.mojom",
"dhcp_wpad_url_client.mojom",
"digitally_signed.mojom",
"fetch_api.mojom",
"host_resolver.mojom",
"http_raw_headers.mojom",
"http_raw_request_response_info.mojom",
"http_request_headers.mojom",
"ip_address_space.mojom",
"isolation_info.mojom",
"load_timing_info.mojom",
"mdns_responder.mojom",
"net_log.mojom",
"network_change_manager.mojom",
"network_context.mojom",
"network_interface.mojom",
"network_quality_estimator_manager.mojom",
"network_service.mojom",
"network_service_test.mojom",
"network_types.mojom",
"origin_policy_manager.mojom",
"p2p.mojom",
"p2p_trusted.mojom",
"parsed_headers.mojom",
"proxy_config.mojom",
"proxy_config_with_annotation.mojom",
"proxy_lookup_client.mojom",
"proxy_resolving_socket.mojom",
"quic_transport.mojom",
"referrer_policy.mojom",
"source_location.mojom",
"ssl_config.mojom",
"tcp_socket.mojom",
"tls_socket.mojom",
"udp_socket.mojom",
"url_loader.mojom",
"url_loader_factory.mojom",
"url_response_head.mojom",
"web_client_hints_types.mojom",
"web_sandbox_flags.mojom",
]
public_deps = [
":cookies_mojom",
":data_pipe_interfaces",
":mojom_ip_address",
":mojom_network_isolation_key",
":mutable_network_traffic_annotation_interface",
":trust_tokens_interface",
":websocket_mojom",
"//mojo/public/mojom/base",
"//services/proxy_resolver/public/mojom",
"//url/mojom:url_mojom_gurl",
"//url/mojom:url_mojom_origin",
]
enabled_features = []
# TODO(crbug/598073): When moving the service implementation to
# //services/network, add the correct values for export_class_attribute /
# export_define / export_header here. Context in https://crrev.com/2225673002.
if (is_ct_supported) {
enabled_features += [ "is_ct_supported" ]
sources += [ "ct_log_info.mojom" ]
}
if (!is_ios) {
export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
export_header_blink = "third_party/blink/public/platform/web_common.h"
}
# This is only needed on desktop linux, but the defines make this difficult
# because IS_CHROMECAST is not available in build/build_config.h.
if (is_linux && !is_chromeos) {
enabled_features += [ "needs_crypt_config" ]
}
if (is_android || is_chromeos) {
enabled_features += [ "network_change_notifier_in_browser" ]
}
if (trial_comparison_cert_verifier_supported) {
enabled_features += [ "is_trial_comparison_cert_verifier_supported" ]
sources += [ "trial_comparison_cert_verifier.mojom" ]
}
if (builtin_cert_verifier_feature_supported) {
enabled_features += [ "is_builtin_cert_verifier_feature_supported" ]
}
# Typemaps which apply to both Blink and non-Blink bindings.
shared_cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.CrossOriginEmbedderPolicy"
cpp = "::network::CrossOriginEmbedderPolicy"
},
]
traits_headers = [ "//services/network/public/cpp/cross_origin_embedder_policy_mojom_traits.h" ]
},
{
types = [
{
mojom = "network.mojom.CrossOriginOpenerPolicy"
cpp = "::network::CrossOriginOpenerPolicy"
},
]
traits_headers = [ "//services/network/public/cpp/cross_origin_opener_policy_mojom_traits.h" ]
},
{
types = [
{
mojom = "network.mojom.TrustedUrlRequestParams"
cpp = "::network::ResourceRequest::TrustedParams"
},
{
mojom = "network.mojom.URLRequest"
cpp = "::network::ResourceRequest"
},
{
mojom = "network.mojom.URLRequestBody"
cpp = "::scoped_refptr<::network::ResourceRequestBody>"
nullable_is_same_type = true
copyable_pass_by_value = true
},
{
mojom = "network.mojom.URLRequestReferrerPolicy"
cpp = "::net::ReferrerPolicy"
},
{
mojom = "network.mojom.RequestPriority"
cpp = "::net::RequestPriority"
},
{
mojom = "network.mojom.DataElement"
cpp = "::network::DataElement"
move_only = true
},
]
traits_headers = [
"//services/network/public/cpp/network_ipc_param_traits.h",
"//services/network/public/cpp/url_request_mojom_traits.h",
"//services/network/public/cpp/network_isolation_key_mojom_traits.h",
]
traits_public_deps = [
"//base",
"//services/network/public/cpp:cpp_base",
"//url/mojom:url_mojom_gurl",
]
},
{
types = [
{
mojom = "network.mojom.HttpRequestHeaders"
cpp = "::net::HttpRequestHeaders"
},
]
traits_headers = [
"//services/network/public/cpp/http_request_headers_mojom_traits.h",
]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
{
types = [
{
mojom = "network.mojom.IsolationInfo"
cpp = "::net::IsolationInfo"
},
]
traits_headers =
[ "//services/network/public/cpp/isolation_info_mojom_traits.h" ]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
{
types = [
{
mojom = "network.mojom.NetworkInterface"
cpp = "::net::NetworkInterface"
},
]
traits_headers =
[ "//services/network/public/cpp/network_interface_mojom_traits.h" ]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
{
types = [
{
mojom = "network.mojom.P2PPacketInfo"
cpp = "::network::P2PPacketInfo"
},
{
mojom = "network.mojom.P2PSendPacketMetrics"
cpp = "::network::P2PSendPacketMetrics"
},
{
mojom = "network.mojom.P2PPortRange"
cpp = "::network::P2PPortRange"
},
{
mojom = "network.mojom.P2PHostAndIPEndPoint"
cpp = "::network::P2PHostAndIPEndPoint"
},
{
mojom = "network.mojom.P2PSocketOption"
cpp = "::network::P2PSocketOption"
},
{
mojom = "network.mojom.P2PSocketType"
cpp = "::network::P2PSocketType"
},
]
traits_headers = [ "//services/network/public/cpp/p2p_param_traits.h" ]
traits_public_deps = [
"//services/network/public/cpp:cpp_base",
"//third_party/webrtc_overrides:webrtc_component",
]
},
]
# Typemaps applied only to non-Blink bindings
cpp_typemaps = [
{
types = [
{
mojom = "network.mojom.DefaultCredentials"
cpp = "::net::HttpAuthPreferences::DefaultCredentials"
},
]
traits_headers =
[ "//services/network/public/cpp/default_credentials_mojom_traits.h" ]
traits_sources = [
"//services/network/public/cpp/default_credentials_mojom_traits.cc",
]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.CTPolicyCompliance"
cpp = "::net::ct::CTPolicyCompliance"
},
{
mojom = "network.mojom.CorsErrorStatus"
cpp = "::network::CorsErrorStatus"
},
{
mojom = "network.mojom.EffectiveConnectionType"
cpp = "::net::EffectiveConnectionType"
},
{
mojom = "network.mojom.OriginPolicy"
cpp = "::network::OriginPolicy"
},
{
mojom = "network.mojom.URLLoaderCompletionStatus"
cpp = "::network::URLLoaderCompletionStatus"
},
{
mojom = "network.mojom.URLRequestRedirectInfo"
cpp = "::net::RedirectInfo"
},
]
traits_headers =
[ "//services/network/public/cpp/network_ipc_param_traits.h" ]
traits_public_deps = [
"//net",
"//services/network/public/cpp:cpp_base",
]
},
{
types = [
{
mojom = "network.mojom.HashAlgorithm"
cpp = "::net::ct::DigitallySigned::HashAlgorithm"
},
{
mojom = "network.mojom.SignatureAlgorithm"
cpp = "::net::ct::DigitallySigned::SignatureAlgorithm"
},
{
mojom = "network.mojom.DigitallySigned"
cpp = "::net::ct::DigitallySigned"
},
]
traits_headers =
[ "//services/network/public/cpp/digitally_signed_mojom_traits.h" ]
traits_sources =
[ "//services/network/public/cpp/digitally_signed_mojom_traits.cc" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.DnsConfigOverrides"
cpp = "::net::DnsConfigOverrides"
},
{
mojom = "network.mojom.DnsQueryType"
cpp = "::net::DnsQueryType"
},
{
mojom = "network.mojom.ResolveErrorInfo"
cpp = "::net::ResolveErrorInfo"
},
{
mojom = "network.mojom.ResolveHostParameters.Source"
cpp = "::net::HostResolverSource"
},
{
mojom = "network.mojom.MdnsListenClient.UpdateType"
cpp = "::net::HostResolver::MdnsListener::Delegate::UpdateType"
},
{
mojom = "network.mojom.SecureDnsMode"
cpp = "::net::DnsConfig::SecureDnsMode"
},
]
traits_headers =
[ "//services/network/public/cpp/host_resolver_mojom_traits.h" ]
traits_sources =
[ "//services/network/public/cpp/host_resolver_mojom_traits.cc" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.LoadTimingInfo"
cpp = "::net::LoadTimingInfo"
},
{
mojom = "network.mojom.LoadTimingInfoConnectTiming"
cpp = "::net::LoadTimingInfo::ConnectTiming"
},
]
traits_headers =
[ "//services/network/public/cpp/load_timing_info_mojom_traits.h" ]
traits_sources =
[ "//services/network/public/cpp/load_timing_info_mojom_traits.cc" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.NetLogCaptureMode"
cpp = "::net::NetLogCaptureMode"
},
{
mojom = "network.mojom.NetLogEventPhase"
cpp = "::net::NetLogEventPhase"
},
]
traits_headers =
[ "//services/network/public/cpp/net_log_mojom_traits.h" ]
traits_sources =
[ "//services/network/public/cpp/net_log_mojom_traits.cc" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.ProxyBypassRules"
cpp = "::net::ProxyBypassRules"
},
{
mojom = "network.mojom.ProxyList"
cpp = "::net::ProxyList"
},
{
mojom = "network.mojom.ProxyRulesType"
cpp = "::net::ProxyConfig::ProxyRules::Type"
},
{
mojom = "network.mojom.ProxyRules"
cpp = "::net::ProxyConfig::ProxyRules"
},
{
mojom = "network.mojom.ProxyConfig"
cpp = "::net::ProxyConfig"
},
]
traits_headers =
[ "//services/network/public/cpp/proxy_config_mojom_traits.h" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "network.mojom.ProxyConfigWithAnnotation"
cpp = "::net::ProxyConfigWithAnnotation"
},
]
traits_headers = [ "//services/network/public/cpp/proxy_config_with_annotation_mojom_traits.h" ]
traits_public_deps = [ "//net" ]
},
{
types = [
{
mojom = "cert_verifier.mojom.RequestParams"
cpp = "::net::CertVerifier::RequestParams"
},
{
mojom = "cert_verifier.mojom.CertVerifierConfig"
cpp = "::net::CertVerifier::Config"
},
]
traits_headers = [ "//services/network/public/cpp/cert_verifier/cert_verifier_mojom_traits.h" ]
traits_sources = [ "//services/network/public/cpp/cert_verifier/cert_verifier_mojom_traits.cc" ]
traits_public_deps = [
"//mojo/public/cpp/base",
"//net",
]
},
]
cpp_typemaps += shared_cpp_typemaps
blink_cpp_typemaps = shared_cpp_typemaps
}