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

source_set("attestation") {
  configs += [ "//components/enterprise:extra_warnings" ]

  sources = [ "attestation_utils.cc" ]

  public = [
    "attestation_service.h",
    "attestation_utils.h",
    "attester.h",
  ]

  public_deps = [
    ":types",
    "//base",
    "//components/device_signals/core/common",
    "//components/enterprise/device_trust/core",
    "//components/enterprise/device_trust/core/attestation/proto:attestation_ca_proto",
    "//components/enterprise/device_trust/core/attestation/proto:google_key_proto",
    "//components/enterprise/device_trust/core/attestation/proto:interface_proto",
    "//third_party/abseil-cpp:absl",
  ]

  deps = []

  if (is_linux || is_win || is_mac || is_chromeos) {
    public += [
      "attestation_switches.h",
      "browser_attestation_service.h",
      "crypto_utility.h",
      "google_keys.h",
      "profile_attester.h",
    ]

    sources += [
      "attestation_switches.cc",
      "browser_attestation_service.cc",
      "crypto_utility.cc",
      "google_keys.cc",
      "profile_attester.cc",
    ]

    deps += [
      "//components/enterprise/browser/identifiers",
      "//components/policy/core/common",
      "//crypto",
      "//third_party/boringssl",
    ]
  }

  if (is_linux || is_win || is_mac) {
    public += [ "device_attester.h" ]
    sources += [ "device_attester.cc" ]

    deps += [ "//components/enterprise" ]
  }
}

source_set("types") {
  configs += [ "//components/enterprise:extra_warnings" ]

  public = [ "signals_type.h" ]

  if (is_chromeos) {
    public_deps =
        [ "//chromeos/ash/components/dbus/attestation:attestation_proto" ]
  } else {
    public_deps = [ "//components/enterprise/device_trust/core/attestation/proto:attestation_ca_proto" ]
  }
}

source_set("test_support") {
  testonly = true
  configs += [ "//components/enterprise:extra_warnings" ]

  sources = [ "mock_attestation_service.cc" ]

  public = [ "mock_attestation_service.h" ]

  public_deps = [
    ":attestation",
    ":types",
    "//components/enterprise/device_trust/core",
    "//testing/gmock",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = []

  deps = [
    ":attestation",
    ":test_support",
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (is_linux || is_win || is_mac || is_chromeos) {
    sources += [ "browser_attestation_service_unittest.cc" ]
  }
}
