# Copyright 2015 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("//components/nacl/features.gni")

assert(enable_nacl)

static_library("renderer") {
  sources = [
    "file_downloader.cc",
    "file_downloader.h",
    "histogram.cc",
    "histogram.h",
    "json_manifest.cc",
    "json_manifest.h",
    "manifest_downloader.cc",
    "manifest_downloader.h",
    "manifest_service_channel.cc",
    "manifest_service_channel.h",
    "nacl_helper.cc",
    "nacl_helper.h",
    "nexe_load_manager.cc",
    "nexe_load_manager.h",
    "platform_info.cc",
    "platform_info.h",
    "pnacl_translation_resource_host.cc",
    "pnacl_translation_resource_host.h",
    "ppb_nacl_private_impl.cc",
    "progress_event.cc",
    "progress_event.h",
    "trusted_plugin_channel.cc",
    "trusted_plugin_channel.h",
  ]

  deps = [
    "//base",
    "//components/nacl/common",
    "//components/nacl/common:nacl_error_code",
    "//components/nacl/renderer/plugin:nacl_trusted_plugin",
    "//content/public/common",
    "//content/public/renderer",
    "//ipc",
    "//net",
    "//ppapi/c",
    "//ppapi/proxy:ipc",
    "//ppapi/shared_impl",
    "//third_party/blink/public:blink",
    "//v8",
  ]
}
