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

source_set("quic") {
  sources = [
    "quic_client.cc",
    "quic_client.h",
    "quic_connection.h",
    "quic_connection_factory.h",
    "quic_server.cc",
    "quic_server.h",
    "quic_service_common.cc",
    "quic_service_common.h",
  ]

  deps = [
    "../../../platform",
    "../../../third_party/abseil",
    "../../../util",
    "../../public",
  ]
}

source_set("test_support") {
  testonly = true
  sources = [
    "testing/fake_quic_connection.cc",
    "testing/fake_quic_connection.h",
    "testing/fake_quic_connection_factory.cc",
    "testing/fake_quic_connection_factory.h",
    "testing/quic_test_support.cc",
    "testing/quic_test_support.h",
  ]

  public_deps = [
    ":quic",
    "../../../platform",
    "../../../platform:test",
    "../../public",
  ]

  deps = [
    "../../../third_party/abseil",
    "../../../third_party/googletest:gmock",
    "../../../util",
    "../../msgs",
  ]
}
