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

component("proxy_config") {
  sources = [
    "pref_proxy_config_tracker.cc",
    "pref_proxy_config_tracker.h",
    "pref_proxy_config_tracker_impl.cc",
    "pref_proxy_config_tracker_impl.h",
    "proxy_config_dictionary.cc",
    "proxy_config_dictionary.h",
    "proxy_config_export.h",
    "proxy_config_pref_names.cc",
    "proxy_config_pref_names.h",
    "proxy_prefs.cc",
    "proxy_prefs.h",
  ]

  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  defines = [ "PROXY_CONFIG_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//components/prefs",
    "//net",
    "//url",
  ]

  # TODO(https://crbug.com/562773): Break a header include cycle on ChromeOS
  # and disable include checking so GN doesn't complain about the missing
  # dependency (it still links OK). This cycle should be fixed and header
  # checking enabled.
  if (is_chromeos) {
    check_includes = false
  } else {
    deps += [ "//components/pref_registry" ]
  }
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "pref_proxy_config_tracker_impl_unittest.cc",
    "proxy_config_dictionary_unittest.cc",
    "proxy_prefs_unittest.cc",
  ]
  deps = [
    ":proxy_config",
    "//base",
    "//base/test:test_support",
    "//components/prefs:test_support",
    "//net",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
