# 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_installer.cc",
    "component_installer.h",
    "component_updater_command_line_config_policy.cc",
    "component_updater_command_line_config_policy.h",
    "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",
    "pref_names.cc",
    "pref_names.h",
    "timer.cc",
    "timer.h",
    "timer_update_scheduler.cc",
    "timer_update_scheduler.h",
    "update_scheduler.h",
  ]

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

static_library("crl_set_remover") {
  sources = [
    "crl_set_remover.cc",
    "crl_set_remover.h",
  ]

  deps = [
    "//base",
  ]
}

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_installer_unittest.cc",
    "component_updater_service_unittest.cc",
    "configurator_impl_unittest.cc",
    "timer_unittest.cc",
  ]

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