# 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")
import("//tools/grit/grit_rule.gni")

gypi_values = exec_script(
    "//build/gypi_to_gn.py",
    [ rebase_path("../chrome_renderer.gypi") ],
    "scope",
    [ "../chrome_renderer.gypi" ])

# GYP version: chrome/chrome_resources.gyp:chrome_resources
# (generate_renderer_resources action)
grit("resources") {
  source = "resources/renderer_resources.grd"
  output_dir = "$root_gen_dir/chrome"
  output_name = "renderer_resources"
  outputs = [
    "grit/renderer_resources.h",
    "renderer_resources_100_percent.pak",
    "renderer_resources_200_percent.pak",
  ]
}

static_library("renderer") {
  sources = rebase_path(gypi_values.chrome_renderer_sources, ".", "..")

  defines = []

  deps = [
    "//base/allocator",
    "//chrome/common",
    "//chrome/common/net",
    "//chrome:resources",
    "//chrome:strings",
    "//components/autofill/content/renderer",
    "//components/cdm/renderer",
    "//components/data_reduction_proxy/common",
    "//components/password_manager/content/renderer",
    "//components/startup_metric_utils",
    "//components/translate/content/renderer",
    "//components/translate/core/common",
    "//components/translate/core/language_detection",
    "//components/visitedlink/renderer",
    "//components/web_cache/renderer",
    "//content/app/resources",
    "//content/app/strings",
    "//content/public/renderer",
    "//media/cast:net",
    "//media/cast:sender",
    "//media/cast/logging/proto",
    "//net",
    "//skia",
    "//storage/common",
    "//third_party/WebKit/public:blink",
    "//third_party/WebKit/public:resources",
    "//third_party/icu",
    "//third_party/npapi",
    "//third_party/re2",
    "//third_party/widevine/cdm:version_h",
    "//ui/surface",
    "//v8:v8",
  ]

  if (enable_nacl) {
    deps += [
      #'../components/nacl.gyp:nacl',  TODO(GYP)
      #'../components/nacl.gyp:nacl_renderer',  TODO(GYP)
    ]
  }

  if (enable_plugins) {
    sources += rebase_path(gypi_values.chrome_renderer_plugin_sources,
                           ".", "..")
    deps += [
      "//components/pdf/renderer",
      "//components/plugins/renderer",
      "//ppapi:ppapi_host",
      "//ppapi:ppapi_ipc",
      "//ppapi:ppapi_proxy",
      "//ppapi:ppapi_shared",
    ]
  }

  if (safe_browsing_mode == 1) {
    sources += rebase_path(gypi_values.chrome_renderer_safe_browsing_sources,
                           ".", "..")
    sources += rebase_path(
        gypi_values.chrome_renderer_basic_safe_browsing_sources,
        ".", "..")
    defines += [ "FULL_SAFE_BROWSING" ]
    deps += [
      "//chrome/common/safe_browsing:proto",
      "//third_party/smhasher:murmurhash3",
    ]
  }
  if (safe_browsing_mode == 2) {
    sources += rebase_path(
        gypi_values.chrome_renderer_basic_safe_browsing_sources,
        ".", "..")
    defines += [ "MOBILE_SAFE_BROWSING" ]
  }

  if (enable_extensions) {
    sources += rebase_path(gypi_values.chrome_renderer_extensions_sources,
                           ".", "..")
    deps += [
      # TODO(hclam): See crbug.com/298380 for details.
      # We should isolate the APIs needed by the renderer.
      "//chrome/common/extensions/api",
      "//extensions:extensions_resources",
      "//extensions/renderer",
    ]
  }
  if (enable_webrtc) {
    sources += rebase_path(gypi_values.chrome_renderer_webrtc_sources,
                           ".", "..")
  }
  if (enable_extensions && enable_webrtc) {
    sources += rebase_path(
        gypi_values.chrome_renderer_webrtc_extensions_sources, ".", "..")
  }
  if (enable_spellcheck) {
    sources += rebase_path(gypi_values.chrome_renderer_spellchecker_sources,
                           ".", "..")
    deps += [ "//third_party/hunspell" ]
  }

  if (printing_mode > 0) {
    deps += [ "//printing" ]
    sources += rebase_path(gypi_values.chrome_renderer_printing_sources,
                           ".", "..")
    if (printing_mode == 1) {
      sources += rebase_path(gypi_values.chrome_renderer_full_printing_sources,
                             ".", "..")
    }
  }

  if (is_mac) {
    deps += [ "//third_party/mach_override" ]
  }
  if (is_win) {
    deps += [
      #'../chrome_elf/chrome_elf.gyp:chrome_elf',  TODO(GYP)
      "//third_party/wtl",
    ]
  }
  if (!is_android) {
    sources += rebase_path(gypi_values.chrome_renderer_non_android_sources,
                           ".", "..")
  }

  # TODO(GYP)
  #       'sources': [
  #         'renderer/printing/print_web_view_helper_pdf_win.cc',
  #       ],
}

# In GYP this is part of test_support_common.
source_set("test_support") {
  testonly = true
  visibility = [ "//chrome/test:test_support" ]

  sources = [
    "chrome_mock_render_thread.cc",
    "chrome_mock_render_thread.h",
    "safe_browsing/mock_feature_extractor_clock.cc",
    "safe_browsing/mock_feature_extractor_clock.h",
    "safe_browsing/test_utils.cc",
    "safe_browsing/test_utils.h",
  ]

  deps = [
    ":renderer",
    "//content/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
  ]

  if (printing_mode == 1) {
    deps += [ "//chrome/service" ]
  }
  if (printing_mode != 0) {
    sources += [
      "printing/mock_printer.cc",
      "printing/mock_printer.h",
    ]
  }

  if (enable_webrtc) {
    sources += [
      "media/mock_webrtc_logging_message_filter.cc",
      "media/mock_webrtc_logging_message_filter.h",
    ]
  }
}