chromium/content/child/BUILD.gn

# Copyright 2014 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/features.gni")
import("//build/config/ui.gni")
import("//device/vr/buildflags/buildflags.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//third_party/blink/public/public_features.gni")
if (is_android) {
  import("//build/config/android/config.gni")
}

if (is_component_build) {
  link_target_type = "source_set"
} else {
  link_target_type = "static_library"
}
target(link_target_type, "child") {
  # Targets external to content should always link to the public API.
  # Internal targets can link to this but only if they're child processes
  # (i.e. not content/browser or content/common) and only if they're inside the
  # content component (i.e. not content/test or content/shell).
  visibility = [
    ":*",
    "//content/gpu/*",
    "//content/ppapi_plugin/*",
    "//content/public/child:child_sources",
    "//content/renderer/*",
    "//content/utility/*",
    "//tools/ipc_fuzzer/*",
  ]
  if (is_android) {
    # See comment in content/app/BUILD.gn above content_app_deps.
    visibility += [ "//content/app:*" ]
  }

  sources = [
    "assert_matching_enums.cc",
    "blink_platform_impl.cc",
    "blink_platform_impl.h",
    "browser_exposed_child_interfaces.cc",
    "browser_exposed_child_interfaces.h",
    "child_process.cc",
    "child_process.h",
    "child_process_synthetic_trial_syncer.cc",
    "child_process_synthetic_trial_syncer.h",
    "child_thread_impl.cc",
    "child_thread_impl.h",
    "field_trial.cc",
    "field_trial.h",
    "image_decoder_utils.cc",
    "runtime_features.cc",
    "runtime_features.h",
    "scoped_child_process_reference.cc",
    "scoped_child_process_reference.h",
  ]

  configs += [ "//build/config:precompiled_headers" ]

  public_deps = [
    "//gpu/ipc/client:client",
    "//ipc",
    "//services/service_manager/public/mojom:mojom_blink",
  ]

  deps = [
    "//base",
    "//build/config/compiler:compiler_buildflags",
    "//cc/paint",
    "//components/discardable_memory/client",
    "//components/discardable_memory/public/mojom",
    "//components/metrics",
    "//components/permissions:permissions_common",
    "//components/tracing:startup_tracing",
    "//components/variations",
    "//components/webcrypto",
    "//content/common",
    "//content/common:mojo_bindings",
    "//content/public/common:common_sources",
    "//device/base",
    "//device/gamepad/public/cpp:switches",
    "//device/vr/buildflags",
    "//gpu/command_buffer/client",
    "//media",
    "//mojo/core/embedder",
    "//net",
    "//services/device/public/cpp:device_features",
    "//services/device/public/cpp/power_monitor",
    "//services/network/public/cpp",
    "//services/resource_coordinator/public/cpp/memory_instrumentation",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/mojom",
    "//services/tracing/public/cpp",
    "//services/tracing/public/cpp:traced_process",
    "//services/tracing/public/cpp/background_tracing:background_tracing",
    "//services/webnn/public/mojom",
    "//skia",
    "//storage/common",
    "//third_party/blink/public:blink_headers",
    "//third_party/blink/public:buildflags",
    "//third_party/blink/public:resources",
    "//third_party/blink/public:scaled_resources",
    "//third_party/blink/public/common",
    "//third_party/blink/public/common:buildflags",
    "//third_party/blink/public/strings",
    "//third_party/ced",
    "//third_party/zlib/google:compression_utils",
    "//ui/base",
    "//ui/events/blink",
    "//ui/events/gestures/blink",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//ui/gl",
    "//ui/native_theme",
    "//url",
    "//v8",
  ]

  if (is_linux || is_chromeos) {
    sources += [
      "child_process_sandbox_support_impl_linux.cc",
      "child_process_sandbox_support_impl_linux.h",
      "sandboxed_process_thread_type_handler.cc",
      "sandboxed_process_thread_type_handler.h",
    ]
    deps += [
      "//components/services/font/public/cpp",
      "//components/services/font/public/mojom",
    ]
  }

  if (is_win) {
    sources += [
      "dwrite_font_proxy/dwrite_font_proxy_init_impl_win.cc",
      "dwrite_font_proxy/dwrite_font_proxy_init_impl_win.h",
      "dwrite_font_proxy/dwrite_font_proxy_win.cc",
      "dwrite_font_proxy/dwrite_font_proxy_win.h",
      "dwrite_font_proxy/dwrite_localized_strings_win.cc",
      "dwrite_font_proxy/dwrite_localized_strings_win.h",
      "dwrite_font_proxy/font_fallback_win.cc",
      "dwrite_font_proxy/font_fallback_win.h",
      "font_warmup_win.cc",
      "font_warmup_win.h",
    ]
    libs = [ "dwrite.lib" ]
  }

  if (is_mac) {
    sources += [
      "child_process_sandbox_support_impl_mac.cc",
      "child_process_sandbox_support_impl_mac.h",
    ]
  }

  if (enable_ppapi) {
    deps += [
      "//ppapi/proxy",
      "//ppapi/shared_impl",
    ]
    sources += [
      "browser_font_resource_trusted.cc",
      "browser_font_resource_trusted.h",
    ]
  }

  if (enable_vr) {
    deps += [ "//device/vr/public/cpp:features" ]
  }

  configs += [ "//content:content_implementation" ]
}

# See comment at the top of //content/BUILD.gn for how this works.
group("for_content_tests") {
  visibility = [ "//content/test/*" ]
  if (!is_component_build) {
    public_deps = [ ":child" ]
  }
}