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

assert(is_chromeos, "MultiDevice is Chrome OS only")

static_library("multidevice") {
  sources = [
    "beacon_seed.cc",
    "beacon_seed.h",
    "expiring_remote_device_cache.cc",
    "expiring_remote_device_cache.h",
    "remote_device.cc",
    "remote_device.h",
    "remote_device_cache.cc",
    "remote_device_cache.h",
    "remote_device_ref.cc",
    "remote_device_ref.h",
    "secure_message_delegate.cc",
    "secure_message_delegate.h",
    "secure_message_delegate_impl.cc",
    "secure_message_delegate_impl.h",
    "software_feature.cc",
    "software_feature.h",
    "software_feature_state.cc",
    "software_feature_state.h",
  ]

  deps = [
    "//base",
    "//base:i18n",
    "//chromeos/components/multidevice/logging",
    "//chromeos/dbus",
    "//chromeos/services/device_sync/proto",
    "//chromeos/services/device_sync/proto:util",
    "//components/prefs",
  ]
}

static_library("test_support") {
  testonly = true

  sources = [
    "fake_secure_message_delegate.cc",
    "fake_secure_message_delegate.h",
    "remote_device_test_util.cc",
    "remote_device_test_util.h",
  ]

  public_deps = [
    ":multidevice",
  ]

  deps = [
    "//base",
    "//chromeos/services/device_sync/proto",
  ]
}

source_set("unit_tests") {
  testonly = true

  sources = [
    "expiring_remote_device_cache_unittest.cc",
    "fake_secure_message_delegate_unittest.cc",
    "remote_device_cache_unittest.cc",
    "remote_device_ref_unittest.cc",
  ]

  deps = [
    ":multidevice",
    ":test_support",
    "//base/test:test_support",
    "//chromeos/components/multidevice/logging:unit_tests",
    "//chromeos/components/multidevice/mojom:unit_tests",
    "//chromeos/services/device_sync/proto",
    "//testing/gtest",
  ]
}
