xref: /aosp_15_r20/external/cronet/url/mojom/BUILD.gn (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1# Copyright 2016 The Chromium Authors
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")
7
8mojom("url_mojom_gurl") {
9  generate_java = true
10  sources = [ "url.mojom" ]
11
12  cpp_typemaps = [
13    {
14      types = [
15        {
16          mojom = "url.mojom.Url"
17          cpp = "::GURL"
18        },
19      ]
20      traits_headers = [ "//url/mojom/url_gurl_mojom_traits.h" ]
21      traits_public_deps = [
22        ":mojom_traits",
23        "//url",
24      ]
25    },
26  ]
27
28  blink_cpp_typemaps = [
29    {
30      types = [
31        {
32          mojom = "url.mojom.Url"
33          cpp = "::blink::KURL"
34          force_serialize = true
35        },
36      ]
37      traits_headers = [
38        "//third_party/blink/renderer/platform/mojo/kurl_mojom_traits.h",
39        "//third_party/blink/renderer/platform/weborigin/kurl_hash.h",
40      ]
41      traits_public_deps = [ "//url" ]
42    },
43  ]
44
45  webui_module_path = "chrome://resources/mojo/url/mojom"
46
47  # Used by Closure compiler targets in ash/webui/help_app_ui/, so this needs
48  # to generate WebUI bindings in JavaScript on Ash.
49  if (is_chromeos_ash) {
50    generate_webui_js_bindings = true
51  }
52
53  # Legacy JS bindings are needed for Blink regardless of platform.
54  generate_legacy_js_bindings = true
55}
56
57mojom("url_mojom_origin") {
58  generate_java = true
59  sources = [ "origin.mojom" ]
60
61  public_deps = [
62    ":url_mojom_gurl",
63    "//mojo/public/mojom/base",
64  ]
65
66  check_includes_blink = false
67
68  cpp_typemaps = [
69    {
70      types = [
71        {
72          mojom = "url.mojom.Origin"
73          cpp = "::url::Origin"
74        },
75      ]
76      traits_headers = [ "//url/mojom/origin_mojom_traits.h" ]
77      traits_public_deps = [
78        ":mojom_traits",
79        "//url",
80      ]
81    },
82  ]
83
84  blink_cpp_typemaps = [
85    {
86      types = [
87        {
88          mojom = "url.mojom.Origin"
89          cpp = "::scoped_refptr<const ::blink::SecurityOrigin>"
90          nullable_is_same_type = true
91        },
92      ]
93      traits_headers = [ "//third_party/blink/renderer/platform/mojo/security_origin_mojom_traits.h" ]
94      traits_public_deps = [ "//url" ]
95    },
96  ]
97
98  webui_module_path = "chrome://resources/mojo/url/mojom"
99  generate_legacy_js_bindings = true
100}
101
102mojom("url_mojom_scheme_host_port") {
103  generate_java = true
104  sources = [ "scheme_host_port.mojom" ]
105
106  cpp_typemaps = [
107    {
108      types = [
109        {
110          mojom = "url.mojom.SchemeHostPort"
111          cpp = "::url::SchemeHostPort"
112        },
113      ]
114      traits_headers = [ "//url/mojom/scheme_host_port_mojom_traits.h" ]
115      traits_public_deps = [ "//url" ]
116    },
117  ]
118}
119
120mojom("test_url_mojom_gurl") {
121  sources = [ "url_test.mojom" ]
122
123  public_deps = [
124    ":url_mojom_gurl",
125    ":url_mojom_origin",
126    ":url_mojom_scheme_host_port",
127  ]
128}
129
130component("mojom_traits") {
131  output_name = "url_mojom_traits"
132
133  sources = [
134    "origin_mojom_traits.cc",
135    "origin_mojom_traits.h",
136    "scheme_host_port_mojom_traits.cc",
137    "scheme_host_port_mojom_traits.h",
138    "url_gurl_mojom_traits.cc",
139    "url_gurl_mojom_traits.h",
140  ]
141
142  defines = [ "IS_URL_MOJOM_TRAITS_IMPL" ]
143
144  public_deps = [
145    ":url_mojom_gurl_shared",
146    ":url_mojom_origin_shared",
147    ":url_mojom_scheme_host_port",
148    "//base",
149    "//mojo/public/cpp/base:shared_typemap_traits",
150    "//url",
151  ]
152
153  configs += [ "//build/config/compiler:wexit_time_destructors" ]
154}
155