# Copyright (c) 2013 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("//testing/test.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",
]

component("url") {
  sources = url_shared_sources + [
              "url_canon_icu.cc",
              "url_canon_icu.h",
            ]

  if (is_win) {
    # Don't conflict with Windows' "url.dll".
    output_name = "url_lib"
  }
  defines = [ "URL_IMPLEMENTATION" ]

  configs += [
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    "//build/config/compiler:no_size_t_to_int_warning",
  ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//third_party/icu",
    "//third_party/icu:icudata",
  ]
}

if (is_android) {
  android_library("url_java") {
    java_files = [ "android/java/src/org/chromium/url/IDNStringUtil.java" ]
    deps = [
      "//base:base_java",
    ]
  }

  generate_jni("url_jni_headers") {
    sources = [
      "android/java/src/org/chromium/url/IDNStringUtil.java",
    ]
    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") {
  sources = [
    "gurl_unittest.cc",
    "origin_unittest.cc",
    "run_all_unittests.cc",
    "scheme_host_port_unittest.cc",
    "url_canon_icu_unittest.cc",
    "url_canon_unittest.cc",
    "url_parse_unittest.cc",
    "url_test_utils.h",
    "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) {
    deps += [
      "//mojo/edk/system",
      "//mojo/edk/test:test_support",
      "//url/mojo:test_url_mojom_gurl",
    ]
  }
}
