# 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/ui.gni")
import("//chrome/common/features.gni")
import("//ppapi/features/features.gni")
import("//printing/features/features.gni")
import("//services/catalog/public/tools/catalog.gni")
import("//services/service_manager/public/service_manifest.gni")
import("//tools/grit/grit_rule.gni")

# This target is for dependency tracking for the command ID header.
source_set("command_ids") {
  sources = [
    "chrome_command_ids.h",
  ]
}

# Shared by //chrome/browser and //chrome/app/mash. Not in //chrome/common
# because it isn't shared with processes like renderer, utility, etc.
source_set("shutdown_signal_handlers") {
  sources = [
    "shutdown_signal_handlers_posix.cc",
    "shutdown_signal_handlers_posix.h",
  ]
  deps = [
    "//base",
  ]
}

# On Windows, links chrome_dll.rc. On other platforms, does nothing so you can
# unconditionally depend on it.
source_set("chrome_dll_resources") {
  # This source is added unconditionally for include checking on non-Windows
  # platforms.
  sources = [
    "chrome_dll_resource.h",
  ]
  if (is_win) {
    sources += [ "chrome_dll.rc" ]
    if (enable_basic_printing) {
      # The resource compiler can only handle macro functions up to 31 chars
      # which the buildflag system produces for this. Make a define so we can
      # toggle off of the enable-basic-printing flag in the .rc file.
      defines = [ "ENABLE_BASIC_PRINTING_FOR_RC" ]
    }
    deps = [
      "//printing/features",
    ]
  }
}

if (is_android) {
  import("//build/config/android/rules.gni")
  android_generated_java_resources = [
    "java/res/values-am/generated_resources.xml",
    "java/res/values-ar/generated_resources.xml",
    "java/res/values-bg/generated_resources.xml",
    "java/res/values-ca/generated_resources.xml",
    "java/res/values-cs/generated_resources.xml",
    "java/res/values-da/generated_resources.xml",
    "java/res/values-de/generated_resources.xml",
    "java/res/values-el/generated_resources.xml",
    "java/res/values-en-rGB/generated_resources.xml",
    "java/res/values-es-rUS/generated_resources.xml",
    "java/res/values-es/generated_resources.xml",
    "java/res/values-fa/generated_resources.xml",
    "java/res/values-fi/generated_resources.xml",
    "java/res/values-fr/generated_resources.xml",
    "java/res/values-hi/generated_resources.xml",
    "java/res/values-hr/generated_resources.xml",
    "java/res/values-hu/generated_resources.xml",
    "java/res/values-in/generated_resources.xml",
    "java/res/values-it/generated_resources.xml",
    "java/res/values-iw/generated_resources.xml",
    "java/res/values-ja/generated_resources.xml",
    "java/res/values-ko/generated_resources.xml",
    "java/res/values-lt/generated_resources.xml",
    "java/res/values-lv/generated_resources.xml",
    "java/res/values-nb/generated_resources.xml",
    "java/res/values-nl/generated_resources.xml",
    "java/res/values-pl/generated_resources.xml",
    "java/res/values-pt-rBR/generated_resources.xml",
    "java/res/values-pt-rPT/generated_resources.xml",
    "java/res/values-ro/generated_resources.xml",
    "java/res/values-ru/generated_resources.xml",
    "java/res/values-sk/generated_resources.xml",
    "java/res/values-sl/generated_resources.xml",
    "java/res/values-sr/generated_resources.xml",
    "java/res/values-sv/generated_resources.xml",
    "java/res/values-sw/generated_resources.xml",
    "java/res/values-th/generated_resources.xml",
    "java/res/values-tl/generated_resources.xml",
    "java/res/values-tr/generated_resources.xml",
    "java/res/values-uk/generated_resources.xml",
    "java/res/values-vi/generated_resources.xml",
    "java/res/values-zh-rCN/generated_resources.xml",
    "java/res/values-zh-rTW/generated_resources.xml",
    "java/res/values/generated_resources.xml",
  ]
}

grit("generated_resources") {
  source = "generated_resources.grd"
  use_qualified_include = true
  defines = chrome_grit_defines
  output_dir = "$root_gen_dir/chrome"
  outputs = [
    "grit/generated_resources.h",
    "generated_resources_am.pak",
    "generated_resources_ar.pak",
    "generated_resources_bg.pak",
    "generated_resources_bn.pak",
    "generated_resources_ca.pak",
    "generated_resources_cs.pak",
    "generated_resources_da.pak",
    "generated_resources_de.pak",
    "generated_resources_el.pak",
    "generated_resources_en-GB.pak",
    "generated_resources_en-US.pak",
    "generated_resources_es.pak",
    "generated_resources_es-419.pak",
    "generated_resources_et.pak",
    "generated_resources_fa.pak",
    "generated_resources_fake-bidi.pak",
    "generated_resources_fi.pak",
    "generated_resources_fil.pak",
    "generated_resources_fr.pak",
    "generated_resources_gu.pak",
    "generated_resources_he.pak",
    "generated_resources_hi.pak",
    "generated_resources_hr.pak",
    "generated_resources_hu.pak",
    "generated_resources_id.pak",
    "generated_resources_it.pak",
    "generated_resources_ja.pak",
    "generated_resources_kn.pak",
    "generated_resources_ko.pak",
    "generated_resources_lt.pak",
    "generated_resources_lv.pak",
    "generated_resources_ml.pak",
    "generated_resources_mr.pak",
    "generated_resources_ms.pak",
    "generated_resources_nl.pak",
    "generated_resources_nb.pak",
    "generated_resources_pl.pak",
    "generated_resources_pt-BR.pak",
    "generated_resources_pt-PT.pak",
    "generated_resources_ro.pak",
    "generated_resources_ru.pak",
    "generated_resources_sk.pak",
    "generated_resources_sl.pak",
    "generated_resources_sr.pak",
    "generated_resources_sv.pak",
    "generated_resources_sw.pak",
    "generated_resources_ta.pak",
    "generated_resources_te.pak",
    "generated_resources_th.pak",
    "generated_resources_tr.pak",
    "generated_resources_uk.pak",
    "generated_resources_vi.pak",
    "generated_resources_zh-CN.pak",
    "generated_resources_zh-TW.pak",
  ]

  if (is_android) {
    outputs += android_generated_java_resources
  }
}

if (is_android) {
  java_strings_grd_prebuilt("java_strings_grd") {
    grit_output_dir = "$root_gen_dir/chrome/java/res"
    generated_files =
        rebase_path(android_generated_java_resources, "java/res", ".")
    deps = [
      ":generated_resources",
    ]
  }
}

grit("google_chrome_strings") {
  source = "google_chrome_strings.grd"
  use_qualified_include = true
  defines = chrome_grit_defines
  output_dir = "$root_gen_dir/chrome"
  outputs = [
    "grit/google_chrome_strings.h",
    "google_chrome_strings_am.pak",
    "google_chrome_strings_ar.pak",
    "google_chrome_strings_bg.pak",
    "google_chrome_strings_bn.pak",
    "google_chrome_strings_ca.pak",
    "google_chrome_strings_cs.pak",
    "google_chrome_strings_da.pak",
    "google_chrome_strings_de.pak",
    "google_chrome_strings_el.pak",
    "google_chrome_strings_en-GB.pak",
    "google_chrome_strings_en-US.pak",
    "google_chrome_strings_es.pak",
    "google_chrome_strings_es-419.pak",
    "google_chrome_strings_et.pak",
    "google_chrome_strings_fa.pak",
    "google_chrome_strings_fi.pak",
    "google_chrome_strings_fil.pak",
    "google_chrome_strings_fr.pak",
    "google_chrome_strings_gu.pak",
    "google_chrome_strings_he.pak",
    "google_chrome_strings_hi.pak",
    "google_chrome_strings_hr.pak",
    "google_chrome_strings_hu.pak",
    "google_chrome_strings_id.pak",
    "google_chrome_strings_it.pak",
    "google_chrome_strings_ja.pak",
    "google_chrome_strings_kn.pak",
    "google_chrome_strings_ko.pak",
    "google_chrome_strings_lt.pak",
    "google_chrome_strings_lv.pak",
    "google_chrome_strings_ml.pak",
    "google_chrome_strings_mr.pak",
    "google_chrome_strings_ms.pak",
    "google_chrome_strings_nl.pak",
    "google_chrome_strings_nb.pak",
    "google_chrome_strings_pl.pak",
    "google_chrome_strings_pt-BR.pak",
    "google_chrome_strings_pt-PT.pak",
    "google_chrome_strings_ro.pak",
    "google_chrome_strings_ru.pak",
    "google_chrome_strings_sk.pak",
    "google_chrome_strings_sl.pak",
    "google_chrome_strings_sr.pak",
    "google_chrome_strings_sv.pak",
    "google_chrome_strings_sw.pak",
    "google_chrome_strings_ta.pak",
    "google_chrome_strings_te.pak",
    "google_chrome_strings_th.pak",
    "google_chrome_strings_tr.pak",
    "google_chrome_strings_uk.pak",
    "google_chrome_strings_vi.pak",
    "google_chrome_strings_zh-CN.pak",
    "google_chrome_strings_zh-TW.pak",
    "google_chrome_strings_fake-bidi.pak",
  ]
}

grit("chromium_strings") {
  source = "chromium_strings.grd"
  use_qualified_include = true
  defines = chrome_grit_defines
  output_dir = "$root_gen_dir/chrome"
  outputs = [
    "grit/chromium_strings.h",
    "chromium_strings_am.pak",
    "chromium_strings_ar.pak",
    "chromium_strings_bg.pak",
    "chromium_strings_bn.pak",
    "chromium_strings_ca.pak",
    "chromium_strings_cs.pak",
    "chromium_strings_da.pak",
    "chromium_strings_de.pak",
    "chromium_strings_el.pak",
    "chromium_strings_en-GB.pak",
    "chromium_strings_en-US.pak",
    "chromium_strings_es.pak",
    "chromium_strings_es-419.pak",
    "chromium_strings_et.pak",
    "chromium_strings_fa.pak",
    "chromium_strings_fake-bidi.pak",
    "chromium_strings_fi.pak",
    "chromium_strings_fil.pak",
    "chromium_strings_fr.pak",
    "chromium_strings_gu.pak",
    "chromium_strings_he.pak",
    "chromium_strings_hi.pak",
    "chromium_strings_hr.pak",
    "chromium_strings_hu.pak",
    "chromium_strings_id.pak",
    "chromium_strings_it.pak",
    "chromium_strings_ja.pak",
    "chromium_strings_kn.pak",
    "chromium_strings_ko.pak",
    "chromium_strings_lt.pak",
    "chromium_strings_lv.pak",
    "chromium_strings_ml.pak",
    "chromium_strings_mr.pak",
    "chromium_strings_ms.pak",
    "chromium_strings_nl.pak",
    "chromium_strings_nb.pak",
    "chromium_strings_pl.pak",
    "chromium_strings_pt-BR.pak",
    "chromium_strings_pt-PT.pak",
    "chromium_strings_ro.pak",
    "chromium_strings_ru.pak",
    "chromium_strings_sk.pak",
    "chromium_strings_sl.pak",
    "chromium_strings_sr.pak",
    "chromium_strings_sv.pak",
    "chromium_strings_sw.pak",
    "chromium_strings_ta.pak",
    "chromium_strings_te.pak",
    "chromium_strings_th.pak",
    "chromium_strings_tr.pak",
    "chromium_strings_uk.pak",
    "chromium_strings_vi.pak",
    "chromium_strings_zh-CN.pak",
    "chromium_strings_zh-TW.pak",
  ]
}

static_library("test_support") {
  testonly = true
  visibility = [ "//chrome/test:test_support" ]

  sources = [
    "chrome_main_delegate.cc",
    "chrome_main_delegate.h",
  ]

  deps = [
    "//base",
    "//chrome/browser",
    "//chrome/browser/policy:path_parser",
    "//chrome/child",
    "//chrome/common",
    "//chrome/gpu",
    "//chrome/renderer",
    "//chrome/utility",
    "//components/crash/content/app",
    "//components/crash/content/app:lib",
    "//components/startup_metric_utils/browser:lib",
    "//content/public/app:both",
    "//content/public/common",
    "//pdf",
    "//ppapi/features",
    "//printing/features",
    "//ui/base",
  ]

  if (is_mac) {
    sources += [ "chrome_main_mac.mm" ]

    deps += [ "//chrome:chrome_framework" ]
  }

  if (is_win) {
    deps += [
      "//chrome:chrome_initial",
      "//chrome/install_static:install_static_util",
      "//sandbox/win:sandbox",
    ]
  }

  if (is_chromeos) {
    deps += [
      "//chrome/browser/chromeos",
      "//components/metrics/leak_detector:leak_detector",
    ]
  }

  if (enable_plugins && enable_nacl) {
    deps += [
      "//components/nacl/browser",
      "//components/nacl/renderer/plugin:nacl_trusted_plugin",
    ]
  }
}

chrome_packaged_services = [
  ":chrome_manifest",
  "//chrome/browser:preferences_manifest",
  "//services/image_decoder:manifest",
]

service_manifest("chrome_manifest") {
  source = "chrome_manifest.json"
}

service_manifest("chrome_content_packaged_services_manifest_overlay_for_mash") {
  source =
      "//chrome/browser/chrome_content_packaged_services_manifest_overlay.json"
  packaged_services = chrome_packaged_services
}

service_manifest("chrome_content_packaged_services_manifest_overlay") {
  source =
      "//chrome/browser/chrome_content_packaged_services_manifest_overlay.json"
  packaged_services = chrome_packaged_services
  if (is_chromeos) {
    packaged_services += [ "//ash/mus:manifest" ]
  }
}

service_manifest("chrome_content_browser_manifest_overlay") {
  source = "//chrome/browser/chrome_content_browser_manifest_overlay.json"
}

service_manifest("chrome_content_gpu_manifest_overlay") {
  source = "//chrome/browser/chrome_content_gpu_manifest_overlay.json"
}

service_manifest("chrome_content_plugin_manifest_overlay") {
  source = "//chrome/browser/chrome_content_plugin_manifest_overlay.json"
}

service_manifest("chrome_content_renderer_manifest_overlay") {
  source = "//chrome/browser/chrome_content_renderer_manifest_overlay.json"
}

service_manifest("chrome_content_utility_manifest_overlay") {
  source = "//chrome/browser/chrome_content_utility_manifest_overlay.json"
}

group("chrome_content_manifest_overlays") {
  deps = [
    ":chrome_content_browser_manifest_overlay",
    ":chrome_content_gpu_manifest_overlay",
    ":chrome_content_packaged_services_manifest_overlay",
    ":chrome_content_plugin_manifest_overlay",
    ":chrome_content_renderer_manifest_overlay",
    ":chrome_content_utility_manifest_overlay",
  ]

  if (enable_package_mash_services) {
    deps += [ ":chrome_content_packaged_services_manifest_overlay_for_mash" ]
  }
}

if (use_aura) {
  # NOTE: These rules generate compiled versions of the content service
  # manifests with Chrome's overlays applied. These are only used at run-time,
  # and only when running Chrome inside the Mash environment. In production
  # Chrome, the content manifests and Chrome's overlays are baked into browser
  # resources and merged at runtime.

  service_manifest("chrome_content_packaged_services_manifest") {
    source_manifest = "//content/public/app:packaged_services_manifest"
    overlays = [ ":chrome_content_packaged_services_manifest_overlay" ]
  }

  service_manifest("chrome_content_packaged_services_manifest_for_mash") {
    source_manifest = "//content/public/app:packaged_services_manifest"
    overlays = [ ":chrome_content_packaged_services_manifest_overlay_for_mash" ]
  }

  service_manifest("chrome_content_browser_manifest") {
    source_manifest = "//content/public/app:browser_manifest"
    overlays = [ ":chrome_content_browser_manifest_overlay" ]
  }

  service_manifest("chrome_content_gpu_manifest") {
    source_manifest = "//content/public/app:gpu_manifest"
    overlays = [ ":chrome_content_gpu_manifest_overlay" ]
  }

  service_manifest("chrome_content_plugin_manifest") {
    source_manifest = "//content/public/app:plugin_manifest"
    overlays = [ ":chrome_content_plugin_manifest_overlay" ]
  }

  service_manifest("chrome_content_renderer_manifest") {
    source_manifest = "//content/public/app:renderer_manifest"
    overlays = [ ":chrome_content_renderer_manifest_overlay" ]
  }

  service_manifest("chrome_content_utility_manifest") {
    source_manifest = "//content/public/app:utility_manifest"
    overlays = [ ":chrome_content_utility_manifest_overlay" ]
  }

  group("service_manifests") {
    deps = [
      ":chrome_content_browser_manifest",
      ":chrome_content_gpu_manifest",
      ":chrome_content_plugin_manifest",
      ":chrome_content_renderer_manifest",
      ":chrome_content_utility_manifest",
    ]

    if (enable_package_mash_services) {
      deps += [ ":chrome_content_packaged_services_manifest_for_mash" ]
    }
  }

  chrome_embedded_services = [
    ":chrome_content_browser_manifest",
    ":chrome_content_gpu_manifest",
    ":chrome_content_plugin_manifest",
    ":chrome_content_renderer_manifest",
    ":chrome_content_utility_manifest",
  ]

  if (enable_package_mash_services) {
    catalog("catalog_for_mash") {
      embedded_services =
          chrome_embedded_services +
          [ ":chrome_content_packaged_services_manifest_for_mash" ]
    }
  }

  catalog("catalog") {
    embedded_services = chrome_embedded_services +
                        [ ":chrome_content_packaged_services_manifest" ]
  }
}
