# 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("//testing/test.gni")

static_library("proximity_auth") {
  sources = [
    "authenticator.h",
    "bluetooth_connection.cc",
    "bluetooth_connection.h",
    "bluetooth_connection_finder.cc",
    "bluetooth_connection_finder.h",
    "bluetooth_throttler.h",
    "bluetooth_throttler_impl.cc",
    "bluetooth_throttler_impl.h",
    "bluetooth_util.cc",
    "bluetooth_util.h",
    "bluetooth_util_chromeos.cc",
    "connection.cc",
    "connection.h",
    "connection_finder.h",
    "connection_observer.h",
    "cryptauth_enroller_factory_impl.cc",
    "cryptauth_enroller_factory_impl.h",
    "device_to_device_authenticator.cc",
    "device_to_device_authenticator.h",
    "device_to_device_initiator_operations.cc",
    "device_to_device_initiator_operations.h",
    "device_to_device_secure_context.cc",
    "device_to_device_secure_context.h",
    "messenger.h",
    "messenger_impl.cc",
    "messenger_impl.h",
    "messenger_observer.h",
    "metrics.cc",
    "metrics.h",
    "proximity_auth_client.h",
    "proximity_auth_pref_manager.cc",
    "proximity_auth_pref_manager.h",
    "proximity_auth_pref_names.cc",
    "proximity_auth_pref_names.h",
    "proximity_auth_system.cc",
    "proximity_auth_system.h",
    "proximity_monitor.h",
    "proximity_monitor_impl.cc",
    "proximity_monitor_impl.h",
    "proximity_monitor_observer.h",
    "remote_device.cc",
    "remote_device.h",
    "remote_device_life_cycle.h",
    "remote_device_life_cycle_impl.cc",
    "remote_device_life_cycle_impl.h",
    "remote_device_loader.cc",
    "remote_device_loader.h",
    "remote_status_update.cc",
    "remote_status_update.h",
    "screenlock_bridge.cc",
    "screenlock_bridge.h",
    "screenlock_state.h",
    "secure_context.h",
    "switches.cc",
    "switches.h",
    "throttled_bluetooth_connection_finder.cc",
    "throttled_bluetooth_connection_finder.h",
    "unlock_manager.cc",
    "unlock_manager.h",
    "wire_message.cc",
    "wire_message.h",
  ]

  deps = [
    "//base",
    "//components/prefs",
    "//components/proximity_auth/ble",
    "//components/proximity_auth/cryptauth",
    "//components/proximity_auth/logging",
    "//components/signin/core/account_id:account_id",
    "//device/bluetooth",
    "//net",
  ]

  # TODO(https://crbug.com/562683): This whitelists a circular include
  # dependency between this target and the following targets which should not
  # exist.
  allow_circular_includes_from = [
    "//components/proximity_auth/ble",
    "//components/proximity_auth/cryptauth",
  ]

  if (is_chromeos) {
    deps += [ "//chromeos" ]
  }
}

static_library("test_support") {
  testonly = true

  sources = [
    "device_to_device_responder_operations.cc",
    "device_to_device_responder_operations.h",
    "fake_connection.cc",
    "fake_connection.h",
    "fake_secure_context.cc",
    "fake_secure_context.h",
    "mock_proximity_auth_client.cc",
    "mock_proximity_auth_client.h",
    "proximity_auth_test_util.cc",
    "proximity_auth_test_util.h",
  ]

  public_deps = [
    ":proximity_auth",
  ]

  deps = [
    "//base",
    "//components/proximity_auth/cryptauth:test_support",
    "//components/proximity_auth/logging",
    "//testing/gmock",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "bluetooth_connection_finder_unittest.cc",
    "bluetooth_connection_unittest.cc",
    "bluetooth_throttler_impl_unittest.cc",
    "connection_unittest.cc",
    "device_to_device_authenticator_unittest.cc",
    "device_to_device_operations_unittest.cc",
    "device_to_device_secure_context_unittest.cc",
    "messenger_impl_unittest.cc",
    "proximity_auth_pref_manager_unittest.cc",
    "proximity_auth_system_unittest.cc",
    "proximity_monitor_impl_unittest.cc",
    "remote_device_life_cycle_impl_unittest.cc",
    "remote_device_loader_unittest.cc",
    "remote_status_update_unittest.cc",
    "throttled_bluetooth_connection_finder_unittest.cc",
    "unlock_manager_unittest.cc",
    "wire_message_unittest.cc",
  ]

  configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]

  deps = [
    ":proximity_auth",
    ":test_support",
    "//base",
    "//base/test:test_support",
    "//components/prefs:test_support",
    "//components/proximity_auth/ble:unit_tests",
    "//components/proximity_auth/cryptauth:test_support",
    "//components/proximity_auth/cryptauth:unit_tests",
    "//components/proximity_auth/logging",
    "//components/proximity_auth/logging:unit_tests",
    "//device/bluetooth:mocks",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (is_chromeos) {
    deps += [ "//chromeos" ]
  }
}

# Note: This is a convenience target for ease of rapid iteration during
# development. It is not executed on any try or build bots.
if (!is_chromeos) {
  test("proximity_auth_unittests") {
    sources = [
      "run_all_unittests.cc",
    ]
    deps = [
      ":unit_tests",
      "//base",
      "//base/test:test_support",
    ]
  }
}
