# 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")
import("//url/config.gni")

# Sets the USE_ICU_ALTERNATIVES_ON_ANDROID define based on the build flag.
config("url_icu_config") {
  if (use_icu_alternatives_on_android) {
    defines = [ "USE_ICU_ALTERNATIVES_ON_ANDROID=1" ]
  }
}

component("url") {
  if (is_win) {
    # Don't conflict with Windows' "url.dll".
    output_name = "url_lib"
  }
  sources = [
    "android/url_jni_registrar.cc",
    "android/url_jni_registrar.h",
    "gurl.cc",
    "gurl.h",
    "origin.cc",
    "origin.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_icu.cc",
    "url_canon_icu.h",
    "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",
  ]

  defines = [ "URL_IMPLEMENTATION" ]

  configs += [
    ":url_icu_config",

    # 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:icudata",
    "//third_party/icu",
  ]

  if (use_icu_alternatives_on_android) {
    sources -= [
      "url_canon_icu.cc",
      "url_canon_icu.h",
    ]
    deps -= [
      "//third_party/icu:icudata",
      "//third_party/icu",
    ]

    sources += [
      "url_canon_icu_alternatives_android.cc",
      "url_canon_icu_alternatives_android.h",
    ]
  }
}

# TODO(dpranke): crbug.com/360936. Get this to build and run on Android.
if (!is_android) {
  test("url_unittests") {
    sources = [
      "gurl_unittest.cc",
      "origin_unittest.cc",
      "url_canon_icu_unittest.cc",
      "url_canon_unittest.cc",
      "url_parse_unittest.cc",
      "url_test_utils.h",
      "url_util_unittest.cc",
    ]

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

    #if (is_posix && !is_mac && !is_ios) {
    #  if (use_allocator!="none") {
    #    deps += "//base/allocator"
    #  }
    #}

    deps = [
      ":url",
      "//base",
      "//base/test:run_all_unittests",
      "//testing/gtest",
      "//third_party/icu:icuuc",
    ]

    if (use_icu_alternatives_on_android) {
      sources -= [ "url_canon_icu_unittest.cc" ]
      deps -= [ "//third_party/icu:icuuc" ]
    }
  }
}
