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

static_library("component_updater") {
  sources = [
    "component_updater_paths.cc",
    "component_updater_paths.h",
    "component_updater_service.cc",
    "component_updater_service.h",
    "component_updater_service_internal.h",
    "component_updater_switches.cc",
    "component_updater_switches.h",
    "component_updater_url_constants.cc",
    "component_updater_url_constants.h",
    "configurator_impl.cc",
    "configurator_impl.h",
    "default_component_installer.cc",
    "default_component_installer.h",
    "pref_names.cc",
    "pref_names.h",
    "timer.cc",
    "timer.h",
  ]

  deps = [
    "//base",
    "//components/update_client",
    "//components/version_info",
    "//ui/base",
    "//url",
  ]
}

static_library("test_support") {
  testonly = true
  sources = [
    "mock_component_updater_service.cc",
    "mock_component_updater_service.h",
  ]

  public_deps = [
    ":component_updater",
    "//base",
    "//testing/gmock",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "component_updater_service_unittest.cc",
    "configurator_impl_unittest.cc",
    "default_component_installer_unittest.cc",
    "timer_unittest.cc",
  ]

  deps = [
    ":component_updater",
    "//base",
    "//base/test:test_support",
    "//components/update_client:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}
