Index: url/BUILD.gn |
diff --git a/url/BUILD.gn b/url/BUILD.gn |
index 361c516fd28584324eb085477122423c0db687df..764e3a9b5e96d14df9e844d3cba71122d41130ea 100644 |
--- a/url/BUILD.gn |
+++ b/url/BUILD.gn |
@@ -2,60 +2,57 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
+import("//build/buildflag_header.gni") |
import("//testing/test.gni") |
+import("features.gni") |
if (is_android) { |
import("//build/config/android/rules.gni") |
} |
-# Shared sources between url and url_lib_use_icu_alternatives_on_android. |
-url_shared_sources = [ |
- "gurl.cc", |
- "gurl.h", |
- "origin.cc", |
- "origin.h", |
- "scheme_host_port.cc", |
- "scheme_host_port.h", |
- "third_party/mozilla/url_parse.cc", |
- "third_party/mozilla/url_parse.h", |
- "url_canon.h", |
- "url_canon_etc.cc", |
- "url_canon_filesystemurl.cc", |
- "url_canon_fileurl.cc", |
- "url_canon_host.cc", |
- "url_canon_internal.cc", |
- "url_canon_internal.h", |
- "url_canon_internal_file.h", |
- "url_canon_ip.cc", |
- "url_canon_ip.h", |
- "url_canon_mailtourl.cc", |
- "url_canon_path.cc", |
- "url_canon_pathurl.cc", |
- "url_canon_query.cc", |
- "url_canon_relative.cc", |
- "url_canon_stdstring.cc", |
- "url_canon_stdstring.h", |
- "url_canon_stdurl.cc", |
- "url_constants.cc", |
- "url_constants.h", |
- "url_export.h", |
- "url_file.h", |
- "url_parse_file.cc", |
- "url_parse_internal.h", |
- "url_util.cc", |
- "url_util.h", |
-] |
+buildflag_header("url_features") { |
+ header = "url_features.h" |
+ flags = [ "USE_PLATFORM_ICU_ALTERNATIVES=$use_platform_icu_alternatives" ] |
+} |
component("url") { |
- sources = url_shared_sources + [ |
- "url_canon_icu.cc", |
- "url_canon_icu.h", |
- ] |
+ sources = [ |
+ "gurl.cc", |
+ "gurl.h", |
+ "origin.cc", |
+ "origin.h", |
+ "scheme_host_port.cc", |
+ "scheme_host_port.h", |
+ "third_party/mozilla/url_parse.cc", |
+ "third_party/mozilla/url_parse.h", |
+ "url_canon.h", |
+ "url_canon_etc.cc", |
+ "url_canon_filesystemurl.cc", |
+ "url_canon_fileurl.cc", |
+ "url_canon_host.cc", |
+ "url_canon_internal.cc", |
+ "url_canon_internal.h", |
+ "url_canon_internal_file.h", |
+ "url_canon_ip.cc", |
+ "url_canon_ip.h", |
+ "url_canon_mailtourl.cc", |
+ "url_canon_path.cc", |
+ "url_canon_pathurl.cc", |
+ "url_canon_query.cc", |
+ "url_canon_relative.cc", |
+ "url_canon_stdstring.cc", |
+ "url_canon_stdstring.h", |
+ "url_canon_stdurl.cc", |
+ "url_constants.cc", |
+ "url_constants.h", |
+ "url_export.h", |
+ "url_file.h", |
+ "url_parse_file.cc", |
+ "url_parse_internal.h", |
+ "url_util.cc", |
+ "url_util.h", |
+ ] |
- if (is_win) { |
- # Don't conflict with Windows' "url.dll". |
- output_name = "url_lib" |
- } |
defines = [ "URL_IMPLEMENTATION" ] |
configs += [ |
@@ -66,9 +63,43 @@ component("url") { |
deps = [ |
"//base", |
"//base/third_party/dynamic_annotations", |
- "//third_party/icu", |
- "//third_party/icu:icudata", |
] |
+ |
+ if (is_win) { |
+ # Don't conflict with Windows' "url.dll". |
+ output_name = "url_lib" |
+ } |
+ |
+ # ICU support. |
+ if (use_platform_icu_alternatives) { |
+ if (is_android) { |
+ sources += [ |
+ "android/url_jni_registrar.cc", |
+ "android/url_jni_registrar.h", |
+ "url_canon_icu_alternatives_android.cc", |
+ "url_canon_icu_alternatives_android.h", |
+ ] |
+ deps += [ |
+ ":url_features", |
+ ":url_java", |
+ ":url_jni_headers", |
+ "//base", |
+ "//base/third_party/dynamic_annotations", |
+ ] |
+ } else if (is_ios) { |
+ sources += [ "url_canon_icu_alternatives_ios.mm" ] |
+ } else { |
+ assert(false, |
+ "ICU alternative is not implemented for platform: " + target_os) |
+ } |
+ } else { |
+ # Use ICU. |
+ sources += [ |
+ "url_canon_icu.cc", |
+ "url_canon_icu.h", |
+ ] |
+ deps += [ "//third_party/icu" ] |
+ } |
} |
if (is_android) { |
@@ -85,32 +116,6 @@ if (is_android) { |
] |
jni_package = "url" |
} |
- |
- component("url_lib_use_icu_alternatives_on_android") { |
- sources = url_shared_sources + [ |
- "android/url_jni_registrar.cc", |
- "android/url_jni_registrar.h", |
- "url_canon_icu_alternatives_android.cc", |
- "url_canon_icu_alternatives_android.h", |
- ] |
- |
- defines = [ |
- "URL_IMPLEMENTATION", |
- "USE_ICU_ALTERNATIVES_ON_ANDROID=1", |
- ] |
- |
- configs += [ |
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
- "//build/config/compiler:no_size_t_to_int_warning", |
- ] |
- |
- deps = [ |
- ":url_java", |
- ":url_jni_headers", |
- "//base", |
- "//base/third_party/dynamic_annotations", |
- ] |
- } |
} |
test("url_unittests") { |
@@ -126,22 +131,44 @@ test("url_unittests") { |
"url_util_unittest.cc", |
] |
- if (!is_ios) { |
- sources += [ "mojo/url_gurl_struct_traits_unittest.cc" ] |
- } |
- |
- # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
- configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
- |
deps = [ |
":url", |
"//base", |
"//base/test:test_support", |
"//testing/gtest", |
- "//third_party/icu:icuuc", |
] |
if (!is_ios) { |
+ sources += [ "mojo/url_gurl_struct_traits_unittest.cc" ] |
+ } |
+ |
+ if (use_platform_icu_alternatives) { |
+ # Unit tests that are not supported by the current ICU alternatives on Android. |
+ if (is_android) { |
+ sources -= [ |
+ "url_canon_icu_unittest.cc", |
+ "url_canon_unittest.cc", |
+ ] |
+ deps += [ ":url_java" ] |
+ } |
+ |
+ # Unit tests that are not supported by the current ICU alternatives on iOS. |
+ if (is_ios) { |
+ sources -= [ |
+ "origin_unittest.cc", |
+ "scheme_host_port_unittest.cc", |
+ "url_canon_icu_unittest.cc", |
+ "url_canon_unittest.cc", |
+ ] |
+ } |
+ } else { # !use_platform_icu_alternatives |
+ deps += [ "//third_party/icu:icuuc" ] |
+ } |
+ |
+ # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. |
+ configs += [ "//build/config/compiler:no_size_t_to_int_warning" ] |
+ |
+ if (!is_ios) { |
deps += [ |
"//mojo/edk/system", |
"//mojo/edk/test:test_support", |