# Copyright 2019 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/chrome_build.gni")
import("//chrome/browser/buildflags.gni")

source_set("updater") {
  public = [ "updater.h" ]

  public_deps = [
    "//base",
    "//chrome/updater/mojom",
  ]

  friend = [
    ":test_support",
    ":unit_tests",
    "//chrome/browser/metrics:unit_tests",
  ]

  if (enable_updater && (is_mac || is_win)) {
    sources = [
      "browser_updater_client.cc",
      "browser_updater_client.h",
      "browser_updater_client_util.cc",
      "browser_updater_client_util.h",
      "check_updater_health_task.cc",
      "check_updater_health_task.h",
      "scheduler.cc",
      "scheduler.h",
      "scheduler_impl.cc",
      "updater.cc",
    ]

    deps = [
      "//chrome/browser:buildflags",
      "//chrome/common:version_header",
      "//chrome/updater:branding_header",
      "//chrome/updater:browser_sources",
    ]

    if (is_win) {
      sources += [
        "browser_updater_client_util_win.cc",
        "browser_updater_client_win.cc",
        "scheduler_win.cc",
      ]
      deps += [
        "//chrome/browser/google",
        "//chrome/install_static:install_static_util",
        "//chrome/installer/util:with_no_strings",
        "//chrome/updater:browser_sources",
      ]
    }

    if (is_mac) {
      sources += [
        "browser_updater_client_mac.mm",
        "browser_updater_client_util_mac.mm",
        "browser_updater_helper_client_mac.h",
        "browser_updater_helper_client_mac.mm",
        "scheduler_mac.cc",
      ]

      deps += [
        "//chrome/app:branded_strings_grit",
        "//chrome/app:generated_resources_grit",
        "//chrome/browser/google",
        "//chrome/common",
        "//chrome/common:channel_info",
        "//chrome/common:chrome_features",
        "//chrome/updater:browser_sources",
        "//components/activity_reporter:buildflags",
        "//ui/base",
      ]
      frameworks = [ "OpenDirectory.framework" ]
    }
  } else if (enable_updater && is_linux) {
    # Chromium Updater is only partially supported on Linux. Linux support in
    # the browser exists to facilitate the implementation of cross-platform
    # features (e.g. the chrome://updater page).
    sources = [
      "browser_updater_client.cc",
      "browser_updater_client.h",
      "browser_updater_client_linux.cc",
      "updater.cc",
      "updater_linux.cc",
    ]
    deps = [
      "//chrome/browser:buildflags",
      "//chrome/updater:browser_sources",
      "//components/version_info",
    ]
  } else {
    sources = [ "updater_no_updater.cc" ]
    deps = [ "//components/version_info" ]
  }
}

source_set("unit_tests") {
  testonly = true
  if (enable_updater && (is_win || is_mac)) {
    sources = [ "browser_updater_client_unittest.cc" ]
    deps = [
      ":test_support",
      ":updater",
      "//base",
      "//base/test:test_support",
      "//chrome/updater:public_sources",
      "//chrome/updater:public_util",
      "//testing/gtest",
    ]
    if (is_mac) {
      deps += [ "//chrome/updater:browser_sources" ]
    }
  }
}

source_set("test_support") {
  testonly = true
  if (enable_updater && (is_win || is_mac)) {
    sources = [
      "browser_updater_client_testutils.cc",
      "browser_updater_client_testutils.h",
    ]
    deps = [
      ":updater",
      "//base",
      "//chrome/updater:public_sources",
      "//chrome/updater:public_util",
    ]
  }
}
