# 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("//build/config/features.gni")

# This is the NPAPI plugin process. It isn't used on Linux.
if (enable_plugins && !is_linux) {
  source_set("plugin") {
    # Only the public target should depend on this. All other targets (even
    # internal content ones) should depend on the public one.
    visibility = [ "//content/public/plugin:plugin_sources" ]

    sources = [
      "plugin_channel.cc",
      "plugin_channel.h",
      "plugin_interpose_util_mac.mm",
      "plugin_interpose_util_mac.h",
      "plugin_main.cc",
      "plugin_main_mac.mm",
      "plugin_thread.cc",
      "plugin_thread.h",
      "webplugin_accelerated_surface_proxy_mac.cc",
      "webplugin_accelerated_surface_proxy_mac.h",
      "webplugin_delegate_stub.cc",
      "webplugin_delegate_stub.h",
      "webplugin_proxy.cc",
      "webplugin_proxy.h",
    ]

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

    deps = [
      "//content:export",
      "//mojo/public/interfaces/application",
      "//skia",
      "//third_party/npapi",
      "//third_party/WebKit/public:blink",
    ]
  }
} else {
  # This way it can be unconditionally depended on.
  group("plugin") {
  }
}
