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

import("//build/buildflag_header.gni")
import("//build/config/chromeos/rules.gni")
import("//build/config/ui.gni")
import("//testing/test.gni")
import("//third_party/protobuf/proto_library.gni")

assert(is_chromeos, "Non-Chrome-OS builds must not depend on //chromeos")

# Used by targets that compile into the implementation.
config("chromeos_implementation") {
  defines = [ "CHROMEOS_IMPLEMENTATION" ]
}

buildflag_header("chromeos_buildflags") {
  header = "chromeos_buildflags.h"
  flags = [ "IS_CROS_CHROME_SDK=$is_cros_chrome_sdk" ]
}

component("chromeos") {
  configs += [
    ":chromeos_implementation",
    "//build/config/linux/nss:system_nss_no_ssl_config",
  ]
  public_deps = [
    ":chromeos_constants",
  ]
  deps = [
    ":account_manager_proto",
    ":chromeos_export",
    "//base",
    "//base:i18n",
    "//chromeos/dbus",
    "//components/policy/proto",
    "//google_apis",
    "//services/device/public/mojom",
    "//services/network/public/cpp:cpp",
    "//services/service_manager/public/cpp",
    "//third_party/protobuf:protobuf_lite",
  ]
  sources = [
    "account_manager/account_manager.cc",
    "account_manager/account_manager.h",
    "account_manager/account_manager_factory.cc",
    "account_manager/account_manager_factory.h",
    "app_mode/kiosk_oem_manifest_parser.cc",
    "app_mode/kiosk_oem_manifest_parser.h",
    "hugepage_text/hugepage_text.cc",
    "hugepage_text/hugepage_text.h",
    "policy/weekly_time/time_utils.cc",
    "policy/weekly_time/time_utils.h",
    "policy/weekly_time/weekly_time.cc",
    "policy/weekly_time/weekly_time.h",
    "policy/weekly_time/weekly_time_interval.cc",
    "policy/weekly_time/weekly_time_interval.h",
    "printing/epson_driver_matching.cc",
    "printing/epson_driver_matching.h",
    "printing/ppd_cache.cc",
    "printing/ppd_cache.h",
    "printing/ppd_line_reader.cc",
    "printing/ppd_line_reader.h",
    "printing/ppd_provider.cc",
    "printing/ppd_provider.h",
    "printing/printer_configuration.cc",
    "printing/printer_configuration.h",
    "printing/printer_translator.cc",
    "printing/printer_translator.h",
    "printing/uri_components.cc",
    "printing/uri_components.h",
    "process_proxy/process_output_watcher.cc",
    "process_proxy/process_output_watcher.h",
    "process_proxy/process_proxy.cc",
    "process_proxy/process_proxy.h",
    "process_proxy/process_proxy_registry.cc",
    "process_proxy/process_proxy_registry.h",
    "system/cpu_temperature_reader.cc",
    "system/cpu_temperature_reader.h",
    "system/dark_resume_controller.cc",
    "system/dark_resume_controller.h",
    "system/devicemode.cc",
    "system/devicemode.h",
    "system/factory_ping_embargo_check.cc",
    "system/factory_ping_embargo_check.h",

    # Used when running mash, both on Linux and on real devices.
    "system/fake_statistics_provider.cc",
    "system/fake_statistics_provider.h",
    "system/name_value_pairs_parser.cc",
    "system/name_value_pairs_parser.h",
    "system/statistics_provider.cc",
    "system/statistics_provider.h",
  ]
  if (current_cpu == "arm" || current_cpu == "x86") {
    defines = [ "BINDER_IPC_32BIT" ]
  }
}

source_set("chromeos_export") {
  deps = [
    "//base",
  ]
  sources = [
    "chromeos_export.h",
  ]
}

source_set("chromeos_constants") {
  configs += [ ":chromeos_implementation" ]
  deps = [
    ":chromeos_export",
    "//base",
    "//base:i18n",
    "//chromeos/dbus:constants",
    "//third_party/icu",
  ]
  sources = [
    "constants/chromeos_constants.cc",
    "constants/chromeos_constants.h",
    "constants/chromeos_features.cc",
    "constants/chromeos_features.h",
    "constants/chromeos_paths.cc",
    "constants/chromeos_paths.h",
    "constants/chromeos_pref_names.cc",
    "constants/chromeos_pref_names.h",
    "constants/chromeos_switches.cc",
    "constants/chromeos_switches.h",
    "constants/devicetype.cc",
    "constants/devicetype.h",
  ]
}

# This must be a static library instead of a source set because some of the
# files pull in things with dependencies that aren't linked in all cases.
#
# TODO this should probably be changed such that it links in all cases and
# can be converted to a source set.
static_library("test_support") {
  testonly = true
  public_deps = [
    ":test_support_source_set",
  ]
}

source_set("test_support_source_set") {
  testonly = true
  public_deps = [
    ":chromeos",
    ":test_utils",
  ]
  deps = [
    "//chromeos/attestation:test_support",
    "//chromeos/cryptohome:test_support",
    "//chromeos/dbus:test_support",
    "//chromeos/disks:test_support",
    "//chromeos/login/auth:test_support",
    "//chromeos/login/login_state:test_support",
    "//chromeos/network:test_support",
    "//google_apis",
    "//net:test_support",
    "//services/network:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]
}

source_set("test_utils") {
  deps = [
    "//base",
  ]
  sources = [
    "test/chromeos_test_utils.cc",
    "test/chromeos_test_utils.h",
  ]
}

test("chromeos_unittests") {
  configs += [
    "//build/config/linux/dbus",
    "//build/config/linux/nss:system_nss_no_ssl_config",
  ]
  deps = [
    ":chromeos_buildflags",
    ":test_support",
    "//base/test:test_support",
    "//chromeos/attestation:unit_tests",
    "//chromeos/audio:unit_tests",
    "//chromeos/cryptohome:unit_tests",
    "//chromeos/dbus:test_support",
    "//chromeos/dbus:unit_tests",
    "//chromeos/dbus/services:unit_tests",
    "//chromeos/disks:unit_tests",
    "//chromeos/geolocation:unit_tests",
    "//chromeos/login/auth:unit_tests",
    "//chromeos/login/login_state:unit_tests",
    "//chromeos/network:test_support",
    "//chromeos/network:unit_tests",
    "//chromeos/services:unit_tests",
    "//chromeos/settings:unit_tests",
    "//chromeos/timezone:unit_tests",
    "//chromeos/tpm:unit_tests",
    "//components/onc",
    "//components/policy:generated",
    "//components/policy/proto",
    "//components/prefs:test_support",
    "//components/proxy_config",
    "//dbus:test_support",
    "//google_apis",
    "//mojo/core/embedder",
    "//net",
    "//net:test_support",
    "//services/device/public/cpp/test:test_support",
    "//services/device/public/mojom",
    "//services/network:test_support",
    "//services/network/public/cpp",
    "//services/service_manager/public/cpp/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/icu",
    "//url",
  ]
  sources = [
    "account_manager/account_manager_unittest.cc",
    "app_mode/kiosk_oem_manifest_parser_unittest.cc",
    "policy/weekly_time/time_utils_unittest.cc",
    "policy/weekly_time/weekly_time_interval_unittest.cc",
    "policy/weekly_time/weekly_time_unittest.cc",
    "printing/epson_driver_matching_unittest.cc",
    "printing/ppd_cache_unittest.cc",
    "printing/ppd_line_reader_unittest.cc",
    "printing/ppd_provider_unittest.cc",
    "printing/printer_configuration_unittest.cc",
    "printing/printer_translator_unittest.cc",
    "process_proxy/process_output_watcher_unittest.cc",
    "process_proxy/process_proxy_unittest.cc",
    "system/cpu_temperature_reader_unittest.cc",
    "system/dark_resume_controller_unittest.cc",
    "system/factory_ping_embargo_check_unittest.cc",
    "system/name_value_pairs_parser_unittest.cc",
    "test/run_all_unittests.cc",
  ]

  data = [
    "test/data/",
  ]
}

# The following definitions only apply when building for a CrOS board (ie: not
# linux-chromeos). See the following for reference:
# https://chromium.googlesource.com/chromium/src/+/master/docs/chromeos_build_instructions.md
# https://chromium.googlesource.com/chromiumos/docs/+/master/simple_chrome_workflow.md
if (is_cros_chrome_sdk) {
  generate_runner_script("cros_vm_launcher") {
    generated_script = "$root_build_dir/bin/launch_cros_vm"

    # Assume every time we build cros_vm_launcher, we also build chrome and
    # want to deploy it to the VM.
    deploy_chrome = true
  }

  # The sanity test's actual binary is baked into the OS image. All we need to
  # do is build the test wrapper and build our own browser to push to the VM
  # before testing it.
  generate_runner_script("cros_vm_sanity_test") {
    testonly = true
    test_exe = "cros_vm_sanity_test"
    generated_script = "$root_build_dir/bin/run_cros_vm_sanity_test"
    runtime_deps_file = "$root_out_dir/cros_vm_sanity_test.runtime_deps"

    data_deps = [
      ":cros_chrome_deploy",
      "//:chromiumos_preflight",  # Builds the browser.
    ]
  }

  tast_test("chrome_login_tast_tests") {
    tast_tests = [
      "ui.ChromeLogin",
      "ui.ChromeCrashLoggedIn",
      "ui.ChromeCrashNotLoggedIn",
    ]
  }

  # Tast test sources live in the Chromium OS repository.
  # To diagnose tast failures or disable tests, see go/tast-failures
  tast_test("chrome_all_tast_tests") {
    # To disable a specific test, add it the following list.
    tast_disabled_tests = []
  }
  tast_test("chrome_kevin_tast_tests") {
    # Tests that fail on Kevin devices.
    tast_disabled_tests = [
      # Disabled due to misleading USE flags on full boards. crbug.com/916367
      "arc.Boot",
      "arc.BuildProperties",
      "security.NetworkListenersARC",
      "video.WebRTCPeerConnCameraVP8",  # crbug.com/923061
    ]
  }

  group("cros_chrome_deploy") {
    # The following run-time dependencies are needed to deploy chrome to a
    # ChromeOS device. See the link for the full list:
    # https://codesearch.chromium.org/chromium/src/third_party/chromite/lib/chrome_util.py?l=341
    # Most of these are copy targets, for which GN doesn't add their outputs
    # as runtime-deps. See the link below for more details:
    # https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/reference.md#actions-and-copies
    data_deps = [
      "//chrome:xdg_mime",
      "//mojo/core:shared_library_arc32",
      "//mojo/core:shared_library_arc64",
    ]

    # TODO(bpastene): Figure out what's generating resources/chromeos/ and
    # declare it as a dep instead of adding the dir directly.
    data = [
      "$root_out_dir/resources/chromeos/",
    ]
  }
}

proto_library("account_manager_proto") {
  sources = [
    "account_manager/tokens.proto",
  ]

  proto_out_dir = "chromeos/account_manager"
}
