# 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 = [
    "//base",
    "//device/bluetooth",
    "//net",
    ":proto",
  ]
}

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

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

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