Upload upstream chromium 85.0.4183.84
[platform/framework/web/chromium-efl.git] / url / BUILD.gn
1 # Copyright (c) 2013 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
5 import("//build/buildflag_header.gni")
6 import("//testing/libfuzzer/fuzzer_test.gni")
7 import("//testing/test.gni")
8 import("features.gni")
9
10 if (is_android) {
11   import("//build/config/android/config.gni")
12   import("//build/config/android/rules.gni")
13 }
14
15 buildflag_header("buildflags") {
16   header = "buildflags.h"
17   flags = [ "USE_PLATFORM_ICU_ALTERNATIVES=$use_platform_icu_alternatives" ]
18 }
19
20 component("url") {
21   sources = [
22     "gurl.cc",
23     "gurl.h",
24     "origin.cc",
25     "origin.h",
26     "scheme_host_port.cc",
27     "scheme_host_port.h",
28     "third_party/mozilla/url_parse.cc",
29     "third_party/mozilla/url_parse.h",
30     "url_canon.cc",
31     "url_canon.h",
32     "url_canon_etc.cc",
33     "url_canon_filesystemurl.cc",
34     "url_canon_fileurl.cc",
35     "url_canon_host.cc",
36     "url_canon_internal.cc",
37     "url_canon_internal.h",
38     "url_canon_internal_file.h",
39     "url_canon_ip.cc",
40     "url_canon_ip.h",
41     "url_canon_mailtourl.cc",
42     "url_canon_path.cc",
43     "url_canon_pathurl.cc",
44     "url_canon_query.cc",
45     "url_canon_relative.cc",
46     "url_canon_stdstring.cc",
47     "url_canon_stdstring.h",
48     "url_canon_stdurl.cc",
49     "url_constants.cc",
50     "url_constants.h",
51     "url_file.h",
52     "url_parse_file.cc",
53     "url_parse_internal.h",
54     "url_util.cc",
55     "url_util.h",
56     "url_util_internal.h",
57   ]
58
59   defines = [ "IS_URL_IMPL" ]
60
61   deps = [
62     "//base",
63     "//base/third_party/dynamic_annotations",
64     "//ipc:param_traits",
65   ]
66
67   if (is_win) {
68     # Don't conflict with Windows' "url.dll".
69     output_name = "url_lib"
70   }
71
72   # ICU support.
73   if (use_platform_icu_alternatives) {
74     if (is_android) {
75       sources += [ "url_idna_icu_alternatives_android.cc" ]
76       deps += [
77         ":buildflags",
78         ":url_java",
79         ":url_jni_headers",
80         "//base",
81         "//base/third_party/dynamic_annotations",
82       ]
83     } else if (is_ios) {
84       sources += [ "url_idna_icu_alternatives_ios.mm" ]
85     } else {
86       assert(false,
87              "ICU alternative is not implemented for platform: " + target_os)
88     }
89   } else {
90     # Use ICU.
91     sources += [
92       "url_canon_icu.cc",
93       "url_canon_icu.h",
94       "url_idna_icu.cc",
95     ]
96     deps += [ "//third_party/icu" ]
97   }
98 }
99
100 if (is_android) {
101   source_set("gurl_android") {
102     sources = [
103       "android/gurl_android.cc",
104       "android/gurl_android.h",
105       "android/parsed_android.cc",
106       "android/parsed_android.h",
107     ]
108
109     deps = [
110       ":gurl_jni_headers",
111       ":url",
112       "//base:base",
113     ]
114   }
115
116   static_library("origin_android") {
117     sources = [ "android/origin_android.cc" ]
118
119     deps = [
120       ":url",
121       ":url_jni_headers",
122       "//base",
123       "//url/mojom:url_mojom_origin",
124     ]
125   }
126
127   android_library("url_java") {
128     sources = [ "android/java/src/org/chromium/url/IDNStringUtil.java" ]
129     deps = [ "//base:base_java" ]
130   }
131
132   android_library("gurl_java") {
133     sources = [
134       "android/java/src/org/chromium/url/GURL.java",
135       "android/java/src/org/chromium/url/Parsed.java",
136       "android/java/src/org/chromium/url/URI.java",
137     ]
138     deps = [
139       "//base:base_java",
140       "//base:jni_java",
141     ]
142     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
143   }
144
145   android_library("origin_java") {
146     sources = [ "android/java/src/org/chromium/url/Origin.java" ]
147     deps = [
148       "//base:base_java",
149       "//url/mojom:url_mojom_origin_java",
150     ]
151   }
152
153   generate_jni("url_jni_headers") {
154     sources = [
155       "android/java/src/org/chromium/url/IDNStringUtil.java",
156       "android/java/src/org/chromium/url/Origin.java",
157     ]
158   }
159
160   generate_jni("gurl_jni_headers") {
161     sources = [
162       "android/java/src/org/chromium/url/GURL.java",
163       "android/java/src/org/chromium/url/Parsed.java",
164     ]
165   }
166 }
167
168 test("url_unittests") {
169   sources = [
170     "gurl_unittest.cc",
171     "origin_unittest.cc",
172     "run_all_unittests.cc",
173     "scheme_host_port_unittest.cc",
174     "url_canon_icu_unittest.cc",
175     "url_canon_unittest.cc",
176     "url_parse_unittest.cc",
177     "url_test_utils.h",
178     "url_util_unittest.cc",
179   ]
180
181   deps = [
182     ":url",
183     "//base",
184     "//base/test:test_support",
185     "//testing/gmock",
186     "//testing/gtest",
187   ]
188
189   if (!is_ios) {
190     sources += [ "mojom/url_gurl_mojom_traits_unittest.cc" ]
191   }
192
193   if (use_platform_icu_alternatives) {
194     # Unit tests that are not supported by the current ICU alternatives on Android.
195     if (is_android) {
196       sources -= [
197         "url_canon_icu_unittest.cc",
198         "url_canon_unittest.cc",
199       ]
200       deps += [ ":url_java" ]
201     }
202
203     # Unit tests that are not supported by the current ICU alternatives on iOS.
204     if (is_ios) {
205       sources -= [
206         "origin_unittest.cc",
207         "scheme_host_port_unittest.cc",
208         "url_canon_icu_unittest.cc",
209         "url_canon_unittest.cc",
210       ]
211     }
212   } else {  # !use_platform_icu_alternatives
213     deps += [ "//third_party/icu:icuuc" ]
214   }
215
216   if (!is_ios) {
217     deps += [
218       "//mojo/core/embedder",
219       "//url/mojom:test_url_mojom_gurl",
220     ]
221   }
222   if (is_android) {
223     sources += [ "android/gurl_android_unittest.cc" ]
224     deps += [
225       ":gurl_android",
226       ":gurl_java",
227       ":gurl_javatests",
228       ":native_j_unittests_jni_headers",
229     ]
230   }
231 }
232
233 test("url_perftests") {
234   sources = [
235     "run_all_perftests.cc",
236     "url_parse_perftest.cc",
237   ]
238
239   deps = [
240     ":url",
241     "//base",
242     "//base/test:test_support",
243     "//testing/gtest",
244   ]
245 }
246
247 fuzzer_test("gurl_fuzzer") {
248   sources = [ "gurl_fuzzer.cc" ]
249   deps = [
250     ":url",
251     "//base",
252     "//base:i18n",
253   ]
254   dict = "gurl_fuzzer.dict"
255 }
256
257 if (is_android) {
258   android_library("gurl_javatests") {
259     testonly = true
260     sources = [
261       "android/native_java_unittests/src/org/chromium/url/GURLJavaTest.java",
262     ]
263     deps = [
264       ":gurl_java",
265       ":gurl_jni_headers",
266       "//base:base_java",
267       "//base:base_java_test_support",
268       "//base:jni_java",
269       "//third_party/android_support_test_runner:rules_java",
270       "//third_party/android_support_test_runner:runner_java",
271       "//third_party/junit",
272       "//third_party/mockito:mockito_java",
273     ]
274     annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
275   }
276
277   # See https://bugs.chromium.org/p/chromium/issues/detail?id=908819 for why we
278   # can't put 'java' in the name here.
279   generate_jni("native_j_unittests_jni_headers") {
280     testonly = true
281     sources = [
282       "android/native_java_unittests/src/org/chromium/url/GURLJavaTest.java",
283     ]
284   }
285 }