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

group("ppapi_plugin") {
  visibility = [ "//content/*" ]  # This is an internal content API.

  if (is_component_build) {
    public_deps = [
      "//content",
    ]
  } else {
    public_deps = [
      ":ppapi_plugin_sources",
    ]
  }
}

source_set("ppapi_plugin_sources") {
  # Depend on via ":ppapi_plugin above.
  visibility = [
    ":ppapi_plugin",
    "//content",  # For the component build.
    "//gin",
  ]

  sources = [
    "broker_process_dispatcher.cc",
    "broker_process_dispatcher.h",
    "plugin_process_dispatcher.cc",
    "plugin_process_dispatcher.h",
    "ppapi_blink_platform_impl.cc",
    "ppapi_blink_platform_impl.h",
    "ppapi_broker_main.cc",
    "ppapi_plugin_main.cc",
    "ppapi_thread.cc",
    "ppapi_thread.h",
  ]

  configs += [
    "//content:content_implementation",
    "//v8:external_startup_data",
  ]

  deps = [
    "//base",
    "//content:export",
    "//content/public/child:child_sources",
    "//content/public/common:common_sources",
    "//mojo/shell/public/interfaces",
    "//ppapi/proxy:ipc",
    "//skia",
    "//third_party/WebKit/public:blink",
    "//third_party/icu",
    "//ui/base",
    "//ui/gfx",
    "//ui/gfx/geometry",
  ]
}
