# 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/python.gni")
import("//third_party/blink/renderer/bindings/bindings.gni")
import("//third_party/blink/renderer/bindings/generated_in_modules.gni")
import("//third_party/blink/renderer/bindings/modules/v8/generated.gni")
import("//third_party/blink/renderer/bindings/scripts/scripts.gni")
import("//third_party/blink/renderer/modules/modules.gni")
import("//third_party/blink/renderer/modules/modules_idl_files.gni")

visibility = [ "//third_party/blink/renderer/*" ]

blink_modules_sources("v8") {
  visibility = []
  visibility = [ "//third_party/blink/renderer/modules" ]

  sources = generated_enumeration_sources_in_modules
  if (use_blink_v8_binding_new_idl_callback_function) {
    sources += generated_callback_function_sources_in_modules
  }
  if (use_blink_v8_binding_new_idl_callback_interface) {
    sources += generated_callback_interface_sources_in_modules
  }
  if (use_blink_v8_binding_new_idl_dictionary) {
    sources += generated_dictionary_sources_in_modules
  }
  if (use_blink_v8_binding_new_idl_interface) {
    sources += generated_interface_sources_in_modules +
               generated_namespace_sources_in_modules
  }

  deps = [
    ":generate_mojo_bindings",
    ":generated",
    "//third_party/blink/renderer/platform",
    "//v8",
  ]
}

source_set("testing") {
  testonly = true

  visibility = []
  visibility = [ "//third_party/blink/renderer/modules/*" ]

  configs += [
    "//third_party/blink/renderer:config",
    "//third_party/blink/renderer:inside_blink",
  ]

  sources = []
  if (use_blink_v8_binding_new_idl_interface) {
    sources += generated_interface_sources_for_testing_in_modules
  } else {
    sources += [
      "$bindings_modules_v8_output_dir/v8_internals_partial.cc",
      "$bindings_modules_v8_output_dir/v8_internals_partial.h",
    ]
  }

  deps = [
    ":generated",
    "//third_party/blink/renderer/core",
    "//third_party/blink/renderer/modules",
    "//third_party/blink/renderer/platform",
    "//v8",
  ]
  if (!use_blink_v8_binding_new_idl_interface) {
    deps += [ ":generate_bindings_modules_v8_partial_interfaces_for_testing" ]
  }
}

group("generated") {
  visibility = []
  visibility = [
    "//third_party/blink/renderer/bindings/modules/v8/*",
    "//third_party/blink/renderer/modules/*",
  ]

  public_deps = [
    ":bindings_modules_v8_generated",
    "//third_party/blink/renderer/bindings:generate_bindings_all",
  ]
}

group("bindings_modules_v8_generated") {
  public_deps = [
    ":bindings_modules_impl_generated",
    ":bindings_modules_v8_generated_init_partial",
    ":generate_bindings_modules_v8_interfaces",
    ":generate_bindings_modules_v8_partial_interfaces",
    ":generate_bindings_modules_v8_partial_interfaces_for_testing",
    ":generate_v8_context_snapshot_external_references",
    "//third_party/blink/renderer/bindings/core/v8:bindings_core_v8_generated",
  ]
}

if (!use_blink_v8_binding_new_idl_callback_interface ||
    !use_blink_v8_binding_new_idl_dictionary ||
    !use_blink_v8_binding_new_idl_interface) {
  idl_compiler("generate_bindings_modules_v8_interfaces") {
    sources = []
    if (!use_blink_v8_binding_new_idl_callback_interface) {
      sources += filter_include(modules_idl_files, [ "*_callback.idl" ])
    }
    if (!use_blink_v8_binding_new_idl_dictionary) {
      sources += modules_dictionary_idl_files
    }
    if (!use_blink_v8_binding_new_idl_interface) {
      sources += filter_exclude(modules_idl_files, [ "*_callback.idl" ])
    }
    output_dir = bindings_modules_v8_output_dir
    output_name_suffix = ""
    target_component = "modules"
  }
} else {
  group("generate_bindings_modules_v8_interfaces") {
  }
}

idl_impl("bindings_modules_impl_generated") {
  if (use_blink_v8_binding_new_idl_dictionary) {
    dict_idls = []
  } else {
    dict_idls = modules_dictionary_idl_files
  }
  non_dict_outputs = bindings_modules_generated_union_type_files
  if (!use_blink_v8_binding_new_idl_callback_function) {
    non_dict_outputs += generated_modules_callback_function_files
  }
  non_dict_output_dir = bindings_modules_v8_output_dir
  target_component = "modules"
}

if (use_blink_v8_binding_new_idl_interface) {
  group("generate_bindings_modules_v8_partial_interfaces") {
  }
} else {
  idl_compiler("generate_bindings_modules_v8_partial_interfaces") {
    sources = core_interface_idl_files_modules_dependent
    output_dir = bindings_modules_v8_output_dir
    output_name_suffix = "_partial"
    target_component = "modules"
  }
}

if (use_blink_v8_binding_new_idl_interface) {
  group("generate_bindings_modules_v8_partial_interfaces_for_testing") {
  }
} else {
  idl_compiler("generate_bindings_modules_v8_partial_interfaces_for_testing") {
    sources = webcore_testing_idl_with_modules_dependency_files
    output_dir = bindings_modules_v8_output_dir
    output_name_suffix = "_partial"
    target_component = "modules"
  }
}

if (use_blink_v8_binding_new_idl_interface) {
  group("bindings_modules_origin_trial_features") {
  }
} else {
  generate_origin_trial_features("bindings_modules_origin_trial_features") {
    sources = modules_idl_files + modules_generated_dependency_idl_files +
              modules_dependency_idl_files
    component = "modules"
    output_dir = bindings_modules_output_dir + "/v8"
    deps = [
      "//third_party/blink/renderer/bindings:global_constructors_idls",
      "//third_party/blink/renderer/bindings/modules:interfaces_info_modules",
      "//third_party/blink/renderer/bindings/modules:modules_global_constructors_idls",
    ]
  }
}

if (use_blink_v8_binding_new_idl_interface) {
  group("bindings_modules_v8_generated_init_partial") {
  }
} else {
  action("bindings_modules_v8_generated_init_partial") {
    script = "$bindings_scripts_dir/generate_init_partial_interfaces.py"

    inputs = [ "$bindings_output_dir/interfaces_info.pickle" ]
    outputs = [ bindings_modules_generated_init_partial_interfaces_file ]

    # Put the IDL file list in a response file to avoid command-line limits.
    response_file_contents =
        rebase_path(core_interface_idl_files_modules_dependent, root_build_dir)

    args = [
      "--idl-files-list",
      "{{response_file_name}}",
      "--output",
      rebase_path(bindings_modules_generated_init_partial_interfaces_file,
                  root_build_dir),
    ]

    deps = [ "//third_party/blink/renderer/bindings:interfaces_info" ]
  }
}

# Note that this intentionally depends on the generator target of the mojom
# target instead of the mojom target itself directly. This is to ensure that the
# dependencies are header-only and don't link against any bindings code.
group("generate_mojo_bindings") {
  visibility = []  # Allow re-assignment of list.
  visibility = [ ":*" ]

  deps = [
    "//device/gamepad/public/mojom:mojom_blink_headers",
    "//device/vr/public/mojom:vr_service_blink_headers",
    "//media/capture/mojom:image_capture_blink_headers",
    "//media/midi:mojo_blink_headers",
    "//services/device/public/mojom:generic_sensor_headers",
    "//services/device/public/mojom:mojom_blink_headers",
    "//services/device/public/mojom:usb_blink_headers",
    "//services/shape_detection/public/mojom:mojom_blink_headers",

    # IndexedDB Mojom Blink headers are provided by the mojom_modules
    # target.
    "//third_party/blink/public/mojom:mojom_modules_blink_headers",
  ]
}

blink_modules_sources("bindings_modules_impl") {
  # ":generate_bindings_modules_v8_partial_interfaces_for_testing" is not
  # included here.
  sources = get_target_outputs(":bindings_modules_impl_generated")

  if (!use_blink_v8_binding_new_idl_callback_interface ||
      !use_blink_v8_binding_new_idl_dictionary ||
      !use_blink_v8_binding_new_idl_interface) {
    sources += get_target_outputs(":generate_bindings_modules_v8_interfaces")
  }
  if (!use_blink_v8_binding_new_idl_interface) {
    sources +=
        get_target_outputs(":generate_bindings_modules_v8_partial_interfaces") +
        get_target_outputs(":bindings_modules_v8_generated_init_partial") +
        get_target_outputs(":bindings_modules_origin_trial_features")
  }

  deps = [
    ":bindings_modules_origin_trial_features",
    ":bindings_modules_v8_generated",
    ":generate_mojo_bindings",
    ":generated",
    "//third_party/blink/renderer/modules/mediarecorder:buildflags",
    "//third_party/dawn/src/dawn:dawn_headers",
  ]
}

action("generate_v8_context_snapshot_external_references") {
  script = "$bindings_scripts_dir/generate_v8_context_snapshot_external_references.py"
  idl_files =
      core_interface_idl_files_core_only +
      core_interface_idl_files_modules_dependent + modules_definition_idl_files
  output = bindings_generated_v8_context_snapshot_external_references_file

  inputs = idl_files + [ script ]
  outputs = [ output ]

  response_file_contents = rebase_path(idl_files, root_build_dir)
  args = [
    "--cache-dir",
    rebase_path(bindings_scripts_output_dir, root_build_dir),
    "--output",
    rebase_path(output, root_build_dir),
    "--idl-files-list",
    "{{response_file_name}}",
    "--info-dir",
    rebase_path("$bindings_output_dir", root_build_dir),
    "--target-component",
    "modules",
  ]

  deps = [
    "//third_party/blink/renderer/bindings:interfaces_info",
    "//third_party/blink/renderer/bindings/scripts:cached_jinja_templates",
    "//third_party/blink/renderer/bindings/scripts:cached_lex_yacc_tables",
  ]
}
