# 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",
    "//third_party/boringssl:boringssl",
    "//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",
    "//third_party/boringssl:boringssl",
  ]
}
