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

import("//build/config/jumbo.gni")

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

jumbo_static_library("url_formatter") {
  sources = [
    "elide_url.cc",
    "elide_url.h",
    "idn_spoof_checker.cc",
    "idn_spoof_checker.h",
    "url_fixer.cc",
    "url_fixer.h",
    "url_formatter.cc",
    "url_formatter.h",
    "url_formatter_android.cc",
  ]

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

  deps = [
    "//base",
    "//base:i18n",
    "//components/url_formatter/top_domains:generate_top_domains_trie",
    "//net",
    "//net:preload_decoder",
    "//third_party/icu",
    "//ui/gfx",
    "//url",
  ]

  if (is_android) {
    deps += [ "android:jni_headers" ]
  }
}

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

  deps = [
    ":url_formatter",
    "//base",
    "//base/test:test_support",
    "//components/url_formatter/top_domains:generate_top_domains_test_trie",
    "//net",
    "//net:preload_decoder",
    "//testing/gtest",
    "//ui/gfx",
    "//url",
  ]
}
