# Copyright 2015 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.

if (is_android) {
  import("//build/config/android/rules.gni")
}

static_library("url_formatter") {
  sources = [
    "android/component_jni_registrar.cc",
    "android/component_jni_registrar.h",
    "elide_url.cc",
    "elide_url.h",
    "url_fixer.cc",
    "url_fixer.h",
    "url_formatter.cc",
    "url_formatter.h",
    "url_formatter_android.cc",
    "url_formatter_android.h",
  ]

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

  deps = [
    "//base",
    "//net",
    "//third_party/icu",
    "//url",
  ]

  if (is_android) {
    deps += [ "android:jni_headers" ]
  } else {
    deps += [ "//ui/gfx" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "elide_url_unittest.cc",
    "url_fixer_unittest.cc",
    "url_formatter_unittest.cc",
  ]

  deps = [
    ":url_formatter",
    "//base",
    "//net",
    "//testing/gtest",
    "//ui/gfx",
    "//url",
  ]

  if (is_android) {
    deps -= [ "//ui/gfx" ]
  }
}
