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

# CryptAuth is a component which manages data about devices associated with a
# user's account. This component both sends data about the current device and
# requets data about associated devices.

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

static_library("cryptauth") {
  sources = [
    "authenticator.cc",
    "authenticator.h",
    "background_eid_generator.cc",
    "background_eid_generator.h",
    "connection.cc",
    "connection.h",
    "cryptauth_api_call_flow.cc",
    "cryptauth_api_call_flow.h",
    "cryptauth_client.h",
    "cryptauth_client_impl.cc",
    "cryptauth_client_impl.h",
    "cryptauth_device_manager.cc",
    "cryptauth_device_manager.h",
    "cryptauth_device_manager_impl.cc",
    "cryptauth_device_manager_impl.h",
    "cryptauth_enroller.h",
    "cryptauth_enroller_impl.cc",
    "cryptauth_enroller_impl.h",
    "cryptauth_enrollment_manager.cc",
    "cryptauth_enrollment_manager.h",
    "cryptauth_enrollment_manager_impl.cc",
    "cryptauth_enrollment_manager_impl.h",
    "cryptauth_enrollment_utils.cc",
    "cryptauth_enrollment_utils.h",
    "cryptauth_gcm_manager.cc",
    "cryptauth_gcm_manager.h",
    "cryptauth_gcm_manager_impl.cc",
    "cryptauth_gcm_manager_impl.h",
    "cryptauth_service.cc",
    "cryptauth_service.h",
    "data_with_timestamp.cc",
    "data_with_timestamp.h",
    "device_classifier_util.cc",
    "device_classifier_util.h",
    "device_to_device_authenticator.cc",
    "device_to_device_authenticator.h",
    "device_to_device_initiator_helper.cc",
    "device_to_device_initiator_helper.h",
    "device_to_device_secure_context.cc",
    "device_to_device_secure_context.h",
    "expiring_remote_device_cache.cc",
    "expiring_remote_device_cache.h",
    "foreground_eid_generator.cc",
    "foreground_eid_generator.h",
    "gcm_device_info_provider.h",
    "local_device_data_provider.cc",
    "local_device_data_provider.h",
    "network_request_error.cc",
    "network_request_error.h",
    "pref_names.cc",
    "pref_names.h",
    "raw_eid_generator.h",
    "raw_eid_generator_impl.cc",
    "raw_eid_generator_impl.h",
    "remote_device.cc",
    "remote_device.h",
    "remote_device_cache.cc",
    "remote_device_cache.h",
    "remote_device_loader.cc",
    "remote_device_loader.h",
    "remote_device_provider.cc",
    "remote_device_provider.h",
    "remote_device_provider_impl.cc",
    "remote_device_provider_impl.h",
    "remote_device_ref.cc",
    "remote_device_ref.h",
    "secure_channel.cc",
    "secure_channel.h",
    "secure_context.h",
    "secure_message_delegate.cc",
    "secure_message_delegate.h",
    "secure_message_delegate_impl.cc",
    "secure_message_delegate_impl.h",
    "session_keys.cc",
    "session_keys.h",
    "software_feature_manager.h",
    "software_feature_manager_impl.cc",
    "software_feature_manager_impl.h",
    "software_feature_state.cc",
    "software_feature_state.h",
    "switches.cc",
    "switches.h",
    "sync_scheduler.cc",
    "sync_scheduler.h",
    "sync_scheduler_impl.cc",
    "sync_scheduler_impl.h",
    "wire_message.cc",
    "wire_message.h",
  ]

  deps = [
    "//base",
    "//chromeos",
    "//chromeos/components/proximity_auth/logging",
    "//components/cryptauth/ble",
    "//components/cryptauth/proto:util",
    "//components/gcm_driver",
    "//components/gcm_driver/common",
    "//components/prefs",
    "//components/version_info",
    "//crypto",
    "//google_apis",
    "//net",
    "//services/identity/public/cpp",
  ]

  public_deps = [
    "//components/cryptauth/proto",
  ]

  # TODO (hansberry): Resolve this.
  allow_circular_includes_from = [ "//components/cryptauth/ble" ]
}

static_library("test_support") {
  testonly = true

  sources = [
    "device_to_device_responder_operations.cc",
    "device_to_device_responder_operations.h",
    "fake_authenticator.cc",
    "fake_authenticator.h",
    "fake_background_eid_generator.cc",
    "fake_background_eid_generator.h",
    "fake_connection.cc",
    "fake_connection.h",
    "fake_cryptauth_device_id_provider.cc",
    "fake_cryptauth_device_id_provider.h",
    "fake_cryptauth_device_manager.cc",
    "fake_cryptauth_device_manager.h",
    "fake_cryptauth_enrollment_manager.cc",
    "fake_cryptauth_enrollment_manager.h",
    "fake_cryptauth_gcm_manager.cc",
    "fake_cryptauth_gcm_manager.h",
    "fake_cryptauth_service.cc",
    "fake_cryptauth_service.h",
    "fake_gcm_device_info_provider.cc",
    "fake_gcm_device_info_provider.h",
    "fake_remote_device_provider.cc",
    "fake_remote_device_provider.h",
    "fake_secure_channel.cc",
    "fake_secure_channel.h",
    "fake_secure_context.cc",
    "fake_secure_context.h",
    "fake_secure_message_delegate.cc",
    "fake_secure_message_delegate.h",
    "fake_software_feature_manager.cc",
    "fake_software_feature_manager.h",
    "mock_cryptauth_client.cc",
    "mock_cryptauth_client.h",
    "mock_foreground_eid_generator.cc",
    "mock_foreground_eid_generator.h",
    "mock_local_device_data_provider.cc",
    "mock_local_device_data_provider.h",
    "mock_sync_scheduler.cc",
    "mock_sync_scheduler.h",
    "remote_device_test_util.cc",
    "remote_device_test_util.h",
  ]

  public_deps = [
    ":cryptauth",
    "//components/cryptauth/proto",
  ]

  deps = [
    "//base",
    "//chromeos/components/proximity_auth/logging",
    "//testing/gmock",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "background_eid_generator_unittest.cc",
    "connection_unittest.cc",
    "cryptauth_api_call_flow_unittest.cc",
    "cryptauth_client_impl_unittest.cc",
    "cryptauth_device_manager_impl_unittest.cc",
    "cryptauth_enroller_impl_unittest.cc",
    "cryptauth_enrollment_manager_impl_unittest.cc",
    "cryptauth_gcm_manager_impl_unittest.cc",
    "device_to_device_authenticator_unittest.cc",
    "device_to_device_operations_unittest.cc",
    "device_to_device_secure_context_unittest.cc",
    "expiring_remote_device_cache_unittest.cc",
    "fake_secure_message_delegate_unittest.cc",
    "foreground_eid_generator_unittest.cc",
    "local_device_data_provider_unittest.cc",
    "raw_eid_generator_impl_unittest.cc",
    "remote_device_cache_unittest.cc",
    "remote_device_loader_unittest.cc",
    "remote_device_provider_impl_unittest.cc",
    "remote_device_ref_unittest.cc",
    "secure_channel_unittest.cc",
    "session_keys_unittest.cc",
    "software_feature_manager_impl_unittest.cc",
    "sync_scheduler_impl_unittest.cc",
    "wire_message_unittest.cc",
  ]

  deps = [
    ":cryptauth",
    ":test_support",
    "//base/test:test_support",
    "//components/cryptauth/ble:unit_tests",
    "//components/gcm_driver:test_support",
    "//components/prefs:test_support",
    "//google_apis:test_support",
    "//net:test_support",
    "//services/identity/public/cpp:test_support",
    "//testing/gtest",
  ]
}
