# Copyright 2018 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

static_library("data") {
  sources = [
    "domain.cc",
    "domain.h",
    "l2cap_socket_channel_relay.cc",
    "l2cap_socket_factory.cc",
    "socket_channel_relay.cc",
    "socket_channel_relay.h",
    "socket_factory.cc",
    "socket_factory.h",
  ]

  deps = [
    "//src/connectivity/bluetooth/core/bt-host/common",
    "//src/connectivity/bluetooth/core/bt-host/hci",
    "//src/connectivity/bluetooth/core/bt-host/l2cap",
  ]

  public_deps = [ "//sdk/lib/sys/inspect/cpp" ]
}

source_set("testing") {
  testonly = true

  sources = [
    "fake_domain.cc",
    "fake_domain.h",
  ]

  public_deps = [
    ":data",
    "//src/connectivity/bluetooth/core/bt-host/l2cap:testing",
  ]
}

source_set("tests") {
  testonly = true

  sources = [
    "domain_unittest.cc",
    "socket_channel_relay_unittest.cc",
    "socket_factory_unittest.cc",
  ]

  deps = [
    ":data",
    "//garnet/public/lib/gtest",
    "//sdk/lib/inspect/testing/cpp",
    "//src/connectivity/bluetooth/core/bt-host/l2cap:testing",
    "//src/connectivity/bluetooth/core/bt-host/testing",
    "//third_party/googletest:gtest",
  ]
}
