# 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("//third_party/protobuf/proto_library.gni")

source_set("pairing") {
  sources = [
    "bluetooth_controller_pairing_controller.cc",
    "bluetooth_controller_pairing_controller.h",
    "bluetooth_host_pairing_controller.cc",
    "bluetooth_host_pairing_controller.h",
    "bluetooth_pairing_constants.cc",
    "bluetooth_pairing_constants.h",
    "controller_pairing_controller.cc",
    "controller_pairing_controller.h",
    "fake_controller_pairing_controller.cc",
    "fake_controller_pairing_controller.h",
    "fake_host_pairing_controller.cc",
    "fake_host_pairing_controller.h",
    "host_pairing_controller.cc",
    "host_pairing_controller.h",
    "message_buffer.cc",
    "message_buffer.h",
    "proto_decoder.cc",
    "proto_decoder.h",
    "shark_connection_listener.cc",
    "shark_connection_listener.h",
  ]

  deps = [
    ":proto",
    "//base",
    "//chromeos",
    "//device/bluetooth",
    "//net",
    "//services/device/public/interfaces",
    "//services/device/public/interfaces:constants",
    "//services/service_manager/public/cpp",
  ]
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "message_buffer_unittest.cc",
  ]

  deps = [
    ":pairing",
    "//net",
    "//testing/gtest",
  ]
}

proto_library("proto") {
  sources = [
    "pairing_api.proto",
  ]
}
