# 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"
  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"
  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"
  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/app:shutdown_signal_handlers",
    "//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",
    "//content/public/common:service_names",
    "//pdf",
    "//ppapi/features",
    "//printing/features",
    "//services/service_manager/embedder",
    "//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",
    ]
  }

  if (enable_package_mash_services) {
    deps += [
      "//chrome/app/mash:chrome_mash_catalog",
      "//chrome/app/mash:embedded_services",
      "//mash/common",
      "//mash/quick_launch/public/interfaces:constants",
      "//services/ui/public/interfaces:constants",
    ]

    if (is_chromeos) {
      deps += [ "//chrome/app/mash:chrome_mus_catalog" ]
    }
  }
}

chrome_packaged_services = [ ":chrome_manifest" ]

if (enable_basic_printing || enable_print_preview) {
  chrome_packaged_services +=
      [ "//components/printing/service:pdf_compositor_manifest" ]
}

if (is_chromeos) {
  chrome_packaged_services +=
      [ "//chrome/browser:preferences_forwarder_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"
  packaged_services = [
    "//services/identity:manifest",
    "//services/preferences:manifest",
  ]
}

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",
  ]

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

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