# 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" ]

  if (is_win) {
    cflags = [ "/wd4267" ]  # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
  }

  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",
    ]

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

    if (is_win) {
      cflags = [
        # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
        "/wd4267",
      ]
    }

    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" ]
    }
  }
}
