# Copyright (c) 2018 The WebRTC project authors. All Rights Reserved.
#
# Use of this source code is governed by a BSD-style license
# that can be found in the LICENSE file in the root of the source
# tree. An additional intellectual property rights grant can be found
# in the file PATENTS.  All contributing project authors may
# be found in the AUTHORS file in the root of the source tree.

import("../../../webrtc.gni")

rtc_static_library("network_control") {
  sources = [
    "include/network_control.h",
    "include/network_types.h",
    "include/network_units.h",
    "include/network_units_to_string.h",
    "network_types.cc",
    "network_units.cc",
    "network_units_to_string.cc",
  ]

  deps = [
    "../../:module_api",
    "../../../api:optional",
    "../../../rtc_base:checks",
    "../../../rtc_base:rtc_base_approved",
  ]
}

if (rtc_include_tests) {
  rtc_source_set("network_control_test") {
    testonly = true
    sources = [
      "test/mock_network_control.h",
      "test/network_control_tester.cc",
      "test/network_control_tester.h",
      "test/network_ostream_operators.cc",
      "test/network_ostream_operators.h",
    ]
    deps = [
      ":network_control",
      "../../../api:optional",
      "../../../rtc_base:checks",
      "../../../rtc_base:rtc_base_approved",
      "../../../test:test_support",
    ]
  }
  rtc_source_set("network_control_unittests") {
    testonly = true
    sources = [
      "network_units_unittest.cc",
    ]
    deps = [
      ":network_control",
      "../../../test:test_support",
    ]
  }
}
