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

import("//media/media_options.gni")

source_set("utility") {
  # Only the public target should depend on this. All other targets (even
  # internal content ones other than test) should depend on the public one.
  visibility = [
    ":for_content_tests",
    "//content/app:*",
    "//content/public/utility:utility_sources",
  ]

  sources = [
    "in_process_utility_thread.cc",
    "in_process_utility_thread.h",
    "utility_blink_platform_impl.cc",
    "utility_blink_platform_impl.h",
    "utility_main.cc",
    "utility_service_factory.cc",
    "utility_service_factory.h",
    "utility_thread_impl.cc",
    "utility_thread_impl.h",
  ]

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

  deps = [
    "//base",
    "//content:export",
    "//content/child",
    "//content/network:network_sources",
    "//content/public/child:child_sources",
    "//content/public/common:common_sources",
    "//mojo/common",
    "//mojo/public/cpp/bindings",
    "//ppapi/features",
    "//sandbox",
    "//services/data_decoder:lib",
    "//services/data_decoder/public/cpp",
    "//services/service_manager",
    "//services/service_manager/public/cpp",
    "//services/service_manager/public/interfaces",
    "//services/shape_detection:lib",
    "//services/shape_detection/public/interfaces",
    "//third_party/WebKit/public:blink_headers",
    "//third_party/WebKit/public:mojo_bindings",
    "//url",
  ]

  if (mojo_media_host == "utility") {
    deps += [ "//media/mojo/services" ]
  }
}

# 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 = [
      ":utility",
    ]
  }
}
