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
5import("//build/config/chromeos/ui_mode.gni")
6import("//mojo/public/tools/bindings/mojom.gni")
7import("//net/features.gni")
8import("//services/network/public/cpp/features.gni")
9
10# These interfaces are put in their own target to avoid a circular dependency,
11# which comes from the fact that proxy_resolver service uses these interfaces,
12# and the network service uses the proxy_resolver service.
13mojom("mojom_ip_address") {
14  generate_java = true
15  sources = [
16    "address_family.mojom",
17    "address_list.mojom",
18    "ip_address.mojom",
19    "ip_endpoint.mojom",
20  ]
21
22  public_deps = [ "//url/mojom:url_mojom_gurl" ]
23
24  shared_cpp_typemaps = [
25    {
26      types = [
27        {
28          mojom = "network.mojom.IPAddress"
29          cpp = "::net::IPAddress"
30        },
31      ]
32      traits_headers =
33          [ "//services/network/public/cpp/ip_address_mojom_traits.h" ]
34      traits_public_deps = [
35        "//net",
36        "//services/network/public/cpp:cpp_base",
37      ]
38    },
39    {
40      types = [
41        {
42          mojom = "network.mojom.IPEndPoint"
43          cpp = "::net::IPEndPoint"
44        },
45      ]
46      traits_headers =
47          [ "//services/network/public/cpp/ip_endpoint_mojom_traits.h" ]
48      traits_public_deps = [
49        "//net",
50        "//services/network/public/cpp:cpp_base",
51      ]
52    },
53    {
54      types = [
55        {
56          mojom = "network.mojom.ConnectionInfo"
57          cpp = "::net::HttpResponseInfo::ConnectionInfo"
58        },
59      ]
60      traits_headers = [
61        "//net/http/http_response_info.h",
62        "//services/network/public/cpp/network_ipc_param_traits.h",
63      ]
64      traits_public_deps = [
65        "//net",
66        "//services/network/public/cpp:cpp_base",
67      ]
68    },
69  ]
70
71  cpp_typemaps = [
72    {
73      types = [
74        {
75          mojom = "network.mojom.AddressFamily"
76          cpp = "::net::AddressFamily"
77        },
78      ]
79      traits_headers =
80          [ "//services/network/public/cpp/address_family_mojom_traits.h" ]
81      traits_sources =
82          [ "//services/network/public/cpp/address_family_mojom_traits.cc" ]
83      traits_public_deps = [ "//net" ]
84    },
85    {
86      types = [
87        {
88          mojom = "network.mojom.AddressList"
89          cpp = "::net::AddressList"
90        },
91      ]
92      traits_headers =
93          [ "//services/network/public/cpp/address_list_mojom_traits.h" ]
94      traits_public_deps = [ "//net" ]
95    },
96    {
97      types = [
98        {
99          mojom = "network.mojom.QuicTransportError"
100          cpp = "::net::QuicTransportError"
101        },
102      ]
103      traits_headers = [
104        "//services/network/public/cpp/quic_transport_error_mojom_traits.h",
105      ]
106      traits_public_deps = [
107        "//net",
108        "//services/network/public/cpp:cpp_base",
109      ]
110    },
111  ]
112  cpp_typemaps += shared_cpp_typemaps
113
114  blink_cpp_typemaps = shared_cpp_typemaps
115}
116
117# As with mojom_ip_address, this is a separate target to avoid a circular
118# dependency, which comes from the fact that proxy_resolver service uses
119# this interfaces, and the network service uses the proxy_resolver service.
120# Separate from |mojom_ip_address| because a bunch of other consumers are
121# depending on that and don't need this.
122mojom("mojom_network_isolation_key") {
123  generate_java = true
124  sources = [ "network_isolation_key.mojom" ]
125
126  public_deps = [ "//url/mojom:url_mojom_origin" ]
127
128  if (!is_ios) {
129    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
130    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
131    export_header_blink = "third_party/blink/public/platform/web_common.h"
132  }
133
134  cpp_typemaps = [
135    {
136      types = [
137        {
138          mojom = "network.mojom.NetworkIsolationKey"
139          cpp = "::net::NetworkIsolationKey"
140        },
141      ]
142      traits_headers = [
143        "//services/network/public/cpp/network_isolation_key_mojom_traits.h",
144      ]
145      traits_public_deps = [ "//net" ]
146    },
147  ]
148}
149
150# These .mojom files are put in their own target to avoid a circular dependency,
151# which comes from the fact that the typemap for url_loader.mojom
152# (ResourceRequest) depends on them.
153mojom("url_loader_base") {
154  generate_java = true
155  sources = [
156    "chunked_data_pipe_getter.mojom",
157    "client_security_state.mojom",
158    "cross_origin_embedder_policy.mojom",
159    "data_pipe_getter.mojom",
160    "fetch_api.mojom",
161    "ip_address_space.mojom",
162    "mutable_network_traffic_annotation_tag.mojom",
163    "mutable_partial_network_traffic_annotation_tag.mojom",
164    "trust_tokens.mojom",
165  ]
166
167  public_deps = [
168    "//mojo/public/mojom/base",
169    "//url/mojom:url_mojom_gurl",
170    "//url/mojom:url_mojom_origin",
171  ]
172
173  if (!is_ios) {
174    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
175    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
176    export_header_blink = "third_party/blink/public/platform/web_common.h"
177  }
178
179  # Shared by cpp_typemaps and blink_cpp_typemaps.
180  shared_typemaps = [
181    {
182      types = [
183        {
184          mojom = "network.mojom.CrossOriginEmbedderPolicy"
185          cpp = "::network::CrossOriginEmbedderPolicy"
186        },
187      ]
188      traits_headers = [ "//services/network/public/cpp/cross_origin_embedder_policy_mojom_traits.h" ]
189      traits_deps =
190          [ "//services/network/public/cpp:cross_origin_embedder_policy" ]
191    },
192    {
193      types = [
194        {
195          mojom = "network.mojom.MutableNetworkTrafficAnnotationTag"
196          cpp = "::net::MutableNetworkTrafficAnnotationTag"
197        },
198      ]
199      traits_headers = [ "//services/network/public/cpp/mutable_network_traffic_annotation_tag_mojom_traits.h" ]
200      traits_public_deps = [ "//net/traffic_annotation" ]
201    },
202  ]
203
204  cpp_typemaps = [
205    {
206      types = [
207        {
208          mojom = "network.mojom.MutablePartialNetworkTrafficAnnotationTag"
209          cpp = "::net::MutablePartialNetworkTrafficAnnotationTag"
210        },
211      ]
212      traits_headers = [ "//services/network/public/cpp/mutable_partial_network_traffic_annotation_tag_mojom_traits.h" ]
213      traits_public_deps = [ "//net/traffic_annotation" ]
214    },
215  ]
216
217  cpp_typemaps += shared_typemaps
218
219  blink_cpp_typemaps = shared_typemaps
220}
221
222# Make this a separate target to avoid a circular dependency.
223mojom("mojom_schemeful_site") {
224  generate_java = true
225  sources = [ "schemeful_site.mojom" ]
226
227  public_deps = [ "//url/mojom:url_mojom_origin" ]
228
229  if (!is_ios) {
230    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
231    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
232    export_header_blink = "third_party/blink/public/platform/web_common.h"
233  }
234
235  cpp_typemaps = [
236    {
237      types = [
238        {
239          mojom = "network.mojom.SchemefulSite"
240          cpp = "::net::SchemefulSite"
241        },
242      ]
243      traits_headers =
244          [ "//services/network/public/cpp/schemeful_site_mojom_traits.h" ]
245      traits_public_deps = [ "//net" ]
246    },
247  ]
248}
249
250# This target is split from "mojom" target as the lazy serialization may
251# cause problems. See https://crbug.com/822732.
252mojom("websocket_mojom") {
253  generate_java = true
254  sources = [
255    "network_param.mojom",
256    "websocket.mojom",
257  ]
258
259  public_deps = [
260    ":mojom_ip_address",
261    "//mojo/public/mojom/base",
262    "//url/mojom:url_mojom_gurl",
263    "//url/mojom:url_mojom_origin",
264  ]
265
266  if (!is_ios) {
267    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
268    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
269    export_header_blink = "third_party/blink/public/platform/web_common.h"
270  }
271
272  cpp_typemaps = [
273    {
274      types = [
275        {
276          mojom = "network.mojom.AuthChallengeInfo"
277          cpp = "::net::AuthChallengeInfo"
278        },
279        {
280          mojom = "network.mojom.AuthCredentials"
281          cpp = "::net::AuthCredentials"
282        },
283        {
284          mojom = "network.mojom.CertVerifyResult"
285          cpp = "::net::CertVerifyResult"
286        },
287        {
288          mojom = "network.mojom.CTVerifyResult"
289          cpp = "::net::ct::CTVerifyResult"
290        },
291        {
292          mojom = "network.mojom.HostPortPair"
293          cpp = "::net::HostPortPair"
294        },
295        {
296          mojom = "network.mojom.HttpResponseHeaders"
297          cpp = "::scoped_refptr<::net::HttpResponseHeaders>"
298          nullable_is_same_type = true
299        },
300        {
301          mojom = "network.mojom.HttpVersion"
302          cpp = "::net::HttpVersion"
303        },
304        {
305          mojom = "network.mojom.SSLCertRequestInfo"
306          cpp = "::scoped_refptr<::net::SSLCertRequestInfo>"
307          nullable_is_same_type = true
308        },
309        {
310          mojom = "network.mojom.SSLInfo"
311          cpp = "::net::SSLInfo"
312        },
313        {
314          mojom = "network.mojom.X509Certificate"
315          cpp = "::scoped_refptr<::net::X509Certificate>"
316          nullable_is_same_type = true
317        },
318      ]
319      traits_headers = [
320        "//services/network/public/cpp/net_ipc_param_traits.h",
321        "//services/network/public/cpp/network_param_mojom_traits.h",
322      ]
323      traits_sources =
324          [ "//services/network/public/cpp/network_param_mojom_traits.cc" ]
325      traits_public_deps = [
326        "//ipc",
327        "//net",
328        "//services/network/public/cpp:cpp_base",
329      ]
330    },
331  ]
332}
333
334mojom("cookies_mojom") {
335  generate_java = true
336  sources = [
337    "cookie_access_observer.mojom",
338    "cookie_manager.mojom",
339    "restricted_cookie_manager.mojom",
340    "site_for_cookies.mojom",
341  ]
342
343  public_deps = [
344    ":mojom_schemeful_site",
345    "//components/content_settings/core/common:mojo_bindings",
346    "//mojo/public/mojom/base",
347    "//url/mojom:url_mojom_gurl",
348    "//url/mojom:url_mojom_origin",
349  ]
350
351  if (!is_ios) {
352    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
353    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
354    export_header_blink = "third_party/blink/public/platform/web_common.h"
355  }
356
357  # Typemaps which apply to both Blink and non-Blink bindings.
358  shared_cpp_typemaps = [
359    {
360      types = [
361        {
362          mojom = "network.mojom.SiteForCookies"
363          cpp = "::net::SiteForCookies"
364        },
365      ]
366      traits_headers =
367          [ "//services/network/public/cpp/site_for_cookies_mojom_traits.h" ]
368      traits_public_deps = [
369        "//net",
370        "//services/network/public/cpp:cookies_mojom_support",
371      ]
372    },
373  ]
374
375  # Typemaps applied only to non-Blink bindings
376  cpp_typemaps = [
377    {
378      types = [
379        {
380          mojom = "network.mojom.CookiePriority"
381          cpp = "::net::CookiePriority"
382        },
383        {
384          mojom = "network.mojom.CookieSameSite"
385          cpp = "::net::CookieSameSite"
386        },
387        {
388          mojom = "network.mojom.CookieEffectiveSameSite"
389          cpp = "::net::CookieEffectiveSameSite"
390        },
391        {
392          mojom = "network.mojom.CookieSameSiteContext"
393          cpp = "::net::CookieOptions::SameSiteCookieContext"
394        },
395        {
396          mojom = "network.mojom.CookieAccessSemantics"
397          cpp = "::net::CookieAccessSemantics"
398        },
399        {
400          mojom = "network.mojom.CookieOptions"
401          cpp = "::net::CookieOptions"
402        },
403        {
404          mojom = "network.mojom.CanonicalCookie"
405          cpp = "::net::CanonicalCookie"
406        },
407        {
408          mojom = "network.mojom.CookieInclusionStatusWarningReason"
409          cpp = "::net::CookieInclusionStatus::WarningReason"
410        },
411        {
412          mojom = "network.mojom.CookieInclusionStatus"
413          cpp = "::net::CookieInclusionStatus"
414          move_only = true
415        },
416        {
417          mojom = "network.mojom.CookieAccessResult"
418          cpp = "::net::CookieAccessResult"
419          move_only = true
420        },
421        {
422          mojom = "network.mojom.CookieWithAccessResult"
423          cpp = "::net::CookieWithAccessResult"
424        },
425        {
426          mojom = "network.mojom.CookieAndLineWithAccessResult"
427          cpp = "::net::CookieAndLineWithAccessResult"
428        },
429        {
430          mojom = "network.mojom.CookieChangeCause"
431          cpp = "::net::CookieChangeCause"
432        },
433        {
434          mojom = "network.mojom.CookieChangeInfo"
435          cpp = "::net::CookieChangeInfo"
436        },
437        {
438          mojom = "network.mojom.CookieSourceScheme"
439          cpp = "::net::CookieSourceScheme"
440        },
441      ]
442      traits_headers =
443          [ "//services/network/public/cpp/cookie_manager_mojom_traits.h" ]
444      traits_sources =
445          [ "//services/network/public/cpp/cookie_manager_mojom_traits.cc" ]
446      traits_public_deps = [ "//net" ]
447    },
448  ]
449  cpp_typemaps += shared_cpp_typemaps
450
451  blink_cpp_typemaps = [
452    {
453      types = [
454        {
455          mojom = "network.mojom.CanonicalCookie"
456          cpp = "::net::CanonicalCookie"
457        },
458      ]
459      traits_headers =
460          [ "//services/network/public/cpp/cookie_manager_mojom_traits.h" ]
461    },
462  ]
463  blink_cpp_typemaps += shared_cpp_typemaps
464}
465
466mojom("mojom") {
467  generate_java = true
468  sources = [
469    "blocked_by_response_reason.mojom",
470    "cert_verifier_service.mojom",
471    "content_security_policy.mojom",
472    "cors.mojom",
473    "cors_origin_pattern.mojom",
474    "cross_origin_opener_policy.mojom",
475    "default_credentials.mojom",
476    "dhcp_wpad_url_client.mojom",
477    "digitally_signed.mojom",
478    "host_resolver.mojom",
479    "http_raw_headers.mojom",
480    "http_raw_request_response_info.mojom",
481    "http_request_headers.mojom",
482    "isolation_info.mojom",
483    "load_timing_info.mojom",
484    "mdns_responder.mojom",
485    "net_log.mojom",
486    "network_change_manager.mojom",
487    "network_context.mojom",
488    "network_interface.mojom",
489    "network_quality_estimator_manager.mojom",
490    "network_service.mojom",
491    "network_service_test.mojom",
492    "network_types.mojom",
493    "origin_policy_manager.mojom",
494    "p2p.mojom",
495    "p2p_trusted.mojom",
496    "parsed_headers.mojom",
497    "proxy_config.mojom",
498    "proxy_config_with_annotation.mojom",
499    "proxy_lookup_client.mojom",
500    "proxy_resolving_socket.mojom",
501    "quic_transport.mojom",
502    "referrer_policy.mojom",
503    "source_location.mojom",
504    "ssl_config.mojom",
505    "supports_loading_mode.mojom",
506    "tcp_socket.mojom",
507    "tls_socket.mojom",
508    "udp_socket.mojom",
509    "url_loader.mojom",
510    "url_loader_factory.mojom",
511    "url_response_head.mojom",
512    "web_client_hints_types.mojom",
513    "web_sandbox_flags.mojom",
514  ]
515
516  public_deps = [
517    ":cookies_mojom",
518    ":mojom_ip_address",
519    ":mojom_network_isolation_key",
520    ":mojom_schemeful_site",
521    ":url_loader_base",
522    ":websocket_mojom",
523    "//mojo/public/mojom/base",
524    "//services/proxy_resolver/public/mojom",
525    "//url/mojom:url_mojom_gurl",
526    "//url/mojom:url_mojom_origin",
527  ]
528
529  enabled_features = []
530
531  # TODO(crbug/598073): When moving the service implementation to
532  # //services/network, add the correct values for export_class_attribute /
533  # export_define / export_header here. Context in https://crrev.com/2225673002.
534
535  if (is_ct_supported) {
536    enabled_features += [ "is_ct_supported" ]
537    sources += [ "ct_log_info.mojom" ]
538  }
539
540  if (!is_ios) {
541    export_class_attribute_blink = "BLINK_PLATFORM_EXPORT"
542    export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1"
543    export_header_blink = "third_party/blink/public/platform/web_common.h"
544  }
545
546  # This is only needed on desktop linux, but the defines make this difficult
547  # because IS_CHROMECAST is not available in build/build_config.h.
548  if (is_linux || is_lacros) {
549    enabled_features += [ "needs_crypt_config" ]
550  }
551
552  if (is_android || is_ash) {
553    enabled_features += [ "network_change_notifier_in_browser" ]
554  }
555
556  if (trial_comparison_cert_verifier_supported) {
557    enabled_features += [ "is_trial_comparison_cert_verifier_supported" ]
558    sources += [ "trial_comparison_cert_verifier.mojom" ]
559  }
560
561  if (builtin_cert_verifier_feature_supported) {
562    enabled_features += [ "is_builtin_cert_verifier_feature_supported" ]
563  }
564
565  # Typemaps which apply to both Blink and non-Blink bindings.
566  shared_cpp_typemaps = [
567    {
568      types = [
569        {
570          mojom = "network.mojom.CrossOriginOpenerPolicy"
571          cpp = "::network::CrossOriginOpenerPolicy"
572        },
573      ]
574      traits_headers = [ "//services/network/public/cpp/cross_origin_opener_policy_mojom_traits.h" ]
575    },
576    {
577      types = [
578        {
579          mojom = "network.mojom.TrustedUrlRequestParams"
580          cpp = "::network::ResourceRequest::TrustedParams"
581        },
582        {
583          mojom = "network.mojom.URLRequest"
584          cpp = "::network::ResourceRequest"
585        },
586        {
587          mojom = "network.mojom.URLRequestBody"
588          cpp = "::scoped_refptr<::network::ResourceRequestBody>"
589          nullable_is_same_type = true
590          copyable_pass_by_value = true
591        },
592        {
593          mojom = "network.mojom.URLRequestReferrerPolicy"
594          cpp = "::net::ReferrerPolicy"
595        },
596        {
597          mojom = "network.mojom.RequestPriority"
598          cpp = "::net::RequestPriority"
599        },
600        {
601          mojom = "network.mojom.DataElement"
602          cpp = "::network::DataElement"
603          move_only = true
604        },
605      ]
606      traits_headers = [
607        "//services/network/public/cpp/network_ipc_param_traits.h",
608        "//services/network/public/cpp/url_request_mojom_traits.h",
609        "//services/network/public/cpp/network_isolation_key_mojom_traits.h",
610      ]
611      traits_public_deps = [
612        "//base",
613        "//services/network/public/cpp:cpp_base",
614        "//url/mojom:url_mojom_gurl",
615      ]
616    },
617    {
618      types = [
619        {
620          mojom = "network.mojom.HttpRequestHeaders"
621          cpp = "::net::HttpRequestHeaders"
622        },
623      ]
624      traits_headers = [
625        "//services/network/public/cpp/http_request_headers_mojom_traits.h",
626      ]
627      traits_public_deps = [
628        "//net",
629        "//services/network/public/cpp:cpp_base",
630      ]
631    },
632    {
633      types = [
634        {
635          mojom = "network.mojom.IsolationInfo"
636          cpp = "::net::IsolationInfo"
637        },
638      ]
639      traits_headers =
640          [ "//services/network/public/cpp/isolation_info_mojom_traits.h" ]
641      traits_public_deps = [
642        "//net",
643        "//services/network/public/cpp:cpp_base",
644      ]
645    },
646    {
647      types = [
648        {
649          mojom = "network.mojom.NetworkInterface"
650          cpp = "::net::NetworkInterface"
651        },
652      ]
653      traits_headers =
654          [ "//services/network/public/cpp/network_interface_mojom_traits.h" ]
655      traits_public_deps = [
656        "//net",
657        "//services/network/public/cpp:cpp_base",
658      ]
659    },
660    {
661      types = [
662        {
663          mojom = "network.mojom.P2PPacketInfo"
664          cpp = "::network::P2PPacketInfo"
665        },
666        {
667          mojom = "network.mojom.P2PSendPacketMetrics"
668          cpp = "::network::P2PSendPacketMetrics"
669        },
670        {
671          mojom = "network.mojom.P2PPortRange"
672          cpp = "::network::P2PPortRange"
673        },
674        {
675          mojom = "network.mojom.P2PHostAndIPEndPoint"
676          cpp = "::network::P2PHostAndIPEndPoint"
677        },
678        {
679          mojom = "network.mojom.P2PSocketOption"
680          cpp = "::network::P2PSocketOption"
681        },
682        {
683          mojom = "network.mojom.P2PSocketType"
684          cpp = "::network::P2PSocketType"
685        },
686      ]
687      traits_headers = [ "//services/network/public/cpp/p2p_param_traits.h" ]
688      traits_public_deps = [
689        "//services/network/public/cpp:cpp_base",
690        "//third_party/webrtc_overrides:webrtc_component",
691      ]
692    },
693  ]
694
695  # Typemaps applied only to non-Blink bindings
696  cpp_typemaps = [
697    {
698      types = [
699        {
700          mojom = "network.mojom.DefaultCredentials"
701          cpp = "::net::HttpAuthPreferences::DefaultCredentials"
702        },
703      ]
704      traits_headers =
705          [ "//services/network/public/cpp/default_credentials_mojom_traits.h" ]
706      traits_sources = [
707        "//services/network/public/cpp/default_credentials_mojom_traits.cc",
708      ]
709      traits_public_deps = [ "//net" ]
710    },
711    {
712      types = [
713        {
714          mojom = "network.mojom.CTPolicyCompliance"
715          cpp = "::net::ct::CTPolicyCompliance"
716        },
717        {
718          mojom = "network.mojom.CorsErrorStatus"
719          cpp = "::network::CorsErrorStatus"
720        },
721        {
722          mojom = "network.mojom.EffectiveConnectionType"
723          cpp = "::net::EffectiveConnectionType"
724        },
725        {
726          mojom = "network.mojom.OriginPolicy"
727          cpp = "::network::OriginPolicy"
728        },
729        {
730          mojom = "network.mojom.URLLoaderCompletionStatus"
731          cpp = "::network::URLLoaderCompletionStatus"
732        },
733        {
734          mojom = "network.mojom.URLRequestRedirectInfo"
735          cpp = "::net::RedirectInfo"
736        },
737      ]
738      traits_headers =
739          [ "//services/network/public/cpp/network_ipc_param_traits.h" ]
740      traits_public_deps = [
741        "//net",
742        "//services/network/public/cpp:cpp_base",
743      ]
744    },
745    {
746      types = [
747        {
748          mojom = "network.mojom.HashAlgorithm"
749          cpp = "::net::ct::DigitallySigned::HashAlgorithm"
750        },
751        {
752          mojom = "network.mojom.SignatureAlgorithm"
753          cpp = "::net::ct::DigitallySigned::SignatureAlgorithm"
754        },
755        {
756          mojom = "network.mojom.DigitallySigned"
757          cpp = "::net::ct::DigitallySigned"
758        },
759      ]
760      traits_headers =
761          [ "//services/network/public/cpp/digitally_signed_mojom_traits.h" ]
762      traits_sources =
763          [ "//services/network/public/cpp/digitally_signed_mojom_traits.cc" ]
764      traits_public_deps = [ "//net" ]
765    },
766    {
767      types = [
768        {
769          mojom = "network.mojom.DnsConfigOverrides"
770          cpp = "::net::DnsConfigOverrides"
771        },
772        {
773          mojom = "network.mojom.DnsQueryType"
774          cpp = "::net::DnsQueryType"
775        },
776        {
777          mojom = "network.mojom.ResolveErrorInfo"
778          cpp = "::net::ResolveErrorInfo"
779        },
780        {
781          mojom = "network.mojom.ResolveHostParameters.Source"
782          cpp = "::net::HostResolverSource"
783        },
784        {
785          mojom = "network.mojom.MdnsListenClient.UpdateType"
786          cpp = "::net::HostResolver::MdnsListener::Delegate::UpdateType"
787        },
788        {
789          mojom = "network.mojom.SecureDnsMode"
790          cpp = "::net::SecureDnsMode"
791        },
792      ]
793      traits_headers =
794          [ "//services/network/public/cpp/host_resolver_mojom_traits.h" ]
795      traits_sources =
796          [ "//services/network/public/cpp/host_resolver_mojom_traits.cc" ]
797      traits_public_deps = [ "//net" ]
798    },
799    {
800      types = [
801        {
802          mojom = "network.mojom.LoadTimingInfo"
803          cpp = "::net::LoadTimingInfo"
804        },
805        {
806          mojom = "network.mojom.LoadTimingInfoConnectTiming"
807          cpp = "::net::LoadTimingInfo::ConnectTiming"
808        },
809      ]
810      traits_headers =
811          [ "//services/network/public/cpp/load_timing_info_mojom_traits.h" ]
812      traits_sources =
813          [ "//services/network/public/cpp/load_timing_info_mojom_traits.cc" ]
814      traits_public_deps = [ "//net" ]
815    },
816    {
817      types = [
818        {
819          mojom = "network.mojom.NetLogCaptureMode"
820          cpp = "::net::NetLogCaptureMode"
821        },
822        {
823          mojom = "network.mojom.NetLogEventPhase"
824          cpp = "::net::NetLogEventPhase"
825        },
826      ]
827      traits_headers =
828          [ "//services/network/public/cpp/net_log_mojom_traits.h" ]
829      traits_sources =
830          [ "//services/network/public/cpp/net_log_mojom_traits.cc" ]
831      traits_public_deps = [ "//net" ]
832    },
833    {
834      types = [
835        {
836          mojom = "network.mojom.ProxyBypassRules"
837          cpp = "::net::ProxyBypassRules"
838        },
839        {
840          mojom = "network.mojom.ProxyList"
841          cpp = "::net::ProxyList"
842        },
843        {
844          mojom = "network.mojom.ProxyRulesType"
845          cpp = "::net::ProxyConfig::ProxyRules::Type"
846        },
847        {
848          mojom = "network.mojom.ProxyRules"
849          cpp = "::net::ProxyConfig::ProxyRules"
850        },
851        {
852          mojom = "network.mojom.ProxyConfig"
853          cpp = "::net::ProxyConfig"
854        },
855      ]
856      traits_headers =
857          [ "//services/network/public/cpp/proxy_config_mojom_traits.h" ]
858      traits_public_deps = [ "//net" ]
859    },
860    {
861      types = [
862        {
863          mojom = "network.mojom.ProxyConfigWithAnnotation"
864          cpp = "::net::ProxyConfigWithAnnotation"
865        },
866      ]
867      traits_headers = [ "//services/network/public/cpp/proxy_config_with_annotation_mojom_traits.h" ]
868      traits_public_deps = [ "//net" ]
869    },
870    {
871      types = [
872        {
873          mojom = "cert_verifier.mojom.RequestParams"
874          cpp = "::net::CertVerifier::RequestParams"
875        },
876        {
877          mojom = "cert_verifier.mojom.CertVerifierConfig"
878          cpp = "::net::CertVerifier::Config"
879        },
880      ]
881      traits_headers = [ "//services/network/public/cpp/cert_verifier/cert_verifier_mojom_traits.h" ]
882      traits_sources = [ "//services/network/public/cpp/cert_verifier/cert_verifier_mojom_traits.cc" ]
883      traits_public_deps = [
884        "//mojo/public/cpp/base",
885        "//net",
886      ]
887    },
888  ]
889  cpp_typemaps += shared_cpp_typemaps
890
891  blink_cpp_typemaps = shared_cpp_typemaps
892}
893