# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//build/config/chromeos/ui_mode.gni")
import("//extensions/buildflags/buildflags.gni")

assert(enable_extensions,
       "Cannot depend on extensions because enable_extensions=false.")

source_set("socket") {
  sources = [
    "mojo_data_pump.cc",
    "mojo_data_pump.h",
    "socket.cc",
    "socket.h",
    "socket_api.cc",
    "socket_api.h",
    "tcp_socket.cc",
    "tcp_socket.h",
    "tls_socket.cc",
    "tls_socket.h",
    "udp_socket.cc",
    "udp_socket.h",
    "write_quota_checker.cc",
    "write_quota_checker.h",
  ]

  configs += [ "//build/config/compiler:wexit_time_destructors" ]

  public_deps = [
    "//base",
    "//build:chromeos_buildflags",
    "//content/public/browser",
    "//content/public/common",
    "//extensions/browser:browser_sources",
    "//extensions/common",
    "//extensions/common/api",
    "//mojo/public/cpp/bindings",
    "//mojo/public/cpp/system",
    "//net",
    "//net/traffic_annotation",
    "//services/network/public/cpp",
    "//services/network/public/mojom",
    "//services/network/public/mojom:mojom_host_resolver",
  ]

  deps = [ "//url" ]

  if (is_chromeos) {
    sources += [
      "app_firewall_hole_manager.cc",
      "app_firewall_hole_manager.h",
    ]

    public_deps += [ "//chromeos/components/firewall_hole" ]

    deps += [ "//components/keyed_service/content" ]
  }
}
